<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:756633011;
        mso-list-type:hybrid;
        mso-list-template-ids:1100087954 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Doug/All,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">I’d like to build an indoor robot using two standard drive wheels and two non-driving Omni Wheels to improve turning radius.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Are there any similar rules-of-thumb when using Omni Wheels?<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">A few more details for the curious:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">       
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Like to move precisely from one programmed point to another (+/- 6-inches within a house)<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">       
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Ability to take control via remote control if need be<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:Symbol;color:#1F497D"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman"">       
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Carry a payload of 20-lbs plus batteries to last 4 hours<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thank You & Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">David</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> DPRGlist <dprglist-bounces@lists.dprg.org>
<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 <murray18@altheim.com><br>
<b>Cc:</b> DPRG <dprglist@lists.dprg.org><br>
<b>Subject:</b> [EXTERNAL] Re: [Dprglist] Odometry on Mecanum-wheeled robots?<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><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><o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">Murray, <o:p></o:p></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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Regards,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Doug P.<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></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">dprglist@lists.dprg.org</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;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><o:p></o:p></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.
</body>
</html>