Human Vision Camera compatiable with FMS & Java ?

Anyone know a specific camera model (probably Axis) that is known to work seamlessly as a human vision camera with

  1. A Java programmed robot
  2. FMS
  3. Windows say 8.1 or 10 laptop with smart dashboard and
  4. IE or Chrome (with no special kludges)

We are now told the Microsoft LifeCam 3000 is incompatible with FMS (at least in a java environment). Our Dlink IP camera will not work with IE or Chrome possibly with FMS a possible cause contributor.

I am told FIRST recommends a specific AXIS camera but no amount of searching on their site finds that document.

We used a LifeCam 3000, with few problems at Bayou in Week 3. We also use Java. We also used a Genius 120 degree camera on our intake side as well and had a button to switch the video feeds. The only problem we had was a single match where SmartDashboard wouldn’t connect to the robot for some reason, but I don’t think that had anything to do with the camera.

Could you give details on who is telling you that the Lifecam 3000 is no longer supported for Java?

https://wpilib.screenstepslive.com/s/4485/m/24194/l/288981-using-the-microsoft-lifecam-hd-3000

That URL makes it sound … supported. The other camera setup page for Axis calls out the Axis 206, Axis M1011 and Axis M1013 as being supported. In reality any Axis camera that supports their Vapix API would work with WPILib API. And Driver Cameras don’t even need any of this. They will most likely support an MJPEG stream or H.264 stream or similar, and the compatibility is then up to the dashboard viewer to connect to the stream. I’ve seen a number of teams use a web browser opened to the stream.

By the way, lots of USB cameras will also work. I’ve had good luck with the Logitech 310 and 270. They cost far less than Axis and typically less than an IP camera. They do place a bit processing load on the roboRIO CPU, but that isn’t typically an issue.

Greg McKaskle

Just a small bit of info, I’ve heard that no USB web cams were working over FMS at North Bay.

We were told at the North Bay regional when our 3000 would not work when connected to FMS but worked otherwise that FIRST knows of an issue with FMS and the 3000. I can’t remember for certain if they said it was related to Java or the smart dashboard. We had the same problems at Greater Toronto Central Regional in week one.

Its critical we have a reliable trustworthy camera feed going for champs.

What was your Microsoft LifeCam HD-3000 connected to, that connected it to the network, that interfaced with FMS?

Was it on a co-processor like the Kangaroo or something running Linux?

I totally agree with Greg as I see no reason to believe that a Microsoft LifeCam HD-3000 camera won’t work with FMS.

I do see reasons why the Microsoft LifeCam HD-3000 camera might not work very easily with Linux in general. The RoboRIO runs a distribution of Linux so therefore there are issues I have seen and documented in another topic on ChiefDelphi between the Microsoft LifeCam HD-3000 and the RoboRIO. These issues very easily could be annoying to deal with when using Java on the RoboRIO even directly to Video4Linux. They are likely as bad if you use Java-to-OpenCV-to-Video4Linux or something like GRIP-to-Java-to-OpenCV-to-Video4Linux.

I also agree with Greg - Logitech makes a lot of similar and cheaper webcams that work just fine with the entire FIRST control package with the current distribution of Linux. The Logitech C920 USB camera works just fine to the default FIRST dashboard (you need a bit of Java code to get the RoboRIO to stream to the driver’s station) and you can switch the camera that sends if you have multiple in Java I’ve tested it (there is a short delay). However, as a USB camera, the Logitech C920 doesn’t work to a plain old web browser all by itself (you need to add more software to make that happen).

The Axis cameras are fine webcams and any model Greg also listed will do the job. Just be aware you may need to give it a static IP to get it working on a real field and that may make testing in the pit interesting. More than one Axis camera might also be a challenge.

But IP cameras were?

How were you told of this? Were they an official of some sort?

Greg McKaskle

As I posted earlier, the LifeCam was tested during beta as were a number of other USB cameras. This doesn’t mean that every aspect worked perfectly, or that the tests were super thorough, but I do not believe that any official channels have made any such statements about the LifeCam 3000 and FMS.

So, can you give details on what worked, what was tried, what error messages you received, etc?

The default dashboard will open a TCP connection on port 1180 to the roboRIO’s IP address. It will then read the stream that encodes a jpeg preceded by a version string. This code is identical to last year, and was even used since 2009 for IP cameras that were forwarded through the cRIO. I assume that the SmartDashboard does something very similar.

Greg McKaskle

The 3000 is a usb camera directly plugged into the roborio. No offboard processor etc. Absolutely vanilla installation. There were other teams there with 3000s that would not work either.

Our Dlink IP camera set on a fixed IP would not work in IE or chrome on the driver station but would work with some special kludges in Firefox.

For a working USB camera, our team had two Logitech C920 cameras working at two competitions so far.

Did you guys put the Java code into the RoboRIO to start the camserver?
Did you make sure to put the code into the correct place in the code to insure it started running at the correct moments?

There are some examples of how to do this, which do work, in the sample work for Eclipse.
I can provide some pretty detailed instructions to get to this sample if anyone wants them.

Two FIRST tech people (CSA and I believe the FTA) spent a lot of time, twice with us on the field, the second time during lunch (20 minutes). I believe they must have called FIRST central support. At the end they said FIRST knows of a technical compatibility issue with the 3000 and FMS

