My Robots Keep Dreaming They Know Where They Are Headed

Before my BNO055 IMU died, I had managed to understand that it was not able to give my robot accurate turns, nor accurately report how much my “Drive Straight” commands were resulting in tiny angular motion. In fact it was looking like the wheel encoders just might provide less bad heading estimates.

Bosch told me perhaps I should use two BNO055 sensors. Now that sensor costs $30 and sports a sophisticated motion processor. They have a real nice demo video that shows moving the device in space and a little rabbit figure moving around 3 axes to match. My “reality” robot environment didn’t match my expectations.

Since the device died, I started looking for a new device which perhaps would provide better accuracy or similar accuracy at a lower price with the idea that external kalman fusion of the IMU data and encoder data would fulfil my robot dreams.

I discovered many folks using the MPU2950, a $15 device that also has a motion processor, but they report “with calibration you should be able to get around 4 degree heading accuracy”. WHAT?

The last fellow to tell me that figure also included “if you need better try this $50 device”. Now that one only supports 3v3 I2C so I would have to hang it off the RaspberryPi I2C pins, and I don’t know if the RPi I2C can support two loads. That device claims 0.3 degree bench and 1 degree “reality” accuracy. I could end up getting better bad headings, and still need the over-my-head math of error-covariance-matrices.

The ROS folks told me to ignore the motion processors completely and process the raw data, but then they add “fuse that with a camera for visual simultaneous location and mapping (VSLAM)”

If I was a machine learning wiz, I’d just have my GoPiGo3 figure out on its own how to drive straight and turn accurately from the encoders and camera data, but that also takes processing matrices - I don’t understand matrix math. I didn’t understand it when I managed to pass the courses 50 years ago and I haven’t gotten any smarter since.

I just never dreamed it would be so hard to make my robot actually drive straight and turn accurately.


I remember writing an article around here somewhere that talked about my own initial experiences with robotics as a rank newbie.

I remember writing something like:

Then, to add insult to injury, the API’s keep changing so, just when you think you have it figured out, they change something that totally breaks all your code.