I am looking for an IMU that outputs absolute heading data to use with wheel encoders to get fused heading direction for low-cost navigation. The robot will only turn prob 90deg/s at most, travel at 1m/s at most, mostly concerned about staying on course (within a foot) over a distance of 10-20 feet of straight travel on a smooth concrete driveway and zero point turning as accurate as possible. The wheel track width is 17in. Can you recommend an Arduino based IMU system that can do this?
Hi @perigalacticon ,
For navigation tasks like yours, considering an IMU with a magnetometer, gyroscope, and accelerometer would be beneficial for providing absolute heading data and overall orientation.
Some popular options in the Arduino community include the MPU-9250 or BNO055, which can be used with libraries that simplify data processing and sensor fusion:
Please have a look and let me know your opinion.
Igor_X,
Thanks for the reply. I have a lot of questions. I currently have a BNO055. I have developed the code to the point where I can get it calibrated, where all components report level 3; then save the cal offset values to EEPROM, then recall the current cal offset values and set them on the next start up. When they are set it initially reports full calibration, but the mag quickly goes to 0 and it continues to adjust the offsets, and sometimes I can’t get it to calibrate just by rotating it in the XY plane. The other 6 offsets typically stay the same. When the mag finally thinks it’s calibrated it jumps to ‘absolute mode’ where it uses mag north as the reference angle instead of relative to start orientation, but this causes the heading angle to suddenly adjust to whatever the difference was to its start heading. I have seen this jumping behavior reported on the Bosch sensor website and other places. I could use it in relative mode, but would prefer to have it in absolute mode. To begin I want the robot to just follow a simple path, like a rectangle, like 10ft square, with a 1 ft tolerance so it will stay on my driveway. Eventually I’d like it to be able to follow any path and stay on the driveway. It’s large however, and I don’t want to have to carry it back to the start point if it needs to be reset. I can address this with a program input however, and could also address the heading jump by detecting it in the code and adding the offset back to the heading value. I was wondering if other 9dof IMUs such as the Waveshare also have this issue with mag calibration, or if there is much advantage to getting raw data and calculating sensor fusion in the MCU (Lolin D32 Pro ESP32). Or should absolute/mag steering not be used?
HI @perigalacticon ,
I haven’t used this Waveshare IMU so I don’t know if it has some issues with calibration, but I don’t see that any of the customers complained about it.
I’m wondering about calibration of magnetometers in general. Because the BNO055 is basically unusable in my indoor environment where I am programming the robot. It won’t calibrate if constrained to XY planar movement, and then it recalibrates itself at will at any time which causes the heading to instantaneously change by large amounts. I’ll be testing it outside soon but I don’t want to be restricted to doing all development outdoors.