Is there a way to detect if the UsbCamera is present or not?
If we don’t have the camera plugged in and start a CameraServer, we get the periodic
CS: USB Camera 0: Connecting to USB camera on /dev/video0
Not a biggie, but trying to get the console noise down so we can see the important stuff. If we knew it wasn’t there, we wouldn’t do a
CameraServer.getInstance().startAutomaticCapture();
With your camera(s) plugged in, you can run this to discover static device paths (these won’t change between restarts, unlike /dev/video*):
ls -l /dev/v4l/by-path
You can use this in the startAutomaticCapture method:
CameraServer.getInstance().startAutomaticCapture("<name>", "/dev/v4l/by-path/...");
An alternative would be to setup a udev rule to automatically map those long (and ugly) paths to simple ones like “/dev/drivercamera” or “/dev/visioncamera”. I think these will be device-specific, so replacing a camera might require changing the udev rule; it may also be possible to make it USB-port specific. You’d have to do some research on that, if it’s the route you want to take
I’d guess you were more interested in this…
if (new File("/dev/video0").exists())
CameraServer.getInstance().startAutomaticCapture();
yepper, that’s where we landed.