In search of the perfect FRC camera

So I’m looking for a good camera for next year. Here are some things I really want in a camera:

Usable with a Linux host as a USB cam. Specifically, a Raspberry Pi, but really it could be any Linux platform. The Raspberry Pi isn’t the be all and end all of coprocessors.

Easy to use in the center of an LED ring. As long as retroreflective targets are present in FIRST, the easiest way to find them will be with a low sensitivity camera in the middle of an LED ring. The key element to make it easy is that off the shelf USB webcams are typically housed in nice plastic cases that don’t have any flat surfaces. The LED rings are hard to mount.

Responds to OpenCV camera adjustment methods. There’s a sort of standard API for ajusting sensitivity, resolution, and other parameters, but not every camera supports all of the methods. It’s kind of a pain.

Has generally good optics and responses.

We used this one this year: ELP megapixel Super Mini 720p USB Camera Module with 100degree Lens: Office Products

It was nice and easy to mount, but it didn’t respond to sensitivity adjustment parameters in OpenCV, so I couldn’t dial down the sensitivity for use with a light ring. Also, it had some sort of autoadjustment going on, so that the first several frames taken by the camera were much, much, darker than subsequent frames. it worked will for this year, but this year I had pretty good control of the lighting.

I used the Jevois camera for a few years. It’s form factor is nice, and it’s easily adjustable., and being able to run the vision algorithms on the camera itself was a major bonus. However, some of its optics were a pain. At higher gains, there would be artifacts introduced that played havoc with vision algorithms. Also, having only a serial port as a means of exporting data was a bit of a pain.

Lifecams and any other off the shelf cameras were in inconvenient cases, and some of them supported only a small number of configuration parameters.

So, what do people use that gives all of the above? Convenient, Adjustable and responsive to commands, and easily mountable?


It’s not perfect but we’ve found the Logitech C920 and it’s variants to be reliable when we aren’t using a Zed.


If you’re willing to look outside of USB cameras and are willing to 3D print mounting for it, the Pi Camera v1 is quite performant with many configuration options. It isn’t USB, but a number of other coprocessors have similar camera interfaces.


As a general thing, I’ll second the Pi v1 camera. I’ve found that a lot of the delay issues from vision processing (or even driver cam usages) are coming from the extra latency of a USB camera designed for showing video of your face over the internet. The Pi camera is more general-purpose, and in my experience has been way easier to make work nicely for most FRC robot applications.

V2 isn’t bad either sometimes, but it has some less-than-optimal binning strategies at low resolutions - basically, your field of view is reduced.

There’s lots of variants available on amazon for fairly cheap, and with many different lens options to meet a wide variety of needs.

Add in the slew of open-source software available to turn a Pi + camera into either a vision processing box, or an actual good version of what the Axis camera used to be, and it’s the best I’d recommend.


We have been using Logitech C930e cameras for the last ~4 years and like them. They are a bit wider angle than many others. The image and light response is pretty good. It does respond to OpenCV commands properly.

The one challenge is mounting them. We pull off the tripod mount and then put it in a 3d printed mount. (Don’t disassemble it down to the board; the cable connector will fail. We ruined 2 that way.)

1 Like

If I intended to stick with Raspberry Pi for a coprocessor, I would stick with the Raspberry Pi camera. However, what I really want to use is a Jetson or …whatever the next really awesome thing that comes out is, but it probably runs Linux. In other words, the Raspberry Pi camera meets most of the needs, but I want something more versatile, that can be used with something other than the Raspberry Pi.

Yep. Mounting. It has been a problem for us, and it’s a case where it is one problem that I cannot solve myself. I’m the software guy, and I can manage the electrical parts, but when it comes to CAD and 3-D printing, I have to rely on others, and sometimes, there aren’t enough student-hours in the day to get everything done on the list of things that need to get done, and I end up with some neat 3-D vision software, and nowhere to put it.

The Raspberry Pi camera modules are actually just 2-lane CSI cameras, and there is a huge variety of other ones available from Arducam et al. The Jetson Nano dev board, at least, has a pair of FFC CSI connectors, which means you can plug 2 RPi cams into it. They’re pretty much plug-and-play, except that you have to load the driver for the IMX219 sensor. (I think the Xavier NX has CSI ports too, but I’ve personally only played around with the Nano.)


It does but it depends on the Nano… the 2GB Nano only has 1, the early 4GB Nanos only have 1. The second iteration of the 4GB Nanos have 2.

Depends heavily on the camera and sensor. Not all of them are based on the IMX219 and there are some weird off-brand variants that don’t behave quite right… and then there is the Raspberry Pi HQ camera… which is a beast of a sensor but requires other drivers/modules.

It does. Two of them. And they, along with many other features of the Xavier NX, make it a glorious platform for all kinds of fun stuff.

1 Like

I did some experimenting with the ELP camera that I mentioned we had used this year. I could download a program from their web site to set parameters. If I could do that, I could set the parameters “offline”, i.e using a laptop, and then plug it in.

The parameters I needed were settable. I could make it so that nothing shows but those retroreflective targets, plus some easily filtered fluorescent lights, and then plug it in. Unfortunately, the settings don’t persist, so that if you unplug the camera and plug it back in, they have to be reset. Not practical.

I haven’t tried the Logitech that was recommended. I have a couple of similar cameras available in our back stock of cameras we have used for driver assistance that I might try later tonight.

This really shouldn’t be this difficult.

it’s pricy and my team has experienced some “jank” but the limelight 2+ is probably the easiest way to quickly get vision tracking up and running.

Just a warning that not all Logitech webcams are created equal. The C920 and the variants of it (C930, C930E, C922, and I’m sure there’s a C920WTFBBQ) are the ones that have consistently given us the least trouble.


2714 has entered the chat

Yes, no doubt. I have been tempted to recommend the purchase to our team, but, frankly, I don’t like it. It’s a little bit too “First specific” for my tastes. In other words, from what I have seen of it, I can’t imagine anyone purchasing it for any purpose other than FIRST Robotics. I wouldn’t learn anything by using it. The students wouldn’t learn much.

I don’t want to be too harsh on it. Integrating a purpose-built system is a demanding task for high school proto-engineers, so it’s not like they wouldn’t learn anything. It’s just a personal preference.

The subject came up with our last coach. We had a couple of options available, and a few hundred dollars to spend. We had a senior who was quite good who wanted to cook up a solution using an off the shelf camera and a Jetson. The coach asked me which one I would recommend, Limelight or Jetson? We couldn’t buy both. I asked him whether he wanted the most likely one to produce a win for the team, or the one that would result in something that our student could use as part of a college application or on a future resume.

We went with the “future resume” choice, i.e. we bought a Jetson.

And our autonomous didn’t work all that well. It tended to overcorrect, and occasionally followed a false target.

Yep agree on all your points.