[Dprglist] Compass heading using gyroscopes?

Doug Paradis paradug at gmail.com
Thu May 14 21:17:08 PDT 2020


Murray,
    The "fusion" of the sensors is the Kalman filter (or the secret sauce).
The difference between imu and ndof modes is that the magnetometer is added
to the gyroscope and accelerometer sensors. It is the magnetometer that
needs to be waved in the air. The gyroscope and accelerometer will
self-calibrate after a short period of time. To calibrate any magnetometer,
you have to wave it a bit (for example an iphone). The big advantage of the
BNO055 is the low drift of the gyroscope (due in part to the internal
Kalman filter).

Regards,
Doug P.

On Thu, May 14, 2020 at 5:04 PM Murray Altheim <murray18 at altheim.com> wrote:

> Hi Doug,
>
> I believe the NDOF mode is the default for the device. By IMU mode I'm
> assuming
> you mean "IMUPLUS":
>
>     OPERATION_MODE_IMUPLUS      0x08    Inertial Measurement Unit
> (Accelerometer and Gyroscope Sensor Fusion Mode)
>     OPERATION_MODE_NDOF         0x0C    9 Degrees of Freedom Sensor Fusion
>
> The difference seems to be that the NDOF mode additionally "fuses" the
> other
> sensors into an improved measurement using some kind of Bosch secret sauce.
> The IMU mode uses only the accelerometer and gyroscope. I tried to locate
> any
> mention of the Kalman filters in the docs but couldn't. I dug around a bit
> on
> Kalman filters, which to my understanding reads a series of measurements
> over
> time and applies a filter to remove outliers and noise. That would seem to
> be
> particularly helpful for a small robot.
>
> One of the things I don't like about the BNO055 (though I understand the
> why)
> is that in order to get its calibration pin to set 'true' one has to wave
> the
> robot in the air for awhile. A guy wanted to mount one on his motorcycle,
> so
> this wasn't an option for him. My take is to have the sensor available on
> my
> I2C bus and have it send an event when it finally (due to the robot's
> motion)
> manages to get calibrated. But in practice this is difficult because my
> robot
> operates largely in 2D (the floor) so it never gets that Z axis motion that
> seems necessary for calibration. As has been noted, the BNO055 has a habit
> of
> falling in and out of calibration as well, which I've noted.
>
> I'm guessing that an accelerometer doesn't need calibration, maybe a
> gyroscope
> doesn't either (?), so David A's usage, though he gets drift, probably
> doesn't
> require him to pick up his robot and dance around with it. Though I guess
> that
> could be entertaining to the cat...
>
> I've collected some of my notes (including the complete table of modes)
> onto a
> wiki page at:
>
>    BNO055 Absolute Orientation Sensor
>
> https://service.robots.org.nz/wiki/Wiki.jsp?page=BNO055AbsoluteOrientationSensor
>
> Cheers,
>
> Murray
>
> On 15/05/20 1:00 am, Doug Paradis wrote:
> > Murray,
> >      Make sure you have the BNO055 in the right operation mode. I like
> the "imu" mode for indoor robots which outputs the results of an internal
> Kalman filter using the gyroscope and .accelerometer. It sounds like you
> want to run in "ndof"
> > mode.  As I have stated before, accurate magnetometer readings indoors
> on a mobile robot that will be operating in different locations is going to
> problematic due to non-constant hard iron distortions. You might find this
> link informative,
> > https://www.vectornav.com/support/library/magnetometer.
> >
> > Regards,
> > Doug P.
> >
> > On Thu, May 14, 2020 at 5:55 AM Murray Altheim via DPRGlist <
> dprglist at lists.dprg.org <mailto:dprglist at lists.dprg.org>> wrote:
> >
> >     Hi,
> >
> >     I think we've discussed this subject a bit recently. Here's a few
> papers I've
> >     managed to find:
> >
> >          Minimal-Drift Heading Measurement using a MEMS Gyro for Indoor
> Mobile Robots
> >          Sung Kyung Hong * and Sungsu Park
> >          Dept. of Aerospace Engineering, Sejong University, Seoul,
> 143-747, Korea
> >          Sensors 2008, 8, 7287-7299; DOI: 10.3390/s8117287
> www.mdpi.com/journal/sensors <http://www.mdpi.com/journal/sensors>
> >
> https://www.researchgate.net/publication/26551593_Minimal-Drift_Heading_Measurement_using_a_MEMS_Gyro_for_Indoor_Mobile_Robots
> >     https://www.mdpi.com/1424-8220/8/11/7287/pdf
> >
> >         Indoor Mobile Robot Heading Detection Using MEMS Gyro North
> Finding Approach
> >         November 2011, DOI: 10.7746/jkros.2011.6.4.334
> >         Yuan-Long Wei, Min Cheol Lee, Chi yen Kim
> >
> https://www.researchgate.net/publication/271336529_Indoor_Mobile_Robot_Heading_Detection_Using_MEMS_Gyro_North_Finding_Approach
> >
> >         Using Inertial Sensors for Position and Orientation Estimation
> >         Manon Kok, Jeroen D. Hol and Thomas B. Schön (2017),
> >         Foundations and Trends in Signal Processing: Vol. 11: No. 1-2,
> pp 1-153.
> >     http://dx.doi.org/10.1561/2000000094
> >
> >         Pose Estimation of a Mobile Robot Based on Fusion of IMU Data
> and Vision
> >         Data Using an Extended Kalman Filter
> >         Mary B. Alatise and Gerhard P. Hancke
> >     https://www.mdpi.com/1424-8220/17/10/2164
> >
> >     though the latter is a bit beyond what I'm looking for. There's a
> *lot* of
> >     articles on MDPI's website. I'm also happy to have found the Sensors
> journal.
> >
> >     What would be nicer than digging around for an algorithm would be a
> Python
> >     library that could give me a compass heading from a gyroscope (and
> possibly
> >     an accelerometer) measurement. I tried writing my own using just a
> >     magnetometer and had limited success (but then again I gave up too
> early).
> >
> >     At this point I've got six (!) different boards (BNO055, LSM9DS1,
> >     LSM6DSOX, LISMDL, ICM20948, LSM303D) that all do similar things but
> all
> >     seem to have issues and while the BNO055 does most everything, it
> seems
> >     to have the most issues, like not being particularly compatible with
> a
> >     Raspberry Pi (as one). All I *really* want is an accurate compass
> heading
> >     for an indoor robot (therefore no GPS). Pie in the sky?
> >
> >     On a lighter note, my cat scanner now works pretty well. I'll
> hopefully
> >     post a video to my YouTube channel sometime soon.
> >
> >     Cheers,
> >
> >     Murray
> >
> >
>  ...........................................................................
> >     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 <mailto:DPRGlist at lists.dprg.org>
> >     http://lists.dprg.org/listinfo.cgi/dprglist-dprg.org
> >
>
> --
>
> ...........................................................................
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dprg.org/pipermail/dprglist-dprg.org/attachments/20200514/2f00a445/attachment-0001.html>


More information about the DPRGlist mailing list