INAV and DJI HD FPV system – there is a light at the end of the tunnel

When DJI did not decide to add INAV and Ardupilot to the list of the supported flight controller for the HD FPV system, some people were, at least, disappointed. Long story short: DJI OSD works only with Betaflight. Period.

DJI HD FPV system

Until today, DJI avoids the answer to the question if INAV and Ardupilot will be supported. I know there are some talks and there is a chance for native support for INAV and Ardupilot, but the timeline is not revealed.

In the meantime, there is a solution. It's based on, dadam, Arduino! Yeap, Arduino to the rescue! Thanks to Mavlink to MSP bridge DJI AirUnit thinks it's talking to the Betaflight flight controller, while indeed it is talking to any flight controller software that supports Mavlink! Since INAV supports Mavlink, you are golden! Enable Mavlink on one of the ports, connect DJI AirUnit via the Arduino and that's all!

It might not be the perfect solution to the problem, but it is a solution that seems to be working!

DJI FPV System & INAV – current situation

DJI FPV System

When DJI released updated firmware for their DJI FPV system with improved OSD, Betaflight users started cheering. The move to add OSD with elements like GPS position, the artificial horizon, etc is kind of puzzling. It works only with Betaflight flight controllers and a typical user of Betaflight does not really need it. After all, Betaflight concentrates on racing and freestyle on 5-inch mini-quads, not long-range.

On the other hand, users INAV, that concentrate on airplanes and long-range flights, can not use new DJI FPV OSD. Pilots immediately started to ask INAV developers to implement DJI FPV support. The problem is, that it's not working like that.

  • Support for Betaflight is built-in into DJI Air Unit, not another way around.
  • DJI FPV seems to be actively checking if the flight controller it talks to is Betaflight or not
    INAV and Betaflight support the same serial protocol: MSP. This means DJI FPV is capable of talking to INAV, it just refuses to do so
  • INAV and Betaflight use the same OSD positioning protocol using the same MSP frames. Still, DJI FPV refuses to talk to INAV
  • We have no idea what DJI Air Unit expects from a flight controller since it is the closed source!

All of that means that INAV developers can not fix something that is not within the code of INAV. For INAV support, DJI has to implement it. Not the other way around.

What happened to INAV horizon drift?

INAV suffers from horizon drift since day one. It’s not that Betaflight does not suffer from it (both Betaflight and INAV originate from the same parent: Cleanflight). In Betaflight it just does not matter at all. In INAV it’s a real-life problem tho.

So far, we somehow managed to mitigate horizon drift on airplanes but it’s not really fixing the problem. It’s there and it’s irritating as hell.

Last month I published a post that describes my intent to use the external board as a secondary IMU for INAV. It is “of the shelf” Bosch BNO055. Today I finally put it into a test and to be honest, the results are very optimistic!

More about INAV horizon drift:

The best flight controllers for INAV – 2019 Q4 edition

Believe it or not, but choosing the right flight controller for your next airplane or a drone build is quite important. Yes, I know that some of you might say that hardware does not matter and your kwad will fly as good with the latest F7 flight controller as it would fly with Naze32. It is, not true. It would fly with Naze32, but do not even try to compare modern flight controllers with more advanced filtering, inputs, outputs, and peripherals.

Best flight controllers for airplanes

Matek F722-WING

Matek F722-WING

Matek F722-WING is the second generation of a big WING flight controllers started by a famous F405-WING. Comparing to the original, F722-WING offers more input/output options, including dedicated airspeed port, switchable camera inputs and switchable power supply for FPV installation.

FuriousFPV F35

FuriousFPV F35 is a well know and proven airplane flight controller brought to by by the FuriousFPV. Based on STM32F4 MCU provides plenty input/output options in a relatively small form-factor. Can be bought with matching GPS, Bluetooth and Airspeed modules. F35 utilizes plug & play idea, since most ports are broken out as JST-GH connectors.

Matek F411-WING SE

Matek F411-WING SE

When small size is required, F411-WING SE comes into play. Super small and lightweight but offers enought serial ports and outputs to satisfy most lighweight builds. Vertcal USB port makes it easily accessibke when installed inside alsmost any foam airplane.

