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

streaming high resolution image data over a wireless connection

asked 2018-02-15 10:57:02 -0500

pnambiar gravatar image

updated 2018-02-16 12:55:47 -0500

I am currently running a ROS package (publishing multiple topics including image topics) on multiple computers connected wirelessly using . While I get pretty good frame rate on master computer, the frame rate is pretty low on the listener computer. What is the solution? Image compression/ -P

edit retag flag offensive close merge delete



May I suggest a topic title change? Your question title is "running ROS on multiple computers", but in reality you are looking for suggestions on how to stream high resolution image data over a wireless connection. Those two don't match up.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-16 12:53:38 -0500 )edit

Sure! Done.

pnambiar gravatar image pnambiar  ( 2018-02-16 12:56:10 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2018-02-15 12:45:10 -0500

Gayan Brahmanage gravatar image

Hi there, Normally, Images such as RGB-D images are relatively large and it is not possible to transmit via a wireless network at 30Hz. You can publish some filtered images with reduced rate depending on your application, or you can do some processing on the publishing PC and publish processed data to your subscriber.

edit flag offensive delete link more


Thanks for the response. It is infact RGB images from monocular camera (1920 X 1080) and we are using a NVIDIA jetson TX2 as the master. We are currently doing some processing onboard and would like to publish the output images at about 6- 15 fps using a wireless network. Is that doable?

pnambiar gravatar image pnambiar  ( 2018-02-16 08:57:22 -0500 )edit

Well, the calculation is as follows: (1920x1080)x4x6~=47.5MB/s. For 15 fps it would be approx 118MB/s. That is just the bandwidth for the image stream, not including any messaging / protocol or API overhead. Remember that sensor_msgs/Image is in essence a raw, 32bit, uncompressed frame.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-16 09:00:33 -0500 )edit

max data rate of 54 mbps is what we have for this wireless access point ( ). So compressing the image and reducing the rate are the two options available I guess?

pnambiar gravatar image pnambiar  ( 2018-02-16 10:23:34 -0500 )edit

I believe so. 54mbs is 5.4MB/s in the absolute best case and only one way (simplex). You could take a look at image_proc/resize and some of the image transport options (like theora, or imagezero_transport).

gvdhoorn gravatar image gvdhoorn  ( 2018-02-16 11:12:32 -0500 )edit

Thanks for the suggestions. I will definitely take a look at it.

pnambiar gravatar image pnambiar  ( 2018-02-16 12:49:13 -0500 )edit

@gvdhoorn I have everything working with image transport theora. Now, the bottle neck is compression. For a stream of 640 X 480, frame rate reduces to 20fps from 30fps on a Nvidia Jetson TX2 For high res imagery (1920 X 1080) it reduces to 3fps from 30fps. Are there better compression packages?

pnambiar gravatar image pnambiar  ( 2018-02-21 12:32:36 -0500 )edit

Did you try the imagezero_transport? CPU usage should be much lower - but compression ratios are also probably not as good as theora.

I seem to remember there also being a hw-accelerated/assisted h264 transport, but I can't find it any more.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-21 17:07:51 -0500 )edit

If you're not tied to using ROS for transferring the video stream, using ffmpeg and / or gstreamer might also be an option. gscam is capable of picking those streams up and then publishing them as regular images again.

gvdhoorn gravatar image gvdhoorn  ( 2018-02-21 17:09:04 -0500 )edit

Question Tools



Asked: 2018-02-15 10:57:02 -0500

Seen: 675 times

Last updated: Feb 16 '18