Q: Can I put the Kinect on my robot to detect other robots or field elements?
While the focus for Kinect in 2012 is at the operator level, as described above, there are no plans to prohibit teams from implementing the Kinect sensor on the robot.
I don’t know why, but this makes me a little worried. While Kinect already has enough trouble as it is, will this benefit the game this year for the better or worse? Will it determining factor for the success of teams this year? How do you think they’ll incorporate it into the game this year?My guess is something with the human players, but other than that they’ve got me stumped
I think it may be a challenge making the kinect talk with the bot… event he new CRIO II doest have USB IIRC (some of the non-frc cRIOs have usb though). sure, you could route the two data wires to existing I/O, but even that could get hairy.
Team 341 will be demonstrating our 2011 robot controlled via Kinect during the lunch break at Ramp Riot on November 12. Expect to see something that looks a little like an air traffic controller trying to land a tube onto the scoring rack…
I, nor any other beta tester, do not have any better an idea of what will be done with the Kinect in 2012 than you do at this point. I speculate that this will be used for a hybrid/auto mode, but that is not substantiated by anything other than intuition.
I’m curious if the Kinect itself, or external software processing what the Kinect exposes at its APIs, will give more accurate results if the person/objects in its field of view have special shapes or colors.
Would gluing a white roll of toilet paper onto a trash can lid painted black create an easily discerned (better than a random human infront of a random background) target to track (depth and color)?
Would pink tennis balls stuck onto a person, who is standing in front of a flat green bedsheet, improve ones ability to track the person’s motions?
PS: I’m sure that the answers to my questions exist somewhere out in the Internet information stew. My hunch is the CD folks reading this thread will do the research for me and supply a nice summary answer (plus a few red herrings of misinformation that I’ll have to detect and filter out).
However, instead of thinking of myself as lazy right now, I’ll choose to consider my questions good mentoring that inspires students to do research.
There are two pieces of software you can modify that bring the Kinect data to your bot. There will be a “server” running on the driver station pc. The server talks to the Microsoft Kinect SDK/ for access to the sensor data. There will be a default build of this which pumps back some softball type of data to the bot (right now, it uses your arms as virtual joysticks). All indicators point to the source code being bundled with this, so you can modify as you wish. I haven’t had a chance to look at the source yet, so I can’t comment on how much of it is custom vs how much leverages MS’s APIs (its bundled in an MSI and seriously, who owns a Windows machine these days? )
You can also process parts of this on the cRIO. Once again, there will be some kind of basic out-of-the-box experience, but you are free to flip the switches and turn the knobs. You can receive all the skeletal data and build all of your detectors locally on the bot, if you wish.
So to answer your question, if you invested the time you could probably increase your rate of positive detection by doing something whacky. The SDK provided by Microsoft is free to download.
I ran the MSI installer under WINE on Ubuntu and the source code in included in the install directory. It looks like it creates two C# projects (KinectServer and UDPDump). I can’t really tell what UDPDump does (its a single CS file 36 lines long), and KinectServer looks like it wraps some MS code and does unit conversion and sending the data over a socket.