Is OV4689 USB Camera Suitable for High FPS Puck Tracking in Robotics?

Hi everyone,

I’m working on an air hockey robot that needs a high FPS camera to track a fast-moving puck in real time.

I’m considering the OV4689 4MP 2K USB Camera Module for Face Recognition

Specs say it can reach 330 FPS at low resolution, and around 120 FPS at 1080p.

- Does anyone have experience using this camera with OpenCV for high-speed object tracking?

- Is it suitable for real-time robotics, or would a global shutter camera (like Sony IMX296) be a better choice?

- Any suggestions for low-latency, high-FPS USB cameras that work well with OpenCV?

Thanks!

I don’t have experience with that specific sensor, but here are my concerns:

  1. It was introduced in 2013, so it’s pretty old. There have been significant advancements in sensitivity over the past decade, and that will be important to you if you are planning on doing high frame rates. (particularly if you don’t have the ability to control the lighting)
  2. That camera has a USB 2.0 interface. In order to achieve 120fps at 1080p it will have to be mjpeg, so you have to be able to decode the frames before you can process them. That might not be an issue depending on your host processor, but it’s something to be aware of. If nothing else it will add latency to your pipeline and the image quality will suffer.
  3. 1080p resolution isn’t a natural fit for that sensor size, so they either are doing a 1.4:1 downsampling from the full sensor, or they are doing a native res ROI which uses a subset of the sensor. I’d shy away from the first option, but I would consider the second option to be acceptable.
  4. Even at 120 FPS you might experience significant rolling-shutter distortions, so for that reason I would prefer a global shutter sensor if that’s an option.
  5. If you can use a different interface, I would prefer that. USB 3 would be ok, but a MIPI connection would be better if that’s an option for your project.

Also consider how much processing power you will need if you will be doing this in real time. The jpeg decode or YUV→RGB conversion add to your processing load and latency, and that’s before you start your image processing.