Best Wide-Angle Camera for Driver Vision?

Just wondering what y’all recommend for this purpose. Probably a great addition to an effective robot, with the Hub so much in the way this year. Thanks for any ideas or links.

Mr. N

3 Likes

I enquired about this a few months ago and @jjsessa recommended something similar to this from Amazon

2 Likes

The title already mostly reflects this but for those reading, this camera will not work for your vision tracking. The fisheye lens does not work well with the pinhole model that many vision systems use for various calculations.

I can recommend this camera

If you need vision calculations you can do camera calibration:
https://docs.opencv.org/3.4/dc/dbb/tutorial_py_calibration.html

This is a similar one (except a bit higher resolution) to @Nick.kremer 's suggestion, but it’s worked well for us over the past few years.

Bought these as well. Easy to print a housing on a 3D printer.

3 Likes

We went with this Sony camera from Amazon. Also like what Nick.kremer recommended, but higher resolution. It is already cased, but very small and with a solid 180* field of view. It also has a nice long USB cable, so no need to put on an extension cable even if your doing something like mast mounting the camera. I mentioned this camera in another thread because we will be using more of them in the future due to the vastly better view they give our drivers.

1 Like

Any chance you’d be willing to share your housing CAD?

1 Like

Yes… once I find it. I realized after posting that I didn’t know where it was!

1 Like

And… I’m not finding it anywhere. 15 CAD files with camera in the name, none for this one. If I stumble upon it in the next day or two I’ll post it. Otherwise, I’m sure you can manage one!

Here’s the STEP file for the case I designed back in 2019 for use with these cameras, there’s a 0.5" pitch hole pattern for #10 bolt on the back for mounting. I believe it uses 8-32 bolts to hold the case closed.

https://drive.google.com/file/d/1X_qyAky7JzdZOg7sMsa2u1xRjVrdOv_G/view?usp=sharing

4 Likes

One thing I learned the hard way is to look for a camera that supports a low enough resolution in a low framerate (FPS). We bought a 170-degree ELP camera that does 1080p@30fps, 720p@60fps, down to 320x240@120fps. It doesn’t have any low resolution paired with low framework options. If we want to get a 16:9 picture it causes loop overruns on the roboRIO. Additionally, we cannot run two of them simultaneously because there isn’t enough USB bandwidth.

Same problem here. Bought a camera that @xszym recommended in their post, but the lowest resolutions is 640x320@30FPS and runs about 5-9Mbs ( just over double the total allowed bandwidth for comp).

It looks like we could use CvSink and SvSource and downscale the video stream, and thus greatly reduce bandwidth, on the RoboRIO, but I can’t find an example of how to do this. Any suggestions? You could even try skipping every other frame to go from 30fps to 15.

You don’t need to do this yourself. The dashboard sends settings for resolution, compression, and frame rate; if the resolution or compression are different than what the camera provides, the camera server automatically scales, and it automatically frame drops to meet the requested FPS.

Note this scaling is done on the CPU and involves both decompressing and recompressing the image. You will see significantly higher latency and CPU utilization. Unfortunately this is something the Rio isn’t good at due to its limited CPU, which is why many teams use Pi’s or other coprocessors which have beefier CPUs.

1 Like

Thanks @Peter_Johnson this saved fixed our camera for competition this weekend. I had’t realized the dashboard controls could changed the source stream resolution as well. For the record on a RoboRIO 2.0, converting from 640x420 30FPS to 320x210 20FPS increased cpu utilization by about 12%. This put us at about 65% overall, so totally acceptable until our new camera arrives.

I CANNOT recommend this camera. We bought a version of this camera with an external case and mount. First problem is that the minimum resolution and frame rate is 640x480@30FPS. Well over the bandwidth limit requiring the Rio to spend CPU downscaling the stream (just 12% cpu on a Rio 2.0, but still).

The second and primary problem was that this camera connects ground to the metal case and when we screwed the metal mount to our metal robot, we had a the negative lead grounded to our robot’s chassis. We would have failed robot inspection if not for some genius level EE mentors with a multimeter. We isolated the mount from the robot frame to solve the problem, we are going to try the ungrounded (we tested it) Sony model that @Strategic recommended.

1 Like

Just an update, we have decided (for now) to run only the Sony camera we got on this recommendation, and have removed the Limelight II altogether (though we’ve kept the mounting, just in case we change it again). It took some work but the programmers came up with a low-latency view that will help our driver quite a bit in his efforts to hunt balls on the opposite side of the field.

2 Likes