OpenCV, raspberry pi 3, and radio throughput


We are currently using a raspberry pi 3 for our vision. We’ve coded up an app using opencv (not using grip) app that grabs a frame from the camera and forwards the output to our driver station. We had to code our app to send jpeg image (160x120 image @ 5 FPS) with jpeg quality at 60. The jpeg is transmitted to the driver station via UDP where it is displayed via another opencv app. I would to push the a faster frame rate, but due to the radio link that was the best we could do. It did allow for nearly real-time view of the field from the bot.

I was wondering sizes and frame rates are rest of you using?

I am wondering if we might be doing something inefficient in our code if the rest of you are able to do better FPS with larger images.

K Murphy

We are doing 480x320 at 15 fps. I’m not sure what our compression rate is, but a stream occupies about 1.5 Mbps. We are able to run two of them (i.e. two cameras). We’re running mjpg_streamer (two instances) on the RPi3, which are consumed by the SmartDashboard on the drivers station PC, plus a GRIP-generated pipeline process on the RPi3.