voxl-microdds-agent not publishing all topics
-
Hi,
I have the weird problem where the running agent is not publishing on all topics specified in the clients dds_topics.yaml. E.g. on the topic /fmu/out/senor_baro and /fmu/out/vehicle_odometry everything works fine but nothing is published on /fmu/out/vehicle_status and /fmu/out/vehicle_gps_position even though everything is specified in the .yaml with the corresponding px4_msgs. The vehicle status msg is published by uorb (at least "listener vehicle_status" in the px4 shell gives me a msg) and the microdds agent created a publisher, datawriter and topic. I've rebuild voxl-px4 and the microdds agent to no avail. I honestly dont know what to do next so any advice would be great!
-
Hi @K-Stute - I will try to recreate on my end as I have not come across this issue before. Just to confirm - what SDK are you on? and also what repository were you looking at for the dds_topics.yaml?
Zach
-
@Zachary-Lowell-0 I'm using a newly flashed sdk 1.2.
voxl2:~$ voxl-version -------------------------------------------------------------------------------- system-image: 1.7.6-M0054-14.1a-perf kernel: #1 SMP PREEMPT Wed Mar 20 19:48:52 UTC 2024 4.19.125 -------------------------------------------------------------------------------- hw platform: M0054 mach.var: 1.0 -------------------------------------------------------------------------------- voxl-suite: 1.2.0 --------------------------------------------------------------------------------
And I'm using the repo you've send me in another post (https://github.com/modalai/px4-firmware/blob/voxl-dev/src/modules/microdds_client/dds_topics.yaml) and with that i followed your instructions from your github(https://gitlab.com/voxl-public/voxl-sdk/services/voxl-px4).
For ros i use ros2 humble in a docker container running the arm64v8/ros:humble-ros-base image with the px4_msgs from this repo https://github.com/PX4/px4_msgs.git.I'm investigating a possible problem with the px4_msgs version in your px4-firmware fork and the repo i mentioned above. Maybe this rings a bell.
Is there anything else i can provide you with?
-
Nope! Appreciate the info @K-Stute will be back with a solution soon I hope!
-
Ok @K-Stute I am unable to recreate your issue:
voxl2:~$ ros2 topic echo /fmu/out/vehicle_status timestamp: 1714152702737855 armed_time: 0 takeoff_time: 0 arming_state: 1 latest_arming_reason: 0 latest_disarming_reason: 0 nav_state_timestamp: 15311461 nav_state_user_intention: 0 nav_state: 0 failure_detector_status: 0 hil_state: 0 vehicle_type: 1 failsafe: false failsafe_and_user_took_over: false gcs_connection_lost: true gcs_connection_lost_counter: 0 high_latency_data_link_lost: false is_vtol: false is_vtol_tailsitter: false in_transition_mode: false in_transition_to_fw: false system_type: 2 system_id: 1 component_id: 1 safety_button_available: true safety_off: true power_input_valid: true usb_connected: false open_drone_id_system_present: false open_drone_id_system_healthy: false parachute_system_present: false parachute_system_healthy: false avoidance_system_required: false avoidance_system_valid: true rc_calibration_in_progress: false calibration_enabled: false pre_flight_checks_pass: false --- timestamp: 1714152702778985 armed_time: 0 takeoff_time: 0 arming_state: 1 latest_arming_reason: 0 latest_disarming_reason: 0 nav_state_timestamp: 15311461 nav_state_user_intention: 0 nav_state: 0 failure_detector_status: 0 hil_state: 0 vehicle_type: 1 failsafe: false failsafe_and_user_took_over: false gcs_connection_lost: true gcs_connection_lost_counter: 0 high_latency_data_link_lost: false is_vtol: false is_vtol_tailsitter: false in_transition_mode: false in_transition_to_fw: false system_type: 2 system_id: 1 component_id: 1 safety_button_available: true safety_off: true power_input_valid: true usb_connected: false open_drone_id_system_present: false open_drone_id_system_healthy: false parachute_system_present: false parachute_system_healthy: false avoidance_system_required: false avoidance_system_valid: true rc_calibration_in_progress: false calibration_enabled: false pre_flight_checks_pass: false ---
The steps I did to do this on a 1.2.0 Voxl-suite -->
Enable/start voxl-px4
sudo apt-get install voxl-ros2-foxy
sudo apt-get install voxl-microdds-agent
sudo apt-get install voxl-mpa-to-ros2
Ensure that microdds-agent service has been started: systemctl start voxl-microdds-agent
voxl-configure-mpa-to-ros2
source /opt/ros/foxy/mpa_to_ros2/install/setup.bash
ros2 topic echo /fmu/out/vehicle_status
I had to wait about a second for vehicle_status to being publishing as well.
-
@Zachary-Lowell-0 Okay maybe this seems to work with foxy but as i mentioned I'm using humble and it seems like there is a mismatch between the version of the px4_msgs. I can provide a docker image to recreate the problem (at least with my voxl-px4 build).
To recreate use this docker image:
run withdocker run -it --network=host learningsql/voxl-px4-hector:tagname
Do:
cd ros2_ws colcon build source install/setup.bash ros2 topic echo /fmu/out/vehicle_status
There should appear no msgs (at least on my system)
Fix this with:
rm -rf src/px4_msgs/msg unzip /px4_firmware_msgs/msg_voxl_px4.zip colcon build source install/setup.bash ros2 topic echo /fmu/out/vehicle_status
Now there should be msgs on the screen.
Idk if this is relevant for your px4_msgs fork but at least i found a solution and maybe this thread can help other people.
Thanks for you help!
-
@Zachary-Lowell-0 @Moderator A really important question here is what if there are two drones publishing the same name FMU topics and you haven't set the domain id different for those drones for data sharing through your custom interfaces. PX4 ROS2 docs provide a way to change the namespace of the FMU topics to be published but MODAL AI docs mention no such thing? Is there a way to do that? As most of the starling systems are being used as a swarm platform this thing is really critical