I will shortly contact FIRST tech support.

Did your team program in Java ? Did you make use of the smart dashboard ?

I will add that FRC11 has a Logitech C920 on their robots, running in Java, connected to the RoboRIO and no one has come to me with any issue. We even hosted a week 1 district event where I was a CSA and there was no issue at all.

Fair note: if your Java code has an issue starting the camera server correctly it may not matter what USB camera you use it may not work correctly. When FRC11 first connected the Logitech C920 they didn’t put the Java code and in there so it did not work. I can also see it being possible someone could fail to start the camera server on the RoboRIO the way it should be and make a problem at that point. The sample code for Java in the Eclipse editor gives a great place to start so that you don’t say - try to instantiate the camera server in teleop ;).

If you could send me some links, I will verify everything with the lead programming mentor.

Everyone: Please remember the 3000 worked fine via wifi and tethered at all times outside of a regional. It only did not work when connected to FMS.

I am going to direct quote my directions from an e-mail I sent to my students on FRC11:

This was tested this evening (2/28/2016) with the Logitech 920C on my robot configured as Team 11:

DriversStation: 16.0.2
RoboRIO: FRC_roboRIO_2016_v19 aka Update 1 (2nd of the 2016 season)
Oracle Java: 2016 Java Release 4
Pnuematics Control Module: 1.65
Power Distribution Panel: 1.40
Talon SRX: 2.0

I setup the NI SmartDashboard like this:

  1. Setup button, 3rd down on the left of the bottom DS panel.
  2. Dashboard Type: Default
  3. DS Protocol 2015
  4. Top panel bottom right of video pane, select ‘Camera Off’.
  5. Select: ‘USB Camera HW’

Upload the WPILib Simple Vision example from Eclipse setup for JAVA:

  1. File -> New -> Project
  2. Select: ‘Example Robot Java Project’
  3. Scroll down to: ‘Complete List’
  4. Select: ‘Simple Vision’ 5th item up from bottom of that section.
  5. Click: ‘Finished’ at the bottom right.

Open ‘Simple Vision’ code:

  1. Expand in left project column:
    ‘Simple Vision’ -> ‘src’ -> ‘org.usfirst.frc.team11.robot’ -> ‘Robot.java’ -> ‘Robot’
  2. Double click 'Robot to open code for it.

Check USB camera configuration:

  1. Connect USB tether to robot.
  2. Open web browser and go to: 172.22.11.2
  3. Scroll down in second column from the left of the browser till you find:
    USB symbol labeled: ‘HD Pro Webcam C920’
  4. Note the name it’s usually ‘cam0’.
  5. If that’s not ‘cam0’ find it in the code and change the line that looks like:
    server.startAutomaticCapture(“cam0”);

Upload the code to the robot:

  1. Right click in the project column (left most): ‘Simple Vision’.
  2. Scroll down to: ‘Run as’
  3. Click: ‘WPILib Java Deploy’

Code should upload to RoboRIO.
Display should start on NI Smart Dashboard.
See attached picture as evidence.

Do you want me to upload the sample code?
I would like to see your code, as I am sure Greg would as well.

Everyone: Please remember

I didn’t forget this information, and I don’t think others have either.

I think the primary mechanism for the FMS to break your USB camera is by changing the timing of when the client and server apps start and finish their connection. I saw very similar issues with a team at the Bayou regional and who developed a process to work around the issues.

There is, by the way, no official statement about what USB cameras are compatible with or incompatible with the FMS. The FMS should have no impact on whether a particular USB camera works. To the FMS, the images are simply data in a TCP stream.

I’d also like for you and all teams to have a reliable camera for championships – and all the events. In order to look into this better, can you summarize which dashboard you are using and how the camera is being served on the roboRIO?

Greg McKaskle

Greg and techhelpbb: Thanks for the input. Sorry I was away. Our team has a quite high level of technical expertise. We have been at it for over a decade. We did do (AXIS) camera based target tracking a few year ago. We are pretty good at following installation instructions and the MS 3000 worked fine everywhere except on the field. We program in java and have a fairly advanced smart dashboard with the low res camera view in a window. We have heard of a number of other teams also having usb camera issues when connected to the field but then we have heard of teams with 2 cameras working fine. We attempted to contacted FIRST a week ago but have not heard anything back. We have decided to focus on a supported AXIS IP camera for the worlds as we just cannot afford to risk what happened at our two regional s.

For anyone, if your USB camera worked at a regional, it would be nice to know

  1. did you program in Java
  2. do you use the smart dashboard
  3. what version of windows did your laptop use
  4. what resolution you used for the camera

Since this thread touches on FMS networking, I’ll post a link to the most recent FMS Whitepaper that explains how all of it works:

https://wpilib.screenstepslive.com/s/4485/m/24193/l/291972-fms-whitepaper

The main point is that FMS is “just a network” and only communicates with your DS (not the robot).

Can your team provide the robot code? Private message would be fine.
If you send it to me I will only forward to Greg or FIRST.

It is no skin off my back if you do not want to use a USB camera at all.
I would, however, like to find a root cause for the issue.