eclipse-zenoh / zenoh-plugin-dds

A zenoh plug-in that allows to transparently route DDS data. This plugin can be used by DDS applications, such as ROS2 robotic applications and others, to leverage the zenoh for geographical routing or for better scaling discovery.
Other
161 stars 58 forks source link

[Bug] Iron and Rolling: errors on ros_discovery_info messages #164

Open JEnoch opened 10 months ago

JEnoch commented 10 months ago

Describe the bug

Following https://github.com/ros2/rmw_dds_common/pull/68 the Gid type used in ros_discovery_info topic changed from char[24] data to char[16] data.

This leads the bridge to be incompatible with Iron and latest Rolling. The incompatibility can be seen with such logs in the bridge: [2023-11-29T14:51:27Z WARN zenoh_plugin_ros2dds::ros_discovery] Error receiving ParticipantEntitiesInfo on ros_discovery_info: invalid utf-8 sequence of 1 bytes from index 4

Or in a ROS Node: [WARN] [1701269487.404903002] [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

In Iron, run zenoh-bridge-dds -f with any ROS Node and see the logs.

System info

Timple commented 7 months ago

Is there any update here? On ROS Iron I'm still getting:

[rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/tf' with type 'tf2_msgs::msg::dds_::TFMessage_' from USER_DATA '(null)'.
JEnoch commented 7 months ago

I don't think the error message you get is related to this issue. This issue is specifically related to the ros_discovery_info which is published and subscribed and decoded by the bridge. You error message is related to the tf topic which the bridge is routing un-touched. Therefore I think more of an incompatibility between your ROS Node publishing on tf topic and your ROS Node subscribing to this same topic.

Wrt. this issue, it has already been fixed for the zenoh-plugin-ros2dds: https://github.com/eclipse-zenoh/zenoh-plugin-ros2dds/issues/21 And we advise all ROS 2 users to use this new zenoh-bridge-ros2dds instead of the zenoh-bridge-dds. So I think we will fix this issue only if some ROS 2 user have good reasons to not switch to the new bridge.

Timple commented 7 months ago

Ah, we are actually using the zenoh-plugin-ros2dds. So my issue must indeed be different. Sorry for the confusion.