Skip to content

Cyclone DDS doesn't improve robot network #557

@Russ76

Description

@Russ76

Setting up communication with robot and two Raspberry Pis on board. One is a 4 (Ubuntu 22 and Ros Humble) and the other is a 5 (Ubuntu 24 and Ros Jazzy). Base station laptop has Ubuntu 22 and Ros Humble. It has an Oak-D camera and Velodyne vlp16. I went to Cyclone DDS because the regular RMW was not handling the data. Laptop is running Rtabmap and requires lots of data. I have implemented the advice found on StereoLabs site but still Cyclone DDS isn't working right. When the camera launch file starts, all the other terminals scroll with errors, whether the joystick or the Ros Control lower level robot software. Here is a sample of what is displayed:

[rgbd_sync-3] [WARN] [1771983109.403244298] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/joy' with type 'sensor_msgs::msg::dds_::Joy_' from USER_DATA '(null)'.
[rgbd_sync-3] [WARN] [1771983109.403265872] [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)'.
[rgbd_sync-3] [WARN] [1771983109.403283243] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/rosout' with type 'rcl_interfaces::msg::dds_::Log_' from USER_DATA '(null)'.
[rgbd_sync-3] [WARN] [1771983109.403334576] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/parameter_events' with type 'rcl_interfaces::msg::dds_::ParameterEvent_' from USER_DATA '(null)'.
[rgbd_sync-3] [WARN] [1771983109.403354947] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/cmd_vel' with type 'geometry_msgs::msg::dds_::Twist_' from USER_DATA '(null)'.
[rgbd_sync-3] [WARN] [1771983109.403375910] [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)'.
[rgbd_sync-3] [WARN] [1771983109.403432021] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/parameter_events' with type 'rcl_interfaces::msg::dds_::ParameterEvent_' from USER_DATA '(null)'.
[rgbd_sync-3] [WARN] [1771983109.403455299] [rmw_cyclonedds_cpp]: Failed to parse type hash for topic 'rt/joy/set_feedback' with type 'sensor_msgs::msg::dds_::JoyFeedback_' from USER_DATA '(null)'.

[ros2_control_node-2] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[ros2_control_node-2] This error state is being overwritten:
[ros2_control_node-2]
[ros2_control_node-2] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[ros2_control_node-2]
[ros2_control_node-2] with this new error message:
[ros2_control_node-2]
[ros2_control_node-2] 'invalid data size, at ./src/serdata.cpp:384'
[ros2_control_node-2]
[ros2_control_node-2] rcutils_reset_error() should be called after error handling to avoid this.
[ros2_control_node-2] <<<
[relay_field-4]
[relay_field-4] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[relay_field-4] This error state is being overwritten:
[relay_field-4]
[relay_field-4] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[relay_field-4]
[relay_field-4] with this new error message:
[relay_field-4]
[relay_field-4] 'invalid data size, at ./src/serdata.cpp:384'
[relay_field-4]
[relay_field-4] rcutils_reset_error() should be called after error handling to avoid this.
[relay_field-4] <<<
[robot_state_publisher-1]
[robot_state_publisher-1] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[robot_state_publisher-1] This error state is being overwritten:
[robot_state_publisher-1]
[robot_state_publisher-1] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[robot_state_publisher-1]
[robot_state_publisher-1] with this new error message:
[robot_state_publisher-1]
[robot_state_publisher-1] 'invalid data size, at ./src/serdata.cpp:384'
[robot_state_publisher-1]
[robot_state_publisher-1] rcutils_reset_error() should be called after error handling to avoid this.
[robot_state_publisher-1] <<<

[joy_node-1] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[joy_node-1] This error state is being overwritten:
[joy_node-1]
[joy_node-1] 'invalid data size, at ./src/serdata.cpp:384'
[joy_node-1]
[joy_node-1] with this new error message:
[joy_node-1]
[joy_node-1] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[joy_node-1]
[joy_node-1] rcutils_reset_error() should be called after error handling to avoid this.
[joy_node-1] <<<
[joy_node-1]
[joy_node-1] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[joy_node-1] This error state is being overwritten:
[joy_node-1]
[joy_node-1] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[joy_node-1]
[joy_node-1] with this new error message:
[joy_node-1]
[joy_node-1] 'invalid data size, at ./src/serdata.cpp:384'
[joy_node-1]
[joy_node-1] rcutils_reset_error() should be called after error handling to avoid this.
[joy_node-1] <<<
[teleop_node-2]
[teleop_node-2] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[teleop_node-2] This error state is being overwritten:
[teleop_node-2]
[teleop_node-2] 'string data is not null-terminated, at ./src/serdata.cpp:384'
[teleop_node-2]
[teleop_node-2] with this new error message:
[teleop_node-2]
[teleop_node-2] 'invalid data size, at ./src/serdata.cpp:384'
[teleop_node-2]

Sorry about the length! Any idea why these errors come up? Sometimes the Raspi 5 will hang.
I'm using these commands in each unit:

sudo sysctl -w net.ipv4.ipfrag_time=3
sudo sysctl -w net.ipv4.ipfrag_high_thresh=67108864
sudo sysctl -w net.core.rmem_max=67108864 net.core.rmem_default=67108864
sudo sysctl -w net.core.wmem_max=67108864 net.core.wmem_default=67108864

And this:
I used the xml file that Stereolabs recommended.

Thanks,
Russ

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions