ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
2

Images messages not transmitted over network

asked 2022-10-11 10:36:59 -0500

PatoInso gravatar image

updated 2022-10-12 03:59:29 -0500

Hello,

I have a RealSense camera that publishes a color stream at 15fps, size of 640x360 in the topic /color/image_raw. The image messages are published correctly on my robot (can see messages in ros2 topic echoand ros2 topic hzgives about 15Hz)

However, on a remote machine, I can't receives the Image messages:

  • I can see the topic /color/image_raw with ros2 topic list (so ROS_DOMAIN_ID and WiFi connection is ok)
  • I can ros2 topic echo all other topics
  • QoS settings of bith publisher and subscriber are at RELIABLE VOLATILE
  • But ros2 topic echo/hz /color/image_raw shows no output, and the callback of my Image subscriber is never called)

I use CycloneDDS on ROS2 Galactic.

Why are Image message not transmitted between the two computers ? How to solve that ?

edit: seems related to DDS issue: following https://docs.ros.org/en/galactic/How-... on my remote machine I could get the callback called when palying rosbag of camera data. Without this tuning, even if rosbag play and subscriber are on the same machine, no message are passed.

edit retag flag offensive close merge delete

Comments

Hello! We have a very similar setup, and we are having the same problems, but with a lidar point cloud. Did you have any luck solving the issue? Thanks!

Olivier_Gamache gravatar image Olivier_Gamache  ( 2023-01-10 10:19:10 -0500 )edit

Nope, we still have the problem... however we could improve a bit (cf my edit) by tweaking the DDS config related to socket size, and by reducing a bien the image resolution, but still no transmission over Wifi. Maybe try some options from here ? (https://github.com/eclipse-cyclonedds...)

PatoInso gravatar image PatoInso  ( 2023-01-12 09:21:01 -0500 )edit

Any update or solution to this? I've just run into the exact same problem. DDS tuning didn't seem to help either.

ndmmdn gravatar image ndmmdn  ( 2023-06-15 10:25:16 -0500 )edit

Hi @ndmmdn! As mentionned in my answer, if you are interested, we developped a tool in our robotics lab to bypass this issue and relay ROS topics using TCP. Our tool is easy to set up and use. Here is the link to our code and documentation: https://github.com/norlab-ulaval/ros2.... If you have any question, don't hesitate to ask us!

Simon-Pierre Deschênes gravatar image Simon-Pierre Deschênes  ( 2023-06-15 12:47:33 -0500 )edit

Thanks for the suggestion. Theoretically this should be able to be achieved by using DDS QoS profiles, but for some reason its not working. I will try to work the issue further, but will definitely have your repo in mind as a backup!

ndmmdn gravatar image ndmmdn  ( 2023-06-17 05:53:40 -0500 )edit

1 Answer

Sort by » oldest newest most voted
1

answered 2023-03-31 19:01:42 -0500

Hi PatoInso! As pointed out in your edit, this issue is related to the DDS middleware protocol. The problem comes from the fact that the ROS middleware uses UDP, which does not guarantee that sent packets will be received on a remote machine. After multiple failed attempts to change the DDS config to use TCP instead of UDP, our robotics lab developped a tcp tunnel to bypass this issue. It is very intuitive and easy to use. All you have to do is start a server node on the publishing machine and a client node on the subscribing machine and call a service to add the desired topic to the tunnel. The tunnel will then relay this topic using TCP and republish it on the remote machine, allowing you to subscribe to topics with large messages (e.g., images) over an unreliable network. I hope this will help!

edit flag offensive delete link more

Question Tools

3 followers

Stats

Asked: 2022-10-11 10:36:59 -0500

Seen: 646 times

Last updated: Oct 12 '22