A lot of people are hacking Kinect these days. It's not unusual for hackers to spend a couple sleepless nights coding before they can show off projects like this.
Patrick Bouffard can attest to losing sleep over his class project.
The University of California at Berkeley graduate student made this helicopter and showed it off to the world when he posted it on YouTube. It is on track for going viral.
SmartPlanet sat down with Bouffard to find out what all the buzz was about.
SmartPlanet: What's fun about playing with it?
PB: There's a lot of satisfaction and fun that comes from figuring out how to make computers do new things, that's why I like programming. Robots are really an extension of this into the real world. And flying robots are a lot more challenging. If my code crashes, the robot may literally crash into the ground!
SmartPlanet: So what exactly does the video show us?
PB: It is a quadrotor helicopter that has four rotors. Quadrotors have become quite popular in robotics and control systems research labs over the last few years because they have certain advantages over more traditional, single main rotor helicopters.
Our lab was one of the first to have success in not only developing such a platform but applying it to some interesting research questions.
The platform is called STARMAC, for the Stanford Testbed of Autonomous Rotorcraft for Multi-Agent Control. "Stanford" because Claire Tomlin was based there when the project began. She is a professor now at both Stanford and Berkeley, but most of her time is spent here. There are three other PhD students currently working on the STARMAC project, and all of them also started at Stanford with Claire.
The Kinect was released and soon afterward an organization offered a 'bounty' for the first person who could produce an open-source driver. In a remarkably short period of time, someone had done so.
From our standpoint, this meant that not only was there a nifty new game controller for XBOX 360 out there, there was a really inexpensive, and light and compact, 3D sensor that would be perfectly suited to flying on our vehicles. It was really a natural thing to put them together.
Aside from simply mounting the Kinect to the quadrotor and feeding its data into the quadrotor's onboard computer, we want to use that data for something. Using the Kinect to figure out how high the quadrotor is off of the floor seemed like a good place to start. Once that was working, we added an obstacle.
SmartPlanet: How did you hack it to do what you want it to?
PB: All of the lower-level hacking, in the sense of accessing the Kinect's data, was already done for me. The OpenKinect project's open source 'Freenect' driver allows one to access the data from the device, and
also send it commands such as to tilt up and down.
I removed the tilting mechanism. Extra weight is a bad thing for flying things!
There's another layer that makes things even easier. Another open-source project called ROS - Robot Operating System, which is led by a robotics incubator in Menlo Park called Willow Garage. It provides a wonderful sort of glue layer with which to assemble things like my demo.
With the Freenect driver available, some others in the ROS community quickly put together a module for ROS that allows one to access the Kinect even more easily. I was already using ROS for other things so this made hooking up the Kinect dead easy.
Next, the processing required to find the floor and determine altitude is fairly straightforward, but still I might have taken a while to come up with bug-free code to do this. Once again, 'there's an open-source tool for that' to paraphrase a famous trademark.
The Point Cloud Library, PCL for short, was developed at Willow Garage too. It's well integrated into the ROS framework. It allowed me to easily do the computation required. I hardly had to write any source code.
So in a nutshell, the pieces were all there to be put together. I just did the putting together.
SmartPlanet: What's the broader applications of this?
PB: To have robots do interesting things, they need to be able to do some reasoning about the world.
Reasoning requires data and sensors like the Kinect are often how you get the data. Better sensors leads to more and better data to reason with. Faster, smaller and lighter computers allow you to do more complex reasoning.
So certainly one could think of things like surveillance, security, and those types of applications. There could even be some cool toys out in a few years. Look at the popular Parrot AR.Drone.
But more basic research can be applied to more than just robotics. In the past, the STARMAC platform has been used to help investigate collision avoidance algorithms that are intended for use on vehicles of a very different scale like the passenger aircraft!
But one of the reasons we bother to actually implement things on real hardware is that it makes any theoretical development much more compelling than if it was only described in terms of the theory, or only simulated on a computer.
Actually flying with an algorithm on board says something a bit more. There are a couple of videos on the lab's website that probably describe some of this much better than I could.
SmartPlanet: Who are you? What do you dream of becoming?
PB: I'm a second year PhD student in Electrical Engineering and Computer Sciences here at UC Berkeley. But more importantly to me, I'm the proud father of two kids, Keiji (boy, 14 months) and Kiyomi (girl, 3 years) with my wife Noriko who deserves more thanks than anyone for making any of what I've been up to for the last couple years possible.
So I guess I'm actually what you might call a mature student. I had worked in the aerospace industry for about 10 years after my B.Sc. before coming back to school. The reasons for that big decision are
various, but mainly I felt a desire to learn more.
And I had an inkling that I might have some fun while I'm at it.
So far, so good.