[Dprglist] Odometry on Mecanum-wheeled robots?
David Steele (Carr)
David.Steele at Halliburton.com
Wed Apr 15 10:43:07 PDT 2020
Doug/All,
I’d like to build an indoor robot using two standard drive wheels and two non-driving Omni Wheels to improve turning radius.
Are there any similar rules-of-thumb when using Omni Wheels?
A few more details for the curious:
· Like to move precisely from one programmed point to another (+/- 6-inches within a house)
· Ability to take control via remote control if need be
· Carry a payload of 20-lbs plus batteries to last 4 hours
Thank You & Regards,
David
From: DPRGlist <dprglist-bounces at lists.dprg.org> On Behalf Of secretary--- via DPRGlist
Sent: Wednesday, April 15, 2020 9:18 AM
To: Murray Altheim <murray18 at altheim.com>
Cc: DPRG <dprglist at lists.dprg.org>
Subject: [EXTERNAL] Re: [Dprglist] Odometry on Mecanum-wheeled robots?
External Sender: Use caution with links/attachments.
Murray,
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.
Regards,
Doug P.
On Wed, Apr 15, 2020 at 12:58 AM Murray Altheim via DPRGlist <dprglist at lists.dprg.org<mailto:dprglist at lists.dprg.org>> wrote:
I'm going to contradict myself. Regarding orientation sensors, I dug
around a bit and found:
https://blog.digilentinc.com/how-to-convert-magnetometer-data-into-compass-heading/<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=>
and am quite pleased to be getting a compass heading output from the
magnetometer of an Adafruit LSM9DS1. I'm no mean Python programmer but
in the interest of sharing, here goes:
------------------------------------------------------------
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# reads an x,y,z value from the LSM9DS1 magnetometer and
# displays a heading in degrees.
import time, board, busio, math, adafruit_lsm9ds1
LSB = 0.48828125 #mG
def convert_to_direction(mag_x, mag_y, mag_z):
xGaussData = mag_x * LSB
yGaussData = mag_y * LSB
if xGaussData == 0.0:
return 90.0 if yGaussData < 0.0 else 0.0
else:
direction = math.atan( yGaussData / xGaussData ) * ( 180.0 / math.pi )
if direction > 360.0:
return direction - 360.0
elif direction < 0.0:
return direction + 360.0
else:
return direction
try:
i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_lsm9ds1.LSM9DS1_I2C(i2c)
while True:
mag_x, mag_y, mag_z = sensor.magnetic
direction = convert_to_direction(mag_x, mag_y, mag_z)
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))
time.sleep(0.5)
except KeyboardInterrupt:
print('\nlsm9ds1 : Ctrl-C caught: keyboard interrupt.')
#EOF
------------------------------------------------------------
with output like:
lsm9ds1 : direction: 31.17°; magnetometer(G): (0.349, 0.211, 0.077)
lsm9ds1 : direction: 21.02°; magnetometer(G): (0.413, 0.159, 0.095)
lsm9ds1 : direction: 18.88°; magnetometer(G): (0.438, 0.150, 0.078)
lsm9ds1 : direction: 8.52°; magnetometer(G): (0.356, 0.053, 0.105)
lsm9ds1 : direction: 0.81°; magnetometer(G): (0.285, 0.004, 0.130)
lsm9ds1 : direction: 2.04°; magnetometer(G): (0.248, 0.009, 0.114)
lsm9ds1 : direction: 4.20°; magnetometer(G): (0.242, 0.018, 0.128)
lsm9ds1 : direction: 6.50°; magnetometer(G): (0.232, 0.026, 0.128)
lsm9ds1 : direction: 3.05°; magnetometer(G): (0.303, 0.016, 0.121)
lsm9ds1 : direction: 346.79°; magnetometer(G): (0.308, -0.072, 0.258)
On 15/04/20 3:50 PM, Murray Altheim via DPRGlist wrote:
> [...] so the idea of taking a more "raw" output from a magnetometer and having to
> process that for a value vs. an already-complete orientation value in radians or
> degrees from the BNO055, well, that's pretty compelling. I'd both have to spend
> a lot of time learning and debugging versus just getting a compass heading output
> from the BNO055. While it might be somebody's cup of tea to work out that kind
> of detail, it's not like there's not enough challenges in building a robot. And
> time, hmm. Time.
...........................................................................
Murray Altheim <murray18 at altheim dot com> = = ===
http://www.altheim.com/murray/<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=> === ===
= = ===
In the evening
The rice leaves in the garden
Rustle in the autumn wind
That blows through my reed hut.
-- Minamoto no Tsunenobu
_______________________________________________
DPRGlist mailing list
DPRGlist at lists.dprg.org<mailto:DPRGlist at lists.dprg.org>
http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org<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=>
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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dprg.org/pipermail/dprglist-dprg.org/attachments/20200415/a63826c0/attachment-0001.html>
More information about the DPRGlist
mailing list