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.