University of Minnesota Duluth Senior Design Project
LEGO Unmanned Ground Vehicle (UGV) Demonstration
Click below for videos:
Bumper Test (1.2MB)
Final Project Video (2.2MB)

My college senior design project was completed in the Spring of 1999. The project was to develop a Unmanned Ground Vehicle (UGV) that can follow a light source while negotiating around obstacles, an excellent combination of Electrical Engineering, Computer Engineering, Computer Science, System Engineering, and Mathematics. To complete this project solo I used several skills. An inexpensive platform was needed and the newly released LEGO Mindstorms kit seem to fit the bill. At the time the kit wasn't used much in the education field and I was a little mocked for using the kit. By the end of the project I saw other Universities such as MIT using the Mindstorm kits, I wasn't so crazy after all. :o) Using this kit allowed me to construct gears and motors within a reasonable time and on a college budget. This kit offered a limited microprocessor with a few inputs/output A to D which needed some creative ideas to expand these limitations. Electrical Engineering was used to designed custom sensors that were not available, Computer Engineering/Computer Science to develop the software in the microprocessor and IR linked software with a laptop Visual Basic Software, and System Engineering to put it all together.
The UGV
The UGV looks for light then follows the light until it reaches a calibrated level of brightness. The user in conjunction with a Windows program will calibrate the light level to which the UGV will consider the end of the task or mission into the UGV. Three sensors and two input device splitters were made and designed from scratch:
Light differentiator - opamp circuit that differentiates light using two photo resistors. This allows the measurement of light with readings regarding the position (left, middle, or to the right) This sensor is sensitive enough for further calibration to degrees of left and so on. This device is pictured below left.
Rotation Sensor - This is a Infra-Red device, if the beam is broken then the counter is increased. This is a simple circuit consisting of a bridge rectifier and a couple resistors. Pictured below middle.
Sensor Rack - Since I only have three sensor inputs to the UGV I used a touch sensor rack to place all three touch sensors (left, right, and back) on a single input. This device has three resistors in parallel and when different combinations of the touch sensors are pressed the UGV sees the different resistive values. This allows me to differentiate the touch sensors in the software. Pictured below right.

![]()
Placement of these sensors were as noted below:
The Software
Using Visual Basic I wrote an interface with the UGV, refer to the pictured below. The software communicates via an infrared tower to the UGV (provided with the kit). The software shows the state of the UGV, the UGV can function completely on its own. The software also shows the current state of different sensors used and allows the download of the program that resides in the UGV. Using the Emergency Stop the user can than control the movement of the UGV using the VB program. When ever desired the user can then start the program in the to then explore on its own again. A screen shot of the software is below:

This window is for light magnitude calibration, using the light magnitude sensor and this setting the UGV knows the distance to the light or when the UGV is near its destination:

This window shows the history of the light differentiator sensor for calibration (left, front, right):
The microprocessor also needed software and this is where I thought creativity was needed the most. The kit came with some basic software but was too limited, at that time there was a little community that developed a "hack" code to develop more complex software for the microprocessor. This software was dubbed "NQC" ( Not Quite C), obviously it was a C type based language proved enough flexibility to do the job I needed it to do. Next I developed a set of watch dog routines and tasks to use the sensors develop above to watch its surroundings. The code would have to keep an eye on its surroundings using bumper sensors to determine how to navigate objects. In addition the software would have to merge this navigation with the goal of "going towards the light" ... funny now that I look back on it ... also making decisions on which direction to turn when running into a bump in the road keeping in mind that light was to the right, left, or straight ahead. Without boring you with too much detail it turned out to be a lot of fun, keep in mind this was in 1999 where UGV were not common and just starting to get main stream, at the time I felt I was on the cutting edge.
Conclusion
The UGV was a success! I enjoyed the project but took a little flack for "playing with LEGOs", I think in the end I got the last laugh, after all I was developing a UGV when at the time the acronym was not that common. The following link shows the UGV in action: Bumper Test (1.2MB) and Final Project Video (2.2MB) I can say that I have enjoyed the project so much that I extended my interests designing autopilots for Unmanned Aerial Vehicles (UAV) and Ground Control Stations (GCS) later in my career working at Southwest Research Institute.