Roomba Project
Final Report (December 15, 2005)
Update (November 21, 2005)
The control software was in pretty bad shape after the mid-term project. I decided that with how fragile it was, trying to make progress would backfire. I rewrote it the foundation into a multi-threaded C++ system. Now subsystems communicate with event queues. This should also help resolve some of the speed issues that were apparent during the competition.
I have been considering what mechanism I should use for SLAM. It has occurred to me that my project is different from the way that many existing SLAM systems work. It appears that I need to extract higher order geometry from my set of sample points and do SLAM based on that. This is because I cannot guarantee that I am looking at the same exact point I have previous readings for. I have seen this issue resolved using probability distributions (with a known map) and also using a discrete grid world representation.
Here is a picture of the current hardware:
modified Roomba
Update (November 8, 2005)
I have completed the hardware. The Roomba now has 2 working web cams for eyes and 802.11g support. The motors and the bump sensor are accessible from software running on the embedded computer.
The software on the Roomba is in early stages. There is a basic control system for relating motion feedback to motor control. I am able to capture images from the cameras and control the pan/tilt features of the cameras. The OpenCV library is installed on the Roomba and is being used to process the images. It was used to identify the orange cone for the mid-term project. Now I am looking into stereo image analysis features in hopes of obtaining depth information. The ability to construct an internal 3D model of the world is the next major step in the project.
Description
This project involves using a modified Roomba as a test platform for motion planning algorithms. The emphasis is on the practicality of algorithms when coupled with imperfect limited sensors and real world environments. I am interested in tackling the problem similarly to my own perception mechanisms, that is using larger margins of error and approximation rather than perfect, calculated results. I am more interested in finding out what works well in practice rather than what is provably correct but possibly unwieldy to implement.
The first step involves augmenting a Roomba. At the very minimum it needs a lot more processing power and to be easily programmed. Cameras and WiFi support are also likely additions. SLAM (Simultaneous Localization and Mapping) is likely to be the bulk of the work after the modifications are complete. This is because localization and mapping are required for nearly any other type of work.
My goal is to be able to start the Roomba in an unknown environment and have it build a map.
Motivation
I am interested in testing planning algorithms in practice. I would like empirical results on what is feasible, what works and what doesn't. I am also interested in planning incrementally; this occurs when only partial environment information is available, like when performing SLAM.
I have selected to Roomba because I consider it the ideal platform. It is as close to a point robot in 2T+1R as one can get (it is a circle). This avoids issues resulting from irregularly shaped robots.
State of the Art
Using a variety of sensors (range finders, cameras, sonar, etc) researchers have been able to successfully map both 2D and 3D environments.
DP-SLAM developed by Austin Eliazar and Ronald Parr (Duke Univ.) is able to accurately map 2D environments using a laser range finder without the aid of any landmarks. (DP-SLAM)
Cullen Jennings, Don Murray and James J. Little used a pair of robots working together to do localization. This method used computer vision and was able to attain accurate position readings with incomplete map data. (C. Jennings, D. Murray and J. J. Little, "Cooperative Robot Localization with Vision-based Mapping," in ICAR-98, 1998.)
Chieh-Chih Wang demonstrated that it was possible to do SLAMMOT (Simultaneous Localization, Mapping and Moving Object Tracking) at high speeds in urban environments. (Chieh-Chih Wang. Simultaneous Localization, Mapping and Moving Object Tracking. PhD thesis, The Robotics Institute, Carnegie Mellon University, Pittsburgh, PA, April 2004.)
Goal and Novelty
I hope to be able to do planner localization and mapping. I am going to monitor the movement of the robot relative to the ground optically as an alternative to relying on the motor encoders. This will hopefully capture local movement accurately enough to be useful for correlating images. I am also curious to see if I will be able to process and store enough data to be able to render the environment offline.