ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A answers.ros.org

# Further Optimization suggestion for wireless openni streaming

Let me first describe the system that I've came up with..

I have two Odroid-U3 with Asus Xtion Pro Live and Wifi. Both of them run the

 roslaunch openni2_launch openni2.launch


with the video resolution changed from VGA to QVGA...

The base station system (my computer) decompresses

 /cameraX/depth_registered/image_raw (compressedDepth)
/cameraX/rgb/image_color_rect (compressed)


and synchronizes

/cameraX/rgb/image_rect_color_unsync (decompressed)
/cameraX/depth_registered/image_raw_unsync (decompressed)
/cameraX/rgb/camera_info


/cameraX/rgb/image_rect_color_sync
/cameraX/depth_registered/image_raw_sync
/cameraX/rgb/camera_info_sync


which the rgbdslam node subscribes to; where X may be 1 or 2.

They are both connected to a wireless N-lite router which bandwidth may reach upto 150 Mbps.

Using Wifi Analyzer Android App, it detected no other wifi signal in the same channel as the current wifi network.

Result: It is somewhat smooth but there are times when it drop frames. Running only one openni2 streaming do not really drop frames.. I therefore concluded that it was due to wifi bandwidth.

The further optimization that I can think of are..

1.) Instead of transmitting colored images, transmit only grayscale images.

2.) Rethrottle frame rate around 15fps only.

Questions..

1.) What are other optimization suggestions I can do?

2.) running openni2_launch openni2.launch does not advertise grayscale image. What ros parameter should I include in the openni2.launch in order to generate /camera/rgb/image_rect_mono?? Because running imgproc node DO generate image_rect_mono

3.) Using dynamic reconfigure, the openni camera can only be rethrottled to 30 fps.. I tried 25 fps but it did not work. How do I rethrottle it to 15fps?

EDIT: I tried running the dynamic reconfigure and set to data skip to 1. I assume this means it will publish 1 in every 1 frame. It should mean no difference. However, it seems after setting data skip to 1, the frame rate starts to decline and wants to approach zero.

When data skip is set to 0

When data skip is set to 1

(/upfiles/14062739298942344.png)

as of 15:39, the frame rate is 16.559 and still keeps on decreasing.

edit retag close merge delete

I was trying to run rgbdslam over multiple machines, but the speed of mapping is very slow ,Have you solve this problem?Can you advertise some advice?Thanks in advance.

( 2014-11-19 20:28:41 -0500 )edit

Sort by » oldest newest most voted

The original openni_camera node has a data_skip parameter which can instruct the driver to only publish 1 in every N frames. openni2_camera is not nearly as well documented, but perhaps it has a similar parameter?

more

Initially, data_skip is set to 0. I tried to set it to 1. If the driver now will only publish 1 in every 1 frame, there should be no difference right? I have attached a screenshot above. As time progresses, the frame rate seems to decline and wants to approach zero. Why is that?

( 2014-07-25 02:36:59 -0500 )edit
1

I think setting data_skip to 1 will drop every other frame; it's probably approaching 15, not 0. Try setting the window parameter in rostopic hz to something that isn't infinite, to get better readings:

rostopic hz -w 120

( 2014-07-25 03:08:33 -0500 )edit

You should also look at your router's configuration.

Some of those routers have a QoS - in you case seems to be QSS or something like that - and those CLAIM to prioritize multimedia, and other sort of traffic. You would expect that feature to prioritize your video stream, right ? Yeah...

I have a similar model and, let's face it, it is a cheap router, with simple resources. Very good for home use, but now we are talking robots, and high speed data.

Just turn that off. It messes with your bandwidth in ways you cannot imagine, not really making it better.

more