This last summer (2010) I was lucky enough to be part of the 2010 NASA Robotics Academy at Marshall Space Flight Center in Huntsville, Alabama. There I was partnered with other college students from around the nation who also had a passion for robotics. Some of them were already experts in their field, and had extensive robotics experience.
I was placed on a team with three other students, and was assigned to work on a distributed swarming robotic system under Dr. Robert Ray. Our goals were to develop a swarming system based on the iRobot Create platform, and have the robots autonomously interact and cooperate with each other.
The iRobot Create is made for robotic research and experimentation, and is simply the Roomba without the vacuum cleaner, but with a cargo bay to add your own stuff and a 21 pin connector to interface with the Create. This makes it a great way to get started on a robotics project like the one we did. They are inexpensive and easy to work with.
We were trying to create a swarm of 6 robots which would be location aware, and would make coordinated movements together. This was to be a centralized psuedo-swarm that did not use "swarm / hive intelligence." Bcause in a flight environment we would never want a robot to have the ability to make it's own decisions and possibly act on its own, we had a centralized desktop computer which ran the AI and directly controlled the different robots. With this important decision made, we had a number of goals to accomplish, which included:
Wireless communication between the robots and the computer
AI for all 6 robots to move independently and simultaneously
Location determination for all of the robots
My responsibilities as the mechanical engineer for the project was to design and create the integration of the electronics which allowed wireless communication between the central computer and each robot.
Mechanically, I had to get the electronics mounted onto the robot. This included the Freescale "Tower" which contained the real-time processor and a board with a network adapter. Also there was the wireless router / adapter, and the voltage regulator. Early models needed a laser level as well.
Electronically, I had to design and make cable adapters to transfer power and data between the robot and the added electronics. I also had to design and make the cables that connected all of the various components. The space available inside the robot was tight, and I attempted to make the profile as low as possible, which made routing the cables more challenging as well, and required creativity so they could fit.
Being able to build each robot allowed me to work hands-on with the hardware rather than on the computer. Actually putting it together also provides the feeling that you are making a lot of progress and is a great thing to do whenever something else is frustrating.
The biggest challenge was doing location determination for the robots, many techniques were tried, but in the end none of them worked.
The first approach was to use lasers, which fanned into a line on each robot, and light detectors in different spots of the room to trilateralate the position of the robots, but we could not find lasers who matched frequencies with the detectors or vice-versa. Additionally the laser on each robot was not very powerful, so within a few inches it would no longer pick up the signal, even in the dark. About the same time I was pursuing this technique I encountered a lot of problems with signal processing on the computer side as well, and the difficulties of trying to use Labview in real time to detect pulses. Labview is great for a lot of things, but I could not be great at identifying signals and processing them in real-time.
The next approach was to use the diode "walls" which came with the iRobot Create. The thought was that we could detect the walls ourselves with the IR sensor on the Create and determine the location of the Creates as the direction of the IR beam spun around the room. In theory it would work great, but there were more difficulties.
The difficulties which this ran into was the ability for the Create to send data back to the computer, which had a lot of problems with interference chopping the packets into pieces. The second problem was the range of the walls, which could not be made good enough to determine their location within a decent range, although it was better than before. Precision had always been a problem with this approach before as well. I tried to collimate the IR LED as best as I could, but it would never be good enough for what we actually wanted, which was plus or minus a few centimeters at a range of about 10 meters.
Location detection was never something that could be implemented in the robots, and by the end of our 5-week project we were unable to make them location-aware, although the other goals of coordinated movement and wireless communication were met.
As I waited in the airport for my flight out of Huntsville, I was talking to a member of the all-graduate student team which was also part of the NASA Robotics Academy about my frustrations with the hardware available to us as interns and the difficulties of my project. I told him that I thought the best way to press forward in the future was to use sonar to track the distances and trilateralate the positions of the robots.
He told me about an amazing system which is called CRICKET, developed by MIT to ultrasonically locate the positions of robots with centimeter accuracy in an indoor environment. As it turns out, they developed exactly what I was dreaming about.
I think the biggest lesson I learned this summer is that even if it seems like time is very limited and you must charge ahead down one path that looks easy, it is good to ask yourself if it is the best way to do it, and approach it with a somewhat cynical mind so I can identify problems earlier. It is also good to seek help whenever encountering a problem, especially from those more experienced than you, even if you think you have it figured out, because you just might not.
Despite the setbacks in location determination, using dead reckoning we were still able to get the robots to move together, both independently and simultaneously. This project succeeded in all other areas of development, and was a sucess. It may be continued by robotics academy students next year.