[Dprglist] Odometry on Mecanum-wheeled robots?

secretary at dprg.org secretary at dprg.org
Wed Apr 15 12:04:33 PDT 2020


David,
    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 https://www.youtube.com/watch?v=8CXReb7f0Eo).
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).

   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 (https://www.ros.org/), 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
https://www.donkeycar.com/. Basically, you need the robot to be able to
re-orientate itself periodically, 4 hours is a long time.

   Remote control of a robot is fairly easy, with Bluetooth and wireless
modules available with good software and web sources.

   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.

   Hope this of some help. Sorry for wandering around so much.
Regards,
Doug P.

On Wed, Apr 15, 2020 at 12:43 PM David Steele (Carr) <
David.Steele at halliburton.com> wrote:

> 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> 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
> 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/f2aa4914/attachment.html>


More information about the DPRGlist mailing list