Best flight controllers for drones

Kakute F7

Holybro Kakute F7

Holybro Kakute F7 managed to do what others failed. It fits powerful STM32F745, OSD, SD Card and enough serial ports for everyone in a form factor only slightly bigger than standard 36x36mm. The unique feature of the whole Kakute series is a gyroscope installed on a separate board connected with the main board with a thin ribbon cable and sponge. It helps to keep gyro noise under control. Made to use together with 4-in-1 ESCs.

Matek F722-SE

Matek F722-SE

Matek F722-SE is probably the best STM32F7 flight controller for drones on the market. Integrated OSD, power distribution board, output for 6 motors or 4 motors and 2 servos, integrated camera switcher and "power on a switch" function. INAV, Cleanflight, and Betaflight supported. Enough Serial ports of everything you need, including ESC telemetry.

INAV Airspeed Sensor – which one to choose

INAV flight controllers gives you the option to install airspeed sensor on your airplane, just like in Pixhawk and Ardupilot. And just like in case of Pixhawk and Ardupilot, you have several options in terms of the hardware. Airspeed sensors, also known as Pitot tubes, come in two variants: digital and analog.

Matek Airspeed Sensor ASPD-7002

Digital Airspeed Sensors

Devices based on MS4525 digital differential pressure sensor. They are connected via I2C bus using SDA and SCL pins. They are more expensive than analog sensors, but also give slightly better accuracy. Example Digital Airspeed Sensor

Analog Airspeed Sensors

Just like digital, are also based on differential pressure sensors, but they output measured pressure difference as analog value. Based on MPXV7002 chip. They have to be connected to a free Analog input on a flight controller. On top of that, all 7002 sensors output value between 0 and 5V, while flight controllers can read only between 0 and 3.3V.
This is why, if airspeed sensor, or a flight controller, does not have to built-in voltage divider, you have to build your own one.

There are exemptions from this rule tho. Matek Airspeed Sensor has a divider ready on 1/2 pin. Latest Matek WING flight controllers like F722-WING or F-765 WING have special pins called Air that can accept 5V voltages. Always check hardware specification! Analog Airspeed Sensor for INAV, APM, Pixhawk

More about airspeed sensors and INAV:

The future of F3 board in INAV

It’s time to start saying goodbye to F3 boards in INAV. History repeats itself and after we let F1 boards go, the same fate upon F3. Why? STM32F303 does not have enough RAM to handle everything that is demanded of it: OSD, telemetry, GPS, navigation, etc. INAV already is not enabling the majority of new functions on F3 based boards!

What will happen next? Most probably, F3 boards that fail to build due to lacking memory will be removed from the official release process. The code that drives them will stay, but if anyone will want to compile INAV for them, they will have to find missing memory by himself.

So, do not expect INAV 2.4 running on Omnibus F3. On the other hand, SP Racing F3 will probably stay with us for a little longer. Lack of OSD is a huge advantage in this case.

INAV secondary IMU with Bosch BNO055

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.

The Ultimate Fixed Wing Tuning Guide for INAV

Today, step by step, tuning guide for all of you flying fixed wings (including flying wings) with INAV onboard! No, I will not give you a magical formula: put this here and it’s done. It’s a real step by step list of what you have to do to tune your fixed-wing airplane. Starting from the center of gravity, rates, servo trimming and finally tuning vital INAV parameters.

How to setup INAV 2.2 on 7-inch quads – PID tuning

INAV 2.2 is with us and it brings a series of cool improvements that should make all owners of mini quads very happy. Those are:

  • Improved Airmode that is more suited for small and powerful drones
  • Iterm Relax that allows getting rid of bounceback at the end of flips and rolls
  • D-Boost allows having cold motors and a lot of Dgain when doing fast maneuvers. It's an equivalent of D_Min from Betaflight
  • Configurable gyro stage 1 filter type: PT1 or BiQuad
  • Faster D-term filtering
  • and a few other goodies
    In this video, I will show you how to set up INAV 2.2 for 7-inch quads to get the best flying experience possible.