Bradley Zhou’s Status Report for 4/24/21
This week, I spent toying with the new IMU we received, the BNO055. The benefit to this IMU is it features a magnetometer and more accurate orientation readings. We had originally planned on using this new IMU alongside a software library – scikit kinematics, to try and get more accurate tracking. I spent some time digging deep into the library and realized that the library at heart used the same algorithms and methods we were originally using (double integration). The BNO055 also has features to report more than just raw data. It has the option to report linear acceleration, which automatically takes into account gravity and orientation/rotational data. I first tried to utilize this option but noticed that it still drifted in certain directions. After deciding linear acceleration was not immediately viable, I attempted to use raw acceleration in addition to orientation data that the IMU reports. I converted the orientation data (quaternions) to a rotation matrix and applied that rotation matrix to the raw acceleration (also accounting for gravity). This also did not appear to give accurate linear acceleration values. I observed that the BNO055 reported accurate orientation data, but the acceleration data was less consistent than the MPU6050 we were using previously. Consequently, I had the idea to try and use BOTH the MPU6050 as well as the BNO055. I would use the orientation values from the BNO and the accelerometer values from the MPU6050 to try and get a more linear acceleration value. I figured out the correct orientation and put the modules right on top of each other to be as close as possible together to not throw off the readings too much. While slightly more accurate than the other methods, the fact that the accelerometer and gyro/magnetometer were not exactly next to each other still left error that was impossible to account for.