eclipse-zenoh / zenoh-plugin-ros2dds

A Zenoh plug-in for ROS2 with a DDS RMW. See https://discourse.ros.org/t/ros-2-alternative-middleware-report/ for the advantages of using this plugin over other DDS RMW implementations.
https://zenoh.io
Other
126 stars 29 forks source link

[Bug] [ROS2 Jazy] Failed to parse type hash for topic #290

Open mgeisslinger opened 1 month ago

mgeisslinger commented 1 month ago

Describe the bug

With ROS2 Jazzy and the related version of RMW Cyclone DDS, bridging any topic between two machines that run with ROS2 Jazzy using the zenoh ros2dds bridge results in the following warning:

[WARN] [1728567761.820363013] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'ros_discovery_info' with type 'rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_' from USER_DATA '(null)'.

To reproduce

  1. Start the zenoh bridge with default config on two machines. Both machines run with Ubuntu 24 and ROS 2 Jazzy (same container)
  2. Run ros2 run demo_nodes_cpp talkeron the first machine and ros2 run demo_nodes_cpp listener on the second machine
  3. On both machines the following warnings will occur - the messages are received, however:
    [WARN] [1728567761.820363013] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'ros_discovery_info' with type ```
    'rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_' from USER_DATA '(null)'.
    [WARN] [1728567761.820424335] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'ros_discovery_info' with type 'rmw_dds_common::msg::dds_::ParticipantEntitiesInfo_' from USER_DATA '(null)'.
    [WARN] [1728567766.224054417] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/rosout' with type 'rcl_interfaces::msg::dds_::Log_' from USER_DATA '(null)'.

System info

Timple commented 1 month ago

Same here!

christomaszewski commented 1 month ago

Same here!

christomaszewski commented 1 month ago

might have something to do with this update for sending the type definitions over the wire: https://github.com/ros2/ros2/issues/1159

JEnoch commented 1 month ago

might have something to do with this update for sending the type definitions over the wire: ros2/ros2#1159

Correct: rmw_cyclonedds_cpp is now expecting to get the type hash in the USER_DATA QoS of the discovered Writers and Readers. If not found this warning appears.
The bridge doesn't set this QoS for the Writers/Readers it create. To change this, it first needs to receive the type hash from a remote bridge. Meaning we need to add it in the liveliness tokens exchanged between the bridges.

Unfortunately I won't have time to address this shortly, as I'm attending ROSCon next week and then have a few days off. But I plan to do it in November. Thank you for your patience !