Currently there are just few popular open source flight control softwares that support helicopters. The only one which offers navigation capabilities is ArduPilot, which covers all platforms and use cases one could imagine and therfore has a steep learning curve and somewhat strict hardware requirements.
The goal of this project is, to add support for the platform types regular helicopter, twin-rotor helicopter and helicopter-like multirotor to the popular open source flight control software INAV, which is relatvely easy to use and setup. Also, INAV can run on a wide variety of easily and inexpensively available flight controller hardware.
Since INAV did not offer support for constant speed / variable pitch propellers before, which are controlled similar to the rotors of a helicopter, I needed to implement the logic myself.
This lead among other challenges to the need to implement a dedicated altitude controller for helicopters, an RPM governor with a PID controller, a soft spool-up and mapping capabilities for additional RC channels.
The integral handling needed to be reworked to prevent the I-term from winding up on the ground and additional logic had to be added to the failsafe procedures.
Also, I reworked parts of the INAV Configurator to account for a bunch of new or changed configurable parameters without changing the well established user experience too much.
Currently, INAV for helicopters is based on INAV 6.1.1. As soon as INAV 7.1 is out, I would like to port it over to the newer code base. After this is done, I am thinking about either contributing my code to the INAV project or making my fork an independent project.
The next feature I want to add is a pirouette compensation for regular helicopters. Dedicated RPM governors for each main rotor would be beneficial too, if there is more than one.
Also, there is a lot of cool stuff that can be implemented like automated auto-rotation, inverted flight on a switch, ...