INAV is great, but INAV is not the best in everything. For example, INAVs internal IMU (Inertial Measurement Unit) algorithm is suffering from the infamous artificial horizon drift. I explained this phenomenon already in one of the videos, you can watch it over here. We somehow mitigated this on fixed-wing airplanes in INAV 2.2.1, but it’s not gone yet and there is no fix for multirotors for example.
Last weekend I started hacking something that might, or might not, help. Technology progressed quite a lot in the last few years, and right now we have much more advanced all-in-one IMU chips than when the workhorse MPU6000 changed RC hobby forever.
The idea behind the hack is simple: use secondary, hardware IMU, to help INAV correct horizon drift and some of the magnetometer related problems as well. There are pretty amazing IMUs like Vector Nav VN-100, VN-200, and VN-300. But they cost more than most RC hobby airplanes. The cheapest VN-100 is $500 for the chip only. Or $800 for a ready to use version. Nobody would buy something like that for a foam airplane. There are, however, much cheaper (and less capable) integrated IMUs. One of them is Bosch BNO055.
Bosch BNO055 has an integrated accelerometer, gyroscope and magnetometer. It allows getting data from each sensor separately or to use sensor fusion (probably relatively simple Kalman) to combine data from 3 sensors into roll, pitch and yaw (including absolute magnetic heading) Euler angles or quaternions.
So far, so good. After a few days of work, I was able to connect GY-955 which contains BNO055 plus some extra electronics to INAV via I2C and get basic data from it. The next step is to check is this whole secondary IMU idea makes sense. The idea is to switch the OSD artificial horizon and heading to a new data source. If it will work and data obtained from BNO055 will be good quality, to switch other navigation-related functions of INAV to secondary IMU. Bear in mind that stabilization and main PID look will still be fed by the data obtained from primary IMU.