0
$\begingroup$

Rosanswers logo

I am currently running a ROS package (publishing multiple topics including image topics) on multiple computers connected wirelessly using http://www.netwifiworks.com/PicoStation-M.asp. 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/


Originally posted by pnambiar on ROS Answers with karma: 120 on 2018-02-15

Post score: 0


Original comments

Comment by gvdhoorn on 2018-02-16:
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.

Comment by pnambiar on 2018-02-16:
Sure! Done.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by Gayan Brahmanage with karma: 929 on 2018-02-15

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by pnambiar on 2018-02-16:
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?

Comment by gvdhoorn on 2018-02-16:
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.

Comment by pnambiar on 2018-02-16:
max data rate of 54 mbps is what we have for this wireless access point (https://dl.ubnt.com/datasheets/picostationm/picom2hp_DS.pdf). So compressing the image and reducing the rate are the two options available I guess?

Comment by gvdhoorn on 2018-02-16:
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).

Comment by pnambiar on 2018-02-16:
Thanks for the suggestions. I will definitely take a look at it.

Comment by pnambiar on 2018-02-21:
@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?

Comment by gvdhoorn on 2018-02-21:
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.

Comment by gvdhoorn on 2018-02-21:
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.

Comment by pnambiar on 2018-02-22:
I tried imagezero. Did not see a big difference in terms of speed. I will try ffmpeg or gstreamer

Comment by gvdhoorn on 2018-02-23:
It could be that you're still running into bandwidth issues, that would limit your FPS regardless.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.