Tomorrow is the official kickoff for the FIRST Robotics Competition. One of the things that means is that today is a day of workshops at FIRST Place in Manchester NH. I started my day here by presenting a 45 minute workshop on how the Kinect is used with FRC robots this year. There were some things I could not cover because the full game details will not be released until tomorrow of course. But I was able to provide some context and some architectural information that I hope was helpful to the 60 or so attendees who were present and how ever any people were watching the web cast. I am told that the talk was recorded and I will link to that once I know where it is. But I did want to share a few pieces of what I talked about via my blog post. Sort of speaker’s notes as well as hyper links to the resources I talked about. You’ll find those links at the bottom of this post.
A Kinect sensor is supported by a great software development kit (Kinect for Windows SDK) which is a great place to start. Programing expertise among FIRST teams is sort of all over the map. much of this is a consequence of there not being enough computer science in the curriculum but let’s not get into that now. For now, know that there are some additional resources that are being supplied for FIRST teams this year. Specifically the wonderful people at the WPI robotics program have created some libraries that have been tuned a bit by some of the FIRST staff. The diagram below (created by Kevin O'Connor of FIRST shows the general architecture.
The Kinect device is connected though the Kinect SDK to an FRC Kinect Server program. This program, written in C#, may be modified by teams in any number of ways including adding their own custom gestures. The server passes on a lot of information to the Driver Station diagnostic and dashboard software. This includes:
The server defines 9 different gestures by default. These gestures can be passed to the robot as if they were joystick or other controller data. This allows teams to use the Kinect out of the box without having to write Kinect specific code. Teams can also pass the skeletal and diagnostic data to the cRIO (an control device made and donated by National Instruments for the robots) and write code on the cRIO using Java, C/C++ or Java. This gives the teams an enormous amount of flexibility.
I am really REALLY quite excited to see what FIRST Robotics teams do with the Kinect this year.