UXRCE parameters missing in PX4 QGroundControl configuration

I’m currently working with the Pixhawk 3DR board with firmware v1.14.2 while following the guide provided by ROS 2 User Guide. After installing ROS 2 Humble, PX4, and MicroXRCE-DDS, I make the firmware by using make px4_fmu-v2_default and make px4_fmu-v2_default upload to upload that firmware to the PX4 board. I’m also using the release version of QGroundControl v4.4.0 to change my parameters. The problem comes when parameters related to enabling uXRCE to connect to the PX4 board is missing , and I’m unable to find any solution on forums or in the PX4 page. I’m trying to use telemetry radio to connect to the Pixhawk 3DR board and publish my ROS2 px4_msgs messages to the XRCE agent for it to be able to control the drone. Simulation wise is completely fine with no issues regarding the XRCE agent. How can I modify the uXRCE parameters?


Here’s an update, I’ve tested the firmware on Pixhawk 3DR board 2.4.8 with fmu-v3 with success and I’ve found out that the previous board that I’ve been using (Pixhawk 3DR 2.4.6) with fmu-v2 doesn’t have the XRCE parameters included. What could be the problem here? I tried to upload the fmu-v3 firmware onto that Pixhawk 2.4.6 board but it just says that the Firmware image is too large. Is it even possible to enable XRCE on Pixhawk 2.4.6 on fmu-v2 firmware?

Hi
The board v2.4.6 may not be having enough memory to hold the bootloader file containing uxrce module.
May be if you backport the files , it may work but ensuring you have enough memory on pixhawk 2.4.6.
Delete unwanted modules on fmuv3 to create more memory space.
Also possible that pixhawk 2.4.6 has less cpu capacity than 2.4.8 to process UXRCE files.

Understood, I do think that most of the problems are caused by v2.4.6 not having enough memory to load all the bootloader files during bootloader upgrade, it is better to just buy the new v2.4.8 instead of messing around with the modules of fmuv3 since I don’t want to deal with all the incompatibility and problem that will come.

Now that I’ve setup both my pc with the uxrce agent and the px4 board with uxrce client, the current problem that I’m facing is that the connection on my uxrce seems to be very weak and unstable. What I mean is that after setting up the px4 board with UXRCE_DDS_CFG on TELEM2 and disabling MAV_1_CONFIG (because it set set to be on TELEM2 by default), the uxrce can starts to communicate via the telemetry radio, but the data it transfer back is extremely laggy and choppy, completely unreliable to use. I’m using the command ros2 topic echo /fmu/out/sensor_combined --qos-durability volatile --qos-reliability best_effort --qos-history keep_last --qos-depth 1 to check the results. The current info that I know that could be related to the issue is that on mavlink MAV_1_MODE if set to Onboard can cause choppy and high latency data transfer, my question is: is there some other parameters that is related to that for uxrce that can potentially solve this problem?

What is the baudrate that you set on TELEM2 . Set to the highest

I’ve set it to the highest my telemetry radio can support, which is 921600. The problem becomes apparent when I lower the frequency of some of the xrce topic, it just seems that the default settings for the xrce topic is just too much for my telemetry radio to handle. I just decrease the topic publish rate for some unimportant xrce topics and increase those topics that I want to higher frequency and it resolved this issue

Just so everyone is on the same page, the FMUv2 target is not including the uxrce dds module by default given hardware constraints, but you can easily enable it for a custom build, provided you disable other modules otherwise you will run into flash constraints.

The way to add modules to the build is like this

Edit the file boards/px4/fmu-v2/default.px4board and append a new line

CONFIG_MODULES_UXRCE_DDS_CLIENT=y

Heres an example of how this looks on a modern Pixhawk FMU target FMUv6X

2 Likes