At the University of New Hampshire, the Electrical Engineering seniors are tasked with designing and implementing a “Senior Design Project”. Being the robotics enthusiast that I am, I chose to implement a robotic room mapping system. The system I designed consists of both the robot hardware and a software interface for the computer. This page details both the prototype and the final product.
The Robot Hardware
The motors with quadrature encoders, motor mounting hardware, wheels, caster, and motor driver were purchased from Pololu.
I assembled the prototype circuitry on breadboards which were secured to the mid-layer via the adhesive backing. The robot is powered by 8 AA batteries which are secured to the bottom layer behind the motors. The microcontroller I chose for this project is the Parallax Propeller which is an 8-core 80MHz 32-bit chip which comes in a very convenient 40-pin DIP package. The robot communicates wirelessly with the computer interface using an XBee wireless link.
The robot employs three distance sensors between the mid and top layers. Facing forward is a Maxbotix MB1010 ultrasonic rangefinder and on either side are Sharp GP2Y0A02YK0F infrared distance sensors. I am slightly embarrassed to admit one design flaw in the prototype: I forgot a power switch. This was going to be a long testing phase.
The final chassis design was the next step. I added some design elements to the original such as a stenciled name and protective covers for the front.
Finally the robot is complete and works extremely well! Some tweaking of the infrared distance sensors on the side were necessary because the IR beam projects outward at an angle. By making sure they both were angled upward, the robot did not report the floor as being an obstacle. I would also like to point out the inclusion of a power switch this time!
The Computer Software
In order to control the robot I wrote a computer interface in Processing. It allows the user to double click a location to set a waypoint. Upon clicking “submit”, the robot will attempt to travel to that location as long as there are no obstacles in the way, reporting map data as it moves. Alternatively the “Rotate and Scan” button causes the robot to spin in place and gather map data which sometimes works for small rooms.
Other features of the interface are the “Motor RPM” slider which allows the user to choose the robot’s overall speed, the “Zoom” slider which sets the zoom level of the map, and a set of load/save interface elements which treats the maps as CSV files. The user can also click and drag to pan around the map.