PX4 Control Interface - how to execute modes without QGC

Hello! I am using the new Control Interface packages with Gazebo, ROS2 Humble in Docker, and PX4 1.15.

I noticed on GitHub that custom modes do not appear as flight modes in QGroundControl unless you are using the Daily build, which I cannot use. I’ve tried running it in various ways, but so far, I haven’t had any success. According to the documentation and the PX4 repository, I can use the command commander mode ext1, meaning I can only activate External Mode 1. The configuration is set when the ROS2 node is activated.

In companion terminal:

$ ros2 run example_mode_manual_cpp example_mode_manual
...
[DEBUG] [1727509288.323407890] [example_mode_manual]: Registering 'My Manual Mode' (arming check: 1, mode: 1, mode executor: 0)
...
[DEBUG] [1727509288.329919195] [example_mode_manual]: Got RegisterExtComponentReply
[DEBUG] [1727509288.342477916] [example_mode_manual]: Arming check request (id=168, only printed once)

In Qgroundcontrol - Mavlink console:

pxh> commander status
INFO  [commander] Disarmed
INFO  [commander] navigation mode: Hold
INFO  [commander] user intended navigation mode: Hold
INFO  [commander] in failsafe: no
INFO  [commander] External Mode 1: nav_state: 23, name: My Manual Mode

However it doesn’t activate and appear in QGC console

Unknown flight mode 184811520
1 Like