I am trying to control the ANAFI 4K drone using the Mavlink protocol because I want to control the drone from both Linux and Windows. I tried to use the official MAVSDK C++ implementation, but that did not work, so I just used the generator to create the v2 version of the mavlink headers and implemented my own C++ wrapper.
I am currently using the Parrot Sphinx simulator for tests. I connected to the simulator with the FreeFlight 6 app, and it reports the firmware version 1.7.7, and prompts me to upgrade to 1.8.0. Is there a way to upgrade the firmware on the simulator? I assume the app does not work because I’m using a simulator.
The issue I have is the fact that MANUAL_CONTROL does not allow controlling the drone using low speeds (e.g.: under 0.6m/s for ‘z’ axis) and I will explain why.
First of all, to enable manual control I send the command
MAV_MODE_FLAG_CUSTOM_MODE_ENABLED | MAV_MODE_FLAG_SAFETY_ARMED, and
PX4_CUSTOM_MAIN_MODE_MANUAL. Not sure if there’s another way that I missed.
To control the drone, I send the
MAVLINK_MSG_ID_MANUAL_CONTROL message containing the values for
r. What I observed is that these values have a dead zone between 0 and ±150. Taking for example
z axis, I use values in the range [0; 1000], with 500 being the hover value. When I try to ascend, until 650 the drone does not move. At 651, the drone starts ascending with ~0.6m/s, which is a lot for my purpose. I want to be able to fine-control the drone and to achieve that I need to control the drone with a lower speed than 0.6m/s, when necessary.
Is there a way to control the drone in a similar way (speed) as
MANUAL_CONTROL, but without these dead zones? Even if the dead zones exist, in the case of ‘z’ axis for example, I would expect the drone to start ascending with a way lower speed (maybe under 0.1m/s) for values like 660.