How to Get Multiple Cameras on Robot

Hello everyone,
Attached is a guide to how to use multiple cameras on your robot. We didn’t find any documentation so we decided to put some up ourselves. The guide includes powering and setting up multiple cameras, along with modifying the dashboard to accommodate multiple camera feeds. Hope this helps.

Robodox Programming

The Robodox Guide to Multiple Cameras in FRC.pdf (1.6 MB)


The Robodox Guide to Multiple Cameras in FRC.pdf (1.6 MB)

Looks nice!

You should upload this as a white paper, so people will be able to reference it in the future.

Nice guide! If you’ve tried it, what frame rates are you getting when processing images from two cameras on the cRIO?

Awesome guide! I’m skeptical about the legality of wiring the second camera the way you said though. [R42C] and [R47] have me worried, probably just because they’re so general. Can you clarify how you know that method is legal?

We get 30 fps on the cameras. I am not 100% sure about legality but it should be okay because it should count as a custom circuit. I will try to check on it and update you.

I’m pretty sure that robot side code doesn’t do what you think it does. Have you tried comparing the objects you get back from the two GetInstance calls? I believe they will be the same and both point to the camera at .11 based on AxisCamera.cpp.

I am pretty sure they work because that is what we have in our code and we get back feed from both cameras. I know that specifying the IP address is necessary because without specifying we couldn’t see the camera. So I don’t think the GetInstance methods point to the same object if you specify the IP. Add anyways you specify the IP addresses in the Labview code for the dashboard so it shouldn’t matter.

Woah, 30 FPS is definitely fast enough. Is the robot running target tracking for two cameras, is the laptop doing the tracking work, or are the images just for driver convenience? You’re probably already aware that the frame rate on the dashboard isn’t necessarily the frame rate than the robot. (We know this from overlaying outlines of the target rectangles found by the robot on the image displayed by the dashboard.)

Is the robot running target tracking for two cameras, is the laptop doing the tracking work, or are the images just for driver convenience?

We are only using one camera for tracking, the other one is going to be for ball acquisition. We are trying to configure the laptop to do all of the processing and send the data back to the c-RIO because we don’t have a camera plugged directly into the c-RIO. Getting feed from both cameras is certainly for driver convenience, however it is worth noting that trying to view the feed from both cameras side by side at the same time gives us a significant amount of lag, but I think we will have a switch to switch between which feed we would like to view.

You don’t need anything in your C++ code at all to get feedback on your Dashboard from both cameras. The Dashboard requests separate streams from the camera that don’t require the cRIO to be present.

Looks good to me. The custom circuit in this case begins with the DC switching power supply’s leads, and ends with the camera.

Hopefully there’s a proper splice under the white electrical tape.

Also, you might want to consider a smaller circuit breaker. For custom circuits, the circuit must be protected with a 40 A or smaller value (or 30 A in the smaller terminals, by virtue of what Snap Action sells). But the blue box in [R43] suggests that smaller Snap Action VB3 auto-resetting breakers can be used in the PDB. Pick a value more appropriate to what you camera and power supply will draw.

How long did this take to do and how much weight is added the extra camera?

Thanks so much! Going to try.We’ll let you know how it works.

For the record, we implemented this a Bayou with a few modifications. First, we’re splicing into our exist camera power wires to power both cameras off the 5V supply from the PD. Secondly, we modified our dashboard slightly differently, pretty much completely copying the original camera loop so the dashboard would still work properly with a different team number, etc.