Using cameras

What applications have teams used before for the camera in the KoP? I don’t mean like vision targeting, or tracking. More like the camera is placed in a specific part of the robot so teams can get a better view of something.


I think I get what you’re asking…

Last year, we considered (but did not) putting the camera on the tray for our minibot, to make deploying easier, and putting it on our lift, to make hanging tubes easier. In the end, we decided to put it in the middle of the robot, on a servo powered turntabble.

When we got to competition, for whatever reason, the camera crashed our whole control system, so we tore it off.

Last year we had our camera set up so that it would be facing forward during the match to assist with grabbing tubes and scoring, and during the final part we would turn it around and use it to assist with scoring the minibot. during the match we could control the camera’s direction with a separate joystick if we so desired.

To get the images from the camera to your driver station you’ll need to code it in. For C++ and I believe Java you’ll want to look into the PCVideoServer class in the WPI Library. I don’t know how you’d do it for LabView though.

Also, be prepared for some lag. When our team did used it two years ago we had about 1-2 seconds of lag. It might be better this year but I wouldn’t expect it to be lag-free.

For logomotion we used the camera aimed in front of us to assist with seeing in picking up tubes.
For the lag issue, on the netbook there was 1-3 sec of lag, however when we used a modern laptop (Intel i5) the lag went away…

With the newer radios, you now have two ways of getting video to the laptop. If using an 8-slot cRIO, you can connect the camera to the second port, have the cRIO read and retransmit to the laptop. This was called the PCVideoServer for C++ and Java. This was done automatically for LV as long as the camera was opened. This form of video server puts a bit of overhead on the cRIO and from my experience the lag can be as low as 0.5 seconds, but if you aren’t careful, you can load up the cRIO or the dashboard, or you can misconfigure the PCVideoServer, and the lag will grow to be up to five seconds.

If using the newer radios that include a switch, you can connect the radio directly to the switch, and the dashboard laptop can request a second stream directly. No overhead at all for the cRIO, and when using MJPG, the latency is very small. I’ve had three cameras streaming before. You will need to update the dashboard in order to do it this way.

Greg McKaskle

We placed the camera just under the bumper / above the intake in 2010, only sending the result to the driver station (it wasn’t used for anything on the robot). It was definitely useful for finding balls hidden behind bumps that year, since we often played the middle and back, and balls (as Murphy would predict) tended to roll right where you couldn’t see them!

Interesting factoid: the camera was mounted upside down so it didn’t interfere with our pincher. There’s a setting in the camera to flip the image for you, so we didn’t even have to do that in code anywhere.

We used a custom dashboard to display the camera image (it’s posted somewhere on CD), not the labview one, which gave us a near-realtime 30 fps view at the driver station.

Very curious, do you what this dashboard is called? I’d really like to give it a try!



It was likely ZomB. Any dashboard which directly requests MJPGs from the camera will get high framerates. The default dashboards for LV and I suspect Java shipped with the Video Server option as the default, but were easily changed to use the MJPG.

Greg McKaskle

For Lunacy, we mounted the camera on the front of the robot, pointing down aimed directly in front of our floor intake. A live feed was streamed back to our driver station. This helped us pinpoint and collect empty cells to take back to the human players and exchange for super cells. We received an innovation award at IRI that year for the setup (I believe that was the last year IRI distributed judged awards).