IMU help BNO055

455 views
Skip to first unread message

Ralph Hipps

unread,
Feb 23, 2017, 8:06:55 PM2/23/17
to HomeBrew Robotics Club
Any thoughts on how to convert the BNO055 output (Euler angles or Quaternions) to distance travelled would be helpful.

Also trying to get the sensor to give me consistent output.

Is this a good IMU or are there better ones?



Chris Albertson

unread,
Feb 24, 2017, 12:29:55 AM2/24/17
to hbrob...@googlegroups.com


On Thu, Feb 23, 2017 at 5:06 PM, Ralph Hipps <ralph...@gmail.com> wrote:

...Is this a good IMU or are there better ones?

There are many others.  Some at much lower prices but they all do about the same thing.  They drift and are noisy.    You have to deal with drift and noise either in your code or you use some one else.    The usual method for using IMU is a Kalman Filter where to fuse the IMU data with whatever else you have such as odometry, GPS or maybe vision.    The idea is that you have complementary data  For example GPS is useless for a short movement but it does not have long term drift like the gyroscopes do.  The magnetic compass is good also in that it can compensate for gyro drift.   But the gyro is best for short term.   Again Kalman filters are typically how this data gets "fused"   When I looked up Kalman filters some time ago I found I needed to re-study linear algebra I took that class decades ago

How to get distance traveled.  You integrate the velocity over time.


--

Chris Albertson
Redondo Beach, California

Osman Eralp

unread,
Feb 24, 2017, 1:23:17 PM2/24/17
to HomeBrew Robotics Club
> Any thoughts on how to convert the BNO055 output (Euler angles or Quaternions) to distance travelled would be helpful.

You cannot determine position using only a consumer grade IMU, such as the BNO055. If you had an ideal accelerometer, you could in theory integrate the acceleration to get velocity, and then integrate the velocity to get position. However, consumer grade sensors are noisy. To get position, noise gets integrated twice. This leads to exponential errors in position. This video explains the problem:


To offset the errors caused by the noisy sensor, you need to combine the inertial sensor data with another external source. The best external source would be an Earth-referenced sensor, such as GPS or vision. Though not technically Earth referenced, another very accurate source is odometry. The odemetry data could be from a wheel encoder, for example. It could also be from any other repetitive event that allows you to offset the inertial sensor error. For example, I seen demos that use step detection on a walking person to reset the error on each step. This prevents the error from building up, and can allow the calculation of position with good accuracy.

> Is this a good IMU or are there better ones?

If you don't want to write your own sensor fusion code, the BNO055 is an excellent choice because it is the only sensor in that price range that performs 9 axis sensor fusion on chip. The Invensense MPU-9250 is another popular 9-axis sensor, but it only fuses 6 axis on chip. If you want 9 axis fusion you need to link in an external library when compiling your code. Other sensors produce raw output that you have to filter yourself, which in my experience can lead to more accurate results, but with much more effort. 

Osman

Chris Albertson

unread,
Feb 24, 2017, 1:56:10 PM2/24/17
to hbrob...@googlegroups.com
On Fri, Feb 24, 2017 at 10:23 AM, Osman Eralp <osman...@gmail.com> wrote:


If you don't want to write your own sensor fusion code, the BNO055 is an excellent choice because it is the only sensor in that price range that performs 9 axis sensor fusion on chip. The Invensense MPU-9250 is another popular 9-axis sensor, but it only fuses 6 axis on chip. If you want 9 axis fusion you need to link in an external library when compiling your code. Other sensors produce raw output that you have to filter yourself, which in my experience can lead to more accurate results, but with much more effort. 

As has been said, to make the IMU useful for general navigation you are going to have to "fuse" the IMU data with data from other sensors (wheel encoders, GPS, vision,....) so there is really no why out of sensor fusion.  Either write it or "borrow" it

My experience is with the 9250.  You can buy them on breakout boards for dirt-cheap 
Reply all
Reply to author
Forward
0 new messages