Missing topics when using uXRCE-DDS with Raspberry pi and the latest firmware (v1.15.0)

Hi everyone,
I’m trying to connect my companion computer (Raspberry Pi 4 running Ubuntu 24.04 and ROS2 Jazzy) to Pixhawk 4 (running the latest stable version v1.15.0).
I start my agent on the RPi using MicroXRCEAgent serial --dev /dev/ttyUSB0 -b 921600.
However, I am unable to see the topics from PX4.

user24@user24-ROG-Zephyrus:~$ ros2 topic list
/fmu/in/actuator_motors
/fmu/in/actuator_servos
/fmu/in/arming_check_reply
/fmu/in/aux_global_position
/fmu/in/config_control_setpoints
/fmu/in/config_overrides_request
/fmu/in/differential_drive_setpoint
/fmu/in/goto_setpoint
/fmu/in/manual_control_input
/fmu/in/message_format_request
/fmu/in/mode_completed
/fmu/in/obstacle_distance
/fmu/in/offboard_control_mode
/fmu/in/onboard_computer_status
/fmu/in/register_ext_component_request
/fmu/in/sensor_optical_flow
/fmu/in/telemetry_status
/fmu/in/trajectory_setpoint
/fmu/in/unregister_ext_component
/fmu/in/vehicle_attitude_setpoint
/fmu/in/vehicle_command
/fmu/in/vehicle_command_mode_executor
/fmu/in/vehicle_mocap_odometry
/fmu/in/vehicle_rates_setpoint
/fmu/in/vehicle_thrust_setpoint
/fmu/in/vehicle_torque_setpoint
/fmu/in/vehicle_trajectory_bezier
/fmu/in/vehicle_trajectory_waypoint
/fmu/in/vehicle_visual_odometry
/parameter_events
/rosout

I have parameters set as:
UXRCE_DDS_CFG = TELEM2
MAV_1_CONFIG = Disabled
SER_TEL2_BAUD = 921600 8N1

The “uxrce_dds_client status” from MAVLink console gives:

NuttShell (NSH) NuttX-11.0.0
nsh> uxrce_dds_client status
INFO  [uxrce_dds_client] Running, connected
INFO  [uxrce_dds_client] Using transport:     serial
INFO  [uxrce_dds_client] Payload tx:          0 B/s
INFO  [uxrce_dds_client] Payload rx:          0 B/s
INFO  [uxrce_dds_client] timesync converged: false
uxrce_dds_client: cycle: 0 events, 0us elapsed, 0.00us avg, min 0us max 0us 0.000us rms
uxrce_dds_client: cycle interval: 0 events, 0.00us avg, min 0us max 0us 0.000us rms

Note that the same setup worked for version v1.14.
Also, the SITL simulation was working for v1.15.0 and I was able to get all the topics using MicroXRCEAgent udp4 -p 8888.

Can anyone help me resolve this?

1 Like

I know this is a bit after the fact, but I just came upon this issue myself.

The commit [uxrce_dds_client] wait for Timesync to converge · PX4/PX4-Autopilot@2363c03 · GitHub made it so that the timesync has to converge, and the commit lib/timesync: relax warnings · PX4/PX4-Autopilot@4b25fad · GitHub relaxed the timesync warnings so they only display once so imo it’s difficult to tell what is happening. My setup is using 22.04 and ROS Humble and on v1.14 I never get to timesync, but it doesn’t require it on that version so I get all of the /fmu/out/ messages through ros2 topic list. On v1.15 you can turn off UXRCE_DDS_SYNCT ( see PX4-Autopilot v1.15 Release Notes | PX4 Guide (main) ) to turn off the timesync requirement and get all the topics. No idea if that is wise. I believe SITL has that disabled by default so that is why SITL works fine. I also found that a Pixhawk 6c mini didn’t have problems getting time sync, but couldn’t tell you why, I’m assuming some sort of hardware upgrade.

1 Like