<div dir="ltr">David,<div>    The best turn radius possible is with a 2 wheeled differential driven robot with a caster. If the caster and the 2 drive wheels are all on a circle centered between the two motors, the robot can rotate in place (see David Anderson's presentation <a href="https://www.youtube.com/watch?v=8CXReb7f0Eo">https://www.youtube.com/watch?v=8CXReb7f0Eo</a>). This is why you see so many round differential drive robots (ex. Roomba). They can turn in place and nothing sticks out to get caught on anything. Twenty pounds of battery is a bucket load of battery! What is the size of the platform you are shooting for? Do you plan to have the robot wandering constantly, or will it be in standby mode until triggered by a sensor. If it is in standby part of the time you might be able to lower the battery weight. You might also consider having the robot visit a recharging station periodically (again like Roomba or Neato).</div><div><br></div><div>   To maintain the accuracy of position that you want (i.e., 6 inches after 4 hours of roaming), you will need to use something like SLAM or the alternatives I mention later. SLAM is pretty difficult for most hobbyists. ROS, robot operating system (<a href="https://www.ros.org/">https://www.ros.org/</a>), has modules for most popular LiDAR systems, which may help. However, ROS has its complexities also. Alternative methods would be to either place recognition tags around the house, so the robot could re-establish is location, or have the robot follow a line course using UV ink to draw the line or use IR beam stations around the house for the robot to navigate between, Finally, an AI approach similar to Donkey Car trained on the course that you want to take around the house would also work. You can learn about the Donkey Car project at <a href="https://www.donkeycar.com/">https://www.donkeycar.com/</a>. Basically, you need the robot to be able to re-orientate itself periodically, 4 hours is a long time. </div><div><br></div><div>   Remote control of a robot is fairly easy, with Bluetooth and wireless modules available with good software and web sources.</div><div><br></div><div>   I do not use omni wheels, there are more knowledgeable DPRG members on the list that have way more experience with them than me. Hopefully they will chime in. </div><div><br></div><div>   Hope this of some help. Sorry for wandering around so much. </div><div>Regards,</div><div>Doug P.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 15, 2020 at 12:43 PM David Steele (Carr) <<a href="mailto:David.Steele@halliburton.com">David.Steele@halliburton.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div lang="EN-US">
<div class="gmail-m_-4429014415662857276WordSection1">
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Doug/All,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">I’d like to build an indoor robot using two standard drive wheels and two non-driving Omni Wheels to improve turning radius.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Are there any similar rules-of-thumb when using Omni Wheels?<u></u><u></u></span></b></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">A few more details for the curious:<u></u><u></u></span></p>
<p class="gmail-m_-4429014415662857276MsoListParagraph"><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Like to move precisely from one programmed point to another (+/- 6-inches within a house)<u></u><u></u></span></p>
<p class="gmail-m_-4429014415662857276MsoListParagraph"><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Ability to take control via remote control if need be<u></u><u></u></span></p>
<p class="gmail-m_-4429014415662857276MsoListParagraph"><u></u><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font:7pt "Times New Roman"">       
</span></span></span><u></u><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Carry a payload of 20-lbs plus batteries to last 4 hours<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Thank You & Regards,<u></u><u></u></span></p>
<p class="MsoNormal"><span style="color:rgb(31,73,125)">David</span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></p>
<div>
<div style="border-right:none;border-bottom:none;border-left:none;border-top:1pt solid rgb(225,225,225);padding:3pt 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11pt;font-family:Calibri,sans-serif">From:</span></b><span style="font-size:11pt;font-family:Calibri,sans-serif"> DPRGlist <<a href="mailto:dprglist-bounces@lists.dprg.org" target="_blank">dprglist-bounces@lists.dprg.org</a>>
<b>On Behalf Of </b>secretary--- via DPRGlist<br>
<b>Sent:</b> Wednesday, April 15, 2020 9:18 AM<br>
<b>To:</b> Murray Altheim <<a href="mailto:murray18@altheim.com" target="_blank">murray18@altheim.com</a>><br>
<b>Cc:</b> DPRG <<a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a>><br>
<b>Subject:</b> [EXTERNAL] Re: [Dprglist] Odometry on Mecanum-wheeled robots?<u></u><u></u></span></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-bottom:12pt"><strong><span style="font-size:10.5pt;font-family:Verdana,sans-serif;background:yellow">External Sender: Use caution with links/attachments.</span></strong><b><span style="font-size:10.5pt;font-family:Verdana,sans-serif;background:yellow"><br>
<br>
</span></b><u></u><u></u></p>
<div>
<div>
<p class="MsoNormal">Murray, <u></u><u></u></p>
<div>
<p class="MsoNormal">    The rule of thumb with casters is that they can navigate bumps up to a maximum size of the radius of the wheel. The little ball casters usually have a really small radius.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Regards,<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Doug P.<u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<p class="MsoNormal">On Wed, Apr 15, 2020 at 12:58 AM Murray Altheim via DPRGlist <<a href="mailto:dprglist@lists.dprg.org" target="_blank">dprglist@lists.dprg.org</a>> wrote:<u></u><u></u></p>
</div>
<blockquote style="border-top:none;border-right:none;border-bottom:none;border-left:1pt solid rgb(204,204,204);padding:0in 0in 0in 6pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">I'm going to contradict myself. Regarding orientation sensors, I dug<br>
around a bit and found:<br>
<br>
    <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__blog.digilentinc.com_how-2Dto-2Dconvert-2Dmagnetometer-2Ddata-2Dinto-2Dcompass-2Dheading_&d=DwMFaQ&c=PskvixtEUDK7wuWU-tIg6oKuGYBRbrMXk2FZvF0UfTo&r=bmd3-eHvz8rWPqqbuyNFhtJ8IOIwEIOa0NDwscNoELg&m=OoiE4WcxCgmwH7PdKp0iX-e_kRb1RaVt3OuAB6yiRl4&s=9k6ePW5XS9SqXrEMSHSxUFnAJN4-ZeoZBsgZZE4jiKE&e=" target="_blank">
https://blog.digilentinc.com/how-to-convert-magnetometer-data-into-compass-heading/</a><br>
<br>
and am quite pleased to be getting a compass heading output from the<br>
magnetometer of an Adafruit LSM9DS1. I'm no mean Python programmer but<br>
in the interest of sharing, here goes:<br>
<br>
------------------------------------------------------------<br>
#!/usr/bin/env python3<br>
# -*- coding: utf-8 -*-<br>
#<br>
# reads an x,y,z value from the LSM9DS1 magnetometer and<br>
# displays a heading in degrees.<br>
<br>
import time, board, busio, math, adafruit_lsm9ds1<br>
<br>
LSB = 0.48828125 #mG<br>
<br>
def convert_to_direction(mag_x, mag_y, mag_z):<br>
     xGaussData = mag_x * LSB<br>
     yGaussData = mag_y * LSB<br>
     if xGaussData == 0.0:<br>
         return 90.0 if yGaussData < 0.0 else 0.0<br>
     else:<br>
         direction = math.atan( yGaussData / xGaussData ) * ( 180.0 / math.pi )<br>
     if direction > 360.0:<br>
         return direction - 360.0<br>
     elif direction < 0.0:<br>
         return direction + 360.0<br>
     else:<br>
         return direction<br>
<br>
try:<br>
     i2c = busio.I2C(board.SCL, board.SDA)<br>
     sensor = adafruit_lsm9ds1.LSM9DS1_I2C(i2c)<br>
     while True:<br>
         mag_x, mag_y, mag_z = sensor.magnetic<br>
         direction = convert_to_direction(mag_x, mag_y, mag_z)<br>
         print('lsm9ds1   : direction: {0:0.2f}°;\tmagnetometer(G): ({1:0.3f}, {2:0.3f}, {3:0.3f})'.format(direction, mag_x, mag_y, mag_z))<br>
         time.sleep(0.5)<br>
<br>
except KeyboardInterrupt:<br>
         print('\nlsm9ds1   : Ctrl-C caught: keyboard interrupt.')<br>
<br>
#EOF<br>
------------------------------------------------------------<br>
<br>
with output like:<br>
<br>
lsm9ds1   : direction: 31.17°;  magnetometer(G): (0.349, 0.211, 0.077)<br>
lsm9ds1   : direction: 21.02°;  magnetometer(G): (0.413, 0.159, 0.095)<br>
lsm9ds1   : direction: 18.88°;  magnetometer(G): (0.438, 0.150, 0.078)<br>
lsm9ds1   : direction: 8.52°;   magnetometer(G): (0.356, 0.053, 0.105)<br>
lsm9ds1   : direction: 0.81°;   magnetometer(G): (0.285, 0.004, 0.130)<br>
lsm9ds1   : direction: 2.04°;   magnetometer(G): (0.248, 0.009, 0.114)<br>
lsm9ds1   : direction: 4.20°;   magnetometer(G): (0.242, 0.018, 0.128)<br>
lsm9ds1   : direction: 6.50°;   magnetometer(G): (0.232, 0.026, 0.128)<br>
lsm9ds1   : direction: 3.05°;   magnetometer(G): (0.303, 0.016, 0.121)<br>
lsm9ds1   : direction: 346.79°; magnetometer(G): (0.308, -0.072, 0.258)<br>
<br>
On 15/04/20 3:50 PM, Murray Altheim via DPRGlist wrote:<br>
> [...] so the idea of taking a more "raw" output from a magnetometer and having to<br>
> process that for a value vs. an already-complete orientation value in radians or<br>
> degrees from the BNO055, well, that's pretty compelling. I'd both have to spend<br>
> a lot of time learning and debugging versus just getting a compass heading output<br>
> from the BNO055. While it might be somebody's cup of tea to work out that kind<br>
> of detail, it's not like there's not enough challenges in building a robot. And<br>
> time, hmm. Time.<br>
...........................................................................<br>
Murray Altheim <murray18 at altheim dot com>                       = =  ===<br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.altheim.com_murray_&d=DwMFaQ&c=PskvixtEUDK7wuWU-tIg6oKuGYBRbrMXk2FZvF0UfTo&r=bmd3-eHvz8rWPqqbuyNFhtJ8IOIwEIOa0NDwscNoELg&m=OoiE4WcxCgmwH7PdKp0iX-e_kRb1RaVt3OuAB6yiRl4&s=KzKpqKPjn73LZg46OUudZrUsv4pOgV-x27rdSPcp--U&e=" target="_blank">http://www.altheim.com/murray/</a> 
                                    ===  ===<br>
                                                                    = =  ===<br>
     In the evening<br>
     The rice leaves in the garden<br>
     Rustle in the autumn wind<br>
     That blows through my reed hut.<br>
            -- Minamoto no Tsunenobu<br>
<br>
_______________________________________________<br>
DPRGlist mailing list<br>
<a href="mailto:DPRGlist@lists.dprg.org" target="_blank">DPRGlist@lists.dprg.org</a><br>
<a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.dprg.org_listinfo.cgi_dprglist-2Ddprg.org&d=DwMFaQ&c=PskvixtEUDK7wuWU-tIg6oKuGYBRbrMXk2FZvF0UfTo&r=bmd3-eHvz8rWPqqbuyNFhtJ8IOIwEIOa0NDwscNoELg&m=OoiE4WcxCgmwH7PdKp0iX-e_kRb1RaVt3OuAB6yiRl4&s=o0FhP4VCkHehYWTgkwCvhSAY22byH5LGWlVUSxYKP6Q&e=" target="_blank">http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org</a><u></u><u></u></p>
</blockquote>
</div>
</div>
</div>
This e-mail, including any attached files, may contain confidential and privileged information for the sole use of the intended recipient. Any review, use, distribution, or disclosure by others is strictly prohibited. If you are not the intended recipient (or
 authorized to receive information for the intended recipient), please contact the sender by reply e-mail and delete all copies of this message.
</div>

</blockquote></div>