Two Axis Cameras

Our team is trying to use stereoscopic vision this year on our robot, but we are having trouble using two Axis Cameras. We are using FRC Java. We can get the first camera with AxisCamera.getInstance("10.0.53.11’) and we can get the second with AxisCamera.getInstance(“10.0.53.12”) BUT we can only get one at a time. If we try to get both, both lines return the same camera. So if we try to get the one on 10.0.53.11 first, both lines will return that camera, and if the try to get the one on 10.0.53.12 first, both lines return the one on *.12.

Thanks for any help.

the AxisCamera is a singleton. So you would have to make a modified version of the AxisCamera class to be able to construct more than one.

Thank you for your response, would you have any idea how to do that, or know of any examples of something like that?

My team was able to achieve this in labview but not in Java, we are going to try this year. If you use labview i could be more of help so message me if you opt to labview.

You can get the source for the Axis Camera by extracting
C:\Users\YOUR_USERNAME_HERE\sunspotfrcsdk\lib\wpilibj.src.zip
Then going to edu\wpi\first\wpilibj\camera.
In that folder, there is the AxisCamera source file. From here, you should create a new class in your Netbeans project, and copy the entire source from AxisCamera.java into it.
(I would recommend changing the name of your new class to something like AxisCamera2.)

Alternatively, if you want to change the library class itself, you can edit the class to house an array of AxisCameras, and when you call getInstance, it doesn’t change a variable, but instead adds to an array.

Also, if you only need to access the camera for things like changing the settings at robotInit, you could add a method that nullifies the variable m_instance, so that you can construct a camera, use it, nullify the AxisCamera’s static camera object, and then construct the second.

Any of these should work for the Java front, but as the NativeLibrary is used for nearly every method, I’m not sure that that is all you have to do.

Do you need to instantiate two AxisCameras on your cRIO? What do you need to do that for?

I am afraid no one on our team has any experience with labview, we exclusively use Java and C++

We wanted to instantiate two Axis Cameras so we could use stereoscopic vision to tell the distance to the target (stereoscopic vision requires two cameras).

I talked with the rest of my team and we decided to just pull all the image processing off onto a different board like a raspberry pi, bypassing the CRIO.
Thanks for all your help

The Vision Processing paper gives a method to determine distance to the goals that does not require stereoscopic vision. What algorithm for stereoscopic vision were you planning to use?