[Dprglist] Odometry on Mecanum-wheeled robots?
secretary at dprg.org
secretary at dprg.org
Wed Apr 15 07:17:44 PDT 2020
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> 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/
>
> 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/ ===
> ===
> = =
> ===
> 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
> http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dprg.org/pipermail/dprglist-dprg.org/attachments/20200415/515e30be/attachment-0001.html>
More information about the DPRGlist
mailing list