Kinect Hacked, Adafruit Bounty Won
scharkalvin writes "Adafruit has announced a winner to their bounty for an open source driver for the MS Kinect. From the article: 'We have verified that it works and have a screenshot from another member in the hacking community (thanks qdot!) who was also able to use the code. Congrats to Hector! He's running all this on a Linux laptop (his code works with OpenGL) and doesn't even have an Xbox!'" We talked about Adafruit's bounty yesterday.
This guy is on the way to solving the three main problems of personal robotics:
1. Indoor localization (figure out where you are inside)
2. Indoor navigation
3. Table top manipulation
There are already open source software packages for all of these items, but they require very expensive laser scanners (starting at 5K a pop). Most of these lasers only scan one row at a time, which means that for situations where you want 3D, you have to tilt the scanner up and down. This is a hassle and leads to slow scan times, which reduces the responsiveness of the robot.
For indoor localization, what you really want is just a line of points at a fixed height (you could extract one row of Kinect depth pixels) that you can feed to particle filers to figure out position in a mapped space. You might also be able to use opensource SLAM software, wheel encoders, and a Kinect to make 2D and 3D maps of indoor environments.
For indoor navigation, you can use 2D navigation planners to figure out plans through maps, and then use indoor localization to follow the plans. The Kinect can serve as an obstacle detector in addition to the providing data to the localizer. For example, if a person or animal jumps in front of the robot, the Kinect will sense it, and allow the robot to stop instantly and plan a new route. With a tilting laser, the reaction time would be slower, because laser might be in an orientation where it does not see the obstacle.
For table top manipulation, the Kinect can provide a point cloud of the objects on the table. CV software can remove the background (table, wall, etc.) and then detect the objects on the table. Once this is done, motion planners can plan a route for an arm or other manipulator to pick up objects on the table.
Once we have all three of these systems, it should not be all that hard to link them together and start actually doing useful things with robots in our homes. Even just the first two would make it possible useful cleaning and sentry robots.
Responsibility is an addiction
Virtue is a temptation
Community is a cartel
This is a somewhat different thing from what Johnny Lee did, though. Johnny took existing Wiimote driver code and used it to do some very cool things with the data, such as his famous head tracking demonstration. He didn't figure out the actual communications protocol, though (in fact, I did a lot of the early Wiimote reverse engineering hacks too; I guess I have a thing for wacky game controllers!).
Unfortunately for us engineers and low-level hackers, the people actually finding practical algorithms and cool uses for these devices tend to get more attention than the people hacking the low-level details ;). I'm genuinely excited to see what computer vision experts can do with the raw Kinect data, though (I personally can't do much more than apply a cheap heat map to the data like I did in my video).