Log in

View Full Version : Urgent- Python USB Camera not working


onenerdyguy
23-02-2016, 18:22
I'm having difficulty getting the MS Lifecam to show up on our robot. We have an axis camera currently, that's working great, but I can't get a second USB cam setup. We want a rear-view camera to help with intake, but we're having issues.

Current code:

camera = wpilib.USBCamera()
camera.startCapture()
server = wpilib.CameraServer()
server.startAutomaticCapture(camera)

When I go onto the Roborio, I can see the lifecam plugged in and recognized on it's web interface. However, even by going to the default dashboard, I can't get any image on the DS. Am I missing something?

razar51
23-02-2016, 19:30
You might check that the roborio didn't give your camera a different name. The default name for the camera that the code you have there assumes is 'cam0'.

Last year we had an issue where, when testing different cameras, the roborio would increment the number of the name given to the camera (cam1, cam2, etc.)

We solved this by doing something similar to the following and then using the default dashboard set to HW capture:


camera = wpilib.USBCamera(b'cam1')
server = wpilib.CameraServer.getInstance()
server.startAutomaticCapture(camera)


You can find the name the roborio gave to your camera by having it plugged in and then using the USB interface to connect to the roborio in a web browser (172.22.11.2). It should list the names of the devices connected to it,

Arhowk
23-02-2016, 23:20
roborio in a web browser (172.22.11.2)

use roborio-team-frc.local if at all possible. 172.22.11.2 is only valid over a USB connection. the mDNS address is accessible via wireless, ethernet, and probably USB (I've never actually tested using mDNS over USB now that I think of it...)

virtuald
23-02-2016, 23:35
If you're using the LabVIEW dashboard, you have to have the beta version of pynetworktables installed, or it will not connect. See https://github.com/robotpy/robotpy-wpilib/issues/172

WubbaDuck
24-02-2016, 07:48
We spent a bunch of time trying to get the USB camera to work correctly. The result was a very laggy robot. No joke, it was around 1-2 seconds of delay with the camera enabled. Then one of our guys discovered a post in the forum about using mjpg-streamer instead. It was super easy to install and works like a champ! There is also a smart dashboard plugin that allows you to have direct dashboard output. You can find more info here: https://robotpy.github.io/2016/01/14/mjpg-streamer-for-roborio/

onenerdyguy
24-02-2016, 09:02
We spent a bunch of time trying to get the USB camera to work correctly. The result was a very laggy robot. No joke, it was around 1-2 seconds of delay with the camera enabled. Then one of our guys discovered a post in the forum about using mjpg-streamer instead. It was super easy to install and works like a champ! There is also a smart dashboard plugin that allows you to have direct dashboard output. You can find more info here: https://robotpy.github.io/2016/01/14/mjpg-streamer-for-roborio/


This is exactly what we found last night, at 11:30 pm. We got the camera working, but lag was horrendous. By dropping the quality, we got the lag down to about half a second, but still not usuable.

I pulled the camera off, and will be working on getting mjpg-streamer setup.

Are you running yours off the RoboRio, or off like a raspberry pi? I do have a spare roboRio we ordered I can practice the setup on, so that when we get to competition I can quickly deploy it.

onenerdyguy
24-02-2016, 09:06
You might check that the roborio didn't give your camera a different name. The default name for the camera that the code you have there assumes is 'cam0'.

Last year we had an issue where, when testing different cameras, the roborio would increment the number of the name given to the camera (cam1, cam2, etc.)

We solved this by doing something similar to the following and then using the default dashboard set to HW capture:


camera = wpilib.USBCamera(b'cam1')
server = wpilib.CameraServer.getInstance()
server.startAutomaticCapture(camera)


You can find the name the roborio gave to your camera by having it plugged in and then using the USB interface to connect to the roborio in a web browser (172.22.11.2). It should list the names of the devices connected to it,

Also, this fixed our issue with getting it to work, but then the lag came in. We'll figure it out!

virtuald
24-02-2016, 09:40
In 2017, I'll be removing the CameraServer class in python and throw an exception telling the user to use mjpg-streamer instead. As you've seen, it's very low performance, and is just a lot of trouble in general.

WubbaDuck
24-02-2016, 10:52
This is exactly what we found last night, at 11:30 pm. We got the camera working, but lag was horrendous. By dropping the quality, we got the lag down to about half a second, but still not usuable.

I pulled the camera off, and will be working on getting mjpg-streamer setup.

Are you running yours off the RoboRio, or off like a raspberry pi? I do have a spare roboRio we ordered I can practice the setup on, so that when we get to competition I can quickly deploy it.

We installed it directly on the RoboRio and saw no noticeable slowdown.

onenerdyguy
25-02-2016, 16:21
We spent a bunch of time trying to get the USB camera to work correctly. The result was a very laggy robot. No joke, it was around 1-2 seconds of delay with the camera enabled. Then one of our guys discovered a post in the forum about using mjpg-streamer instead. It was super easy to install and works like a champ! There is also a smart dashboard plugin that allows you to have direct dashboard output. You can find more info here: https://robotpy.github.io/2016/01/14/mjpg-streamer-for-roborio/


I'm having some trouble installing this. I'm using our backup roborio, and made sure it's all up to date.

I download the opkg file using the installer.py and then attempt to install it on the RoboRio via the installer as well. However, I get the error that libjpeg8 packages are found, but are not the right arch. However, they are listing as cortexa9.

Is there a trick to this? or should I try the online install?

virtuald
25-02-2016, 16:29
I'm having some trouble installing this. I'm using our backup roborio, and made sure it's all up to date.

I download the opkg file using the installer.py and then attempt to install it on the RoboRio via the installer as well. However, I get the error that libjpeg8 packages are found, but are not the right arch. However, they are listing as cortexa9.

Is there a trick to this? or should I try the online install?

You should upgrade your roborio to the 2016 image.

onenerdyguy
25-02-2016, 16:41
Bah, I did the firmware, but missed the image. I am dumb.