Rainbow Monster Truck

Jessica Fisher
Brie Finger

Rainbow Monster Truck Code
Nomad 200 Markov Localization
Nomad 200 Monte Carlo Localization

Videos of the Rainbow Monster Truck


One of the newest areas of robotics is that of search-and-rescue. Robots are capable of entering areas that humans may not be able to reach or survive in (e.g. a collapsed mine full of toxic sludge). One of the main purposes of these robots is to bring supplies to people who may be trapped. Our project is a basic simulation of this aspect of search-and-rescue.

The Rainbow Monster Truck is a robot based on the Handyboard system (Fig. 1) and built with Legos. The primary objective of Rainbow Monster Truck is to locate candles via light sensor. Heat sensors would have allowed us to simulate seeking out warm bodies, but none were available for our use. Using the light sensors allows us to locate candles without knowing their location in advance, and with no map of the environment. In order to simulate actual search-and-rescue, we have designed a robot to travel over rough terrain to get to the candles.


Robots are more often used for urban search and rescue (USAR) than for wilderness search and rescue. The reason for this is that in urban environments (e.g. a collapsed building) there are not enough rescuers to rescue all the trapped people, and the environment is very risky for human rescuers[1]. Robots have the ability to get through small spaces and enter hazardous environments. Such robots are sometimes used to simply locate trapped people, but also may be used to bring food and medical supplies to such individuals. One of the first large-scale attempts to use USAR robots was at the World Trade Center in September, 2001, where they were credited with finding the remains of several victims[2].

Similar robots are used to map areas that humans cannot enter[3]. These robots often use localization techniques such as Monte Carlo localization[4] or, if they do not have a map, Expectation Maximization(EM)[5]. However, the Rainbow Monster Truck's task does not involve reporting the location of the candles it locates, but simply reaching them (to simulate delivering supplies). For our purposes it is sufficient to extinguish the candles to show that they have been visited. We use a fan to extinguish the candles, for simplicity.


Our basic approach to the body of our rough terrain robot involves a joint in between the front and back halves of the robot (Fig. 2). This flexibility allows for rolling over objects and climbing over peaks. The front half of the robot includes the unpowered wheels for steering. These wheels can be rotated by a motor, but do not have a motor for locomotion. The wheels used are the largest size Lego wheels available.

The back half of the robot includes two sets of powered wheels with four motors, one for each wheel axle. The middle axles have two wheels each, and each rear axle has three wheels to provide greater traction on rough surfaces. Also, the back half has a platform to hold the Handyboard in place. Initially, we had envisioned a robot with treads, on the assumption that they would be more robust than normal wheels (Fig. 3). However, the treads and wheels provided in the Lego Mindstorms kit proved to be too small and not powerful enough to overcome even minor obstacles.

The front of the robot also includes three bump sensors (Fig. 4) set at a relatively high level (so as to avoid sensing obstacles that the robot might climb over). In this way, the robot can detect obstacles on the left, on the right, or directly in front of it. When the left bump sensor is activated, the robot backs up and turns slightly to the right, proceeds forward for a short time, then straightens out its wheels (by rotating them in the opposite direction for the same amount of time). The robot behaves similarly when the right bump sensor is activated, turning to the left. When the central bump sensor is activated, the robot backs up farther and turns dramatically to the right.

For use in the extinguishing task, a fan is mounted on top of the front of the robot.

Our approach to the task involves allowing the robot to wander through the environment, looking for light sources (using two light sensors). The light sensors are attached to the front of the robot in a small encasement to shield them from large amounts of ambient light (Fig. 5). One of the sensors is slightly to the left of the center, and the other is slightly to the right, both just below the bump sensors. In this way, the robot can detect if it is to one side of the candle, allowing it to center itself in order to extinguish the candle.

When the robot is initialized, it takes readings of the ambient light and stores them as base readings. It then waits for measurements indicating a light whose brightness is above a set threshold beyond the base readings. In this way, minor variations in the ambient light will not trigger the extinguishing routine. The thresholds are different for the left and right sensors depending on their sensitivity.

If only one light sensor is triggered, the robot will back up and turn in that direction. If both are triggered, the robot will stop and run its fan for a set length of time. If the candle has not been extinguished (determined by the new readings from the light sensors), the robot will scoot forward and try again, as long as both sensors are still detecting the candle. The robot "succeeds" when both sensors are no longer detecting a candle, and it backs up to begin searching for more candles. It "fails" if only one sensor is detecting the candle, and it backs up and begins recentering.


In the first phase of our project, our goal was to make the Rainbow Monster Truck traverse rough terrain without getting damaged. We considered implementing wall-following as a basic navigation technique, but the task of building the robot turned out to be much more time-consuming and difficult than expected, so we decided not to add a sonar sensor for wall-following. Also, the environment may not have walls, so that may not be the most appropriate technique. Navigation is implemented as described above; essentially, the robot goes forward and bounces off walls until it senses a candle. One side effect of the three different bump sensors is that the robot tends to get stuck in corners. In general, the simple-minded navigation works fairly well for its purpose.

The Rainbow Monster Truck (Fig. 6) (so named for its lovely multicolored Legos and it's excessive size) is capable of climbing over low obstacles (up to approximately half an inch). It is also capable of locating and extinguishing a candle, though it does not always do this successfully.

We attempted to use a rotation sensor to assist in keeping the wheels pointing straight ahead. However, this sensor proved unreliable and insane; for instance, if the robot got stuck on a wall, the wheels would rotate uncontrollably back and forth based on the erratic sensor readings. Furthermore, the recentering routine somehow managed to take over the robot such that no other routines were ever called (even though there were no infinite loops in the program). As a result, we removed all references to the rotation sensor and fell back on our original plan of assuming the wheels are straight if we have not rotated them. If it is the case that the robot is turning, we run the rotation motor for a set time period to accomplish the turn. Afterwards, we assume that running the motor in reverse for the same time period will restore the initial angle of the wheels (hopefully straight). While this accumulates error, our test courses were short enough that the robot still managed to find and extinguish the candle.

The Rainbow Monster Truck in its final state is capable of traversing a simple obstacle course and extinguishing a candle in many configurations, as originally intended.


Designing a robot to traverse rough terrain turned out to be much more difficult than we originally anticipated. Our failed first attempt at a design proved to be very time consuming.

The system does not perform very well at climbing over obstacles. The main problem is that it cannot climb over obstacles more than half an inch tall, and when the battery is run down, it cannot even accomplish that. The reason it cannot get over these obstacles varies between the wheels not having enough power, and not enough powered wheels touching the ground to provide traction. A solution we might consider for future enhancement is gearing down the wheels to give them more power.

Also, due to the segmented design and the length of the Rainbow Monster Truck, it has a very large turning radius. This makes navigation of tight spaces very difficult. However, the robot must be large enough to hold the Handyboard, so we are very limited in this respect.

In our testing, we discovered that adding more wheels to each axle to increase traction improved the robot's performance at climbing over obstacles, although more wheels require more power. Another way to improve the performance might be to remove part of the body of the back half so that it is lighter. However, the Handyboard itself is fairly heavy and must sit on the robot at some location, so it is not possible to make the robot very light.

The front portion of the robot was initially light enough to roll over many obstacles, but the addition of the light sensors and bump sensors required so many stabilizing and clamping Legos that it became very heavy. It is not possible to remove any of these stabilizers, because without them the bump sensors may fall off at any collision. This would not have been an issue had the robot not been made out of Legos; if the pieces of the robot could be more firmly attached (through welding or some other powerful technique), little reinforcement would be necessary. Ultimately, a more efficient overall design incorporating all the necessary sensors would have been ideal.

One major problem we encountered had to do with the unreliability of the light sensors. If the light sensors obtained an initial reading of a neutral-colored environment, any light-colored object would be beyond the brightness threshold. As a result, the robot often attempted to extinguish light-colored obstacles, or light-colored researchers. To work around this, we were able to initialize the robot with a white paper in front of it. However, when initialized with the white paper, the robot failed to sense the candle. This would not have been an issue had we used a heat sensor rather than a light sensor.

Also, the robot is not very proficient at overcoming obstacles from a standstill. It requires some room to move forward to get enough momentum to roll over obstacles, so we were unable to have it find a candle in a room full of obstacles. This is another problem that may be solved by more powerful motors or more efficient design.

Overall, although there were many problems with the Rainbow Monster Truck, it is capable of accomplishing the basic tasks we set for it.

An area of further research might be comparing the strengths of various motors. The Lego motors that we are using are not designed to power particularly large or robust robots. It might be the case that with stronger motors the robot would be able to climb over larger obstacles. Another area of research would be investigating the best body design for traversing rough terrain, assuming that the robot must use wheels. It would also be interesting to examine the differences between sensing light sources and pale-colored objects in order to distinguish between the two. Finally, in keeping with the search-and-rescue concept, modifying the robot to use heat sensors rather than light sensors would be gratifying.


1. Murphy, Robin et al. USAR Frequently Asked Questions. Available at http://www.csee.usf.edu/robotics/crasar/faq.html
2. Davids, Angela. Urban Search and Rescue Robots: From Tragedy to Technology. IEEE Intelligent Systems. March, 2002: 81-83.
3. Thrun, Sebastion. The Groundhog Experiment. Available at http://www-2.cs.cmu.edu/~thrun/3D/mines/groundhog/index.html
4. Dellaert, F. et al. Monte Carlo Localization for Mobile Robots. IEEE International Conference on Robotics and Automation. May, 1999.
5. Seo, Yongduek and Ki Sang Hong. Structure and Motion Estimation with Expectation Maximization and Extended Kalman Smoother for Continuous Image Sequences. IEEE Conference on Computer Vision and Pattern Recognition, 2001.