Autonomous Rugged Maze Navigating Robot

Autonomous Rugged Maze Navigating Robot


Andy Darter

Luke Kaufman

EE 4820 and EE 4830 Senior Design

Instructor: Dr. Stanislaw Legowski

University of Wyoming, Electrical and Computer Engineering Department

Fall 2012 and Spring 2013


  1. Senior Design Contract ...... 4
  2. Spring 2013 Work Schedule ...... 8
  3. Design Methods and Procedures ...... 9
  4. Initial Circuit Diagrams of the System ...... 11
  5. Testing Results ...... 16
  6. Corrected System Design ...... 17
  7. Final Circuit Diagrams of the System ...... 19
  8. Results of Final Testing ...... 24
  9. Bonescript Files ...... 26
  10. Component Datasheets...... 60

Navigational Robots are becoming tools for setting educational foundations in engineering. As technology advances, the demand for robots in the classroom is necessary to fit the needs of real world applications. The next generation of robots will be controlled by processors similar to the BeagleBone. With the support of robotic supply companies: DFRobot, EpicTinker, and Makeblock, our senior design project proposes the use of the BeagleBone processor in instructional environments by developing a Four Wheel Drive Autonomous Robot that will venture through a maze with rugged terrain. Necessary attributes include: independent control of each wheel, a traction control system, an ability to detect walls, tilt measuring accelerometer, and system status reports on an LCD display. Additionally, the robot has flexibility to include more objectives such as making a map of the maze that can later be viewed by a person after navigation. In result, our device inspires others to explore electronics and controls systems engineering and provide hands-on experience for instructional purpose.


Autonomous Rugged Maze Navigating Robot

Andy Darter and Luke Kaufman

BSCE Candidates, University of Wyoming

Senior Design I and Senior Design II

Fall 2012 - Spring 2013


Texas Instruments recently developed the BeagleBone microprocessor and is looking for promotional and practical applications to demonstrate its abilities. Dr. Steven Barrett is writing the BeagleBone User Manual and has been searching for an instructional prototype capable of showcasing the BeagleBone’s ability. Additionally, Robotic Supply Companies: DFRobot, EpicTinker, and Makeblock are interested in promoting the use of their products in robotic projects and hope to inspire others to explore electronics and robotics. We have challenged ourselves with the task of designing and building an autonomous rugged maze navigating robot for our capstone project that meets this need. DFRobot has offered to donate electrical components and possible discounts on any additions. EpicTinker, in partnership with Makeblock, have offered to donate a Makeblock vehicle platform and a few additional components. BeagleBoard has graciously donated their BeagleBone microprocessor.

Project Description

Primary Objective (as agreed upon with Dr. Steven Barrett):

The primary goal of this project is to develop a Four Wheel Drive Autonomous Robot that will venture through a maze with rugged terrain. The robot must be fully contained with the option of using an umbilical power cord. It is necessary that the robot has independent control of each wheel along with the ability to sense Wheel Slip and Wheel Stop. If a wheel does slip, the robot must be able to transfer more power to the other motors in orders to get to smoother ground. In order to travel through the maze, the robot must sense the maze walls using proximity sensors and measure tilt using anDFRobot’s donated accelerometer. A liquid crystal display, on top of the robot, will report its status. Most importantly, the host microprocessor will be the Texas Instruments BeagleBone processor which has ARM architecture, Linux operating system, and uses the Bonescript development environment. All peripheral hardware must be contained on BeagleBone Capes. BeagleBone Capes are additional plug-in boards that allow the BeagleBone to be augmented with LCD screens, motor controls, and other external circuits. The prototype vehicle structure must be small enough to maneuver through the maze. Widths of the maze walls will typically be 30 cm, but has smallest width of 20 cm. Requirements, made by sponsors, include: using the 4WD vehicle platform provided from Makeblock and giving each company monthly project status updates.

Secondary Objective:

The secondary objective adds function to the primary objective. There are several tasks which have not yet been decided. Firstly, an Indoor Mapping Navigation System can be implemented while the robot ventures through the maze. Within the BeagleBone’s memory, the robot’s location will be saved along with measured wall information in order to create a map of the maze. After making the map, it must be able to calculate the best route through the maze. Additionally, a Linux application interface will view the map on a PC. Secondly, other features added to the robot, will provide reconnaissance about the maze. A communication interface, between the processor and a PC, will transmit the data from the robot to a PC.

Figure 1 : Top-Down Implementation Structure Diagram

Project Requirements

  • Travel through the maze without touching a wall: 0 Wall Collisions
  • Differentiate a ramp from a wall
  • Must drive over a ramp or embankment, but not hit a wall
  • Maximum Height: 5 cm, Minimum Length: 5 cm
  • Maximum Inclination Angle: 45˚
  • Fully self-contained (umbilical power acceptable)
  • Proximity sensors: Range: 0 – 5 m, Resolution: 1 cm
  • Accelerometer: Sensitivity: 1.5g, 740-860 mV/g @ 1.5g
  • (A)
  • Wheel Encoder: Resolution: 15 pulses per revolution


(A)Clifford, Michelle and Gomez, Leticia. “Measuring Tilt with Low-g Accelerometers”.

Sensor Poducts.Tempe, AZ. 2005.

Andy Darter / Candidate / Date
Luke Kaufman / Candidate / Date
Dr. Stanislaw Legowski / Instructor / Date


Date / Work Descriptions / Remarks
Jan. 18 / Flashing LED.
Jan. 19 / Put together Frame.
Jan. 25 / Learn Bonescript language.
Jan. 26 / Install LCD.
Test Logic Level Converters.
Feb. 1 / Install LCD.
Feb. 2 / Install LCD.
Feb. 8 / Install LCD. / LCD Problems: writes garbage to display.
Feb. 9 / Install LCD.
Feb. 15 / Install LCD.
Analyze Timing Functions.
Feb. 22 / Configure Output pins on BeagleBone.
Feb. 23 / Test Accelerometer.
Test Motor Controllers.
Mar. 1 / Test Ultrasonic Sensors.
Mar. 2 / Install LCD. / Found Necessary Input voltage to be 3.3 V
Mar. 8 / Add interface circuit to Accelerometer.
Mar. 9 / Implement Shaft Encoders
Work on Final Report
Mar. 15 / Acquire 40 wire ribbon cable.
Mount LCD to frame.
Mount Motor Controller to frame.
Mar. 29 / Mount Ultrasonic Sensors.
Add De-bouncing Circuit to Shaft Encoders.
Mar. 30 / Develop navigation protocol.
Add microcontroller to monitor shaft encoders.
Apr. 5 / Develop navigation protocol.
Apr. 6 / Develop navigation protocol.
Apr. 12 / Develop navigation protocol.
Develop maze mapping protocol.
Apr. 13 / Develop maze map viewer program.
Apr. 19 / Develop maze map viewer program.
Apr. 20 / Prepare for Wyoming Undergraduate Research Day
Apr. 25 / Prepare for Wyoming Undergraduate Research Day
Apr. 26 / Prepare for Wyoming Undergraduate Research Day
Apr. 27 / Wyoming Undergraduate Research Day


To design the robot, a Top-Down, Bottom Up Implementation was used. In the top-down, bottom-up implementation concept, the overall system was broken down into smaller subsystems.

A structure chart was made as a plan to show how all of the components fit together in the system, but not the actual design of each system. Each subsystem was broken down such that it had a single definable function. The structure chart shows the hierarchy of how a system’s hardware and software components interact and interface with each other.


For the tilt of the robot, one Triple Axis MMA7361 Accelerometer was chosen due to its low power requirements and analog output. To sense maze walls, two URM37 V3.2 Ultrasonic Sensors are used on the sides of the robots to detect walls on the left side and right side of the robot. To interface with the BeagleBone, the URM37 sensors output in serial interface. For the front of the robot, the LV-MaxSonar-EZ1 Ultrasonic Sensor was used for its low power requirements, close range measurement range, and analog output.

To detect wheel slip, IR MiniQ Robot Chassis Encoders are placed on each wheel. Output from the chassis encoders are a digital signal signifying that a tick of a wheel spoke.


On board the robot are four 6 V motors driven by motor controllers and control signals from the BeagleBone. The interface between the BeagleBone and the motor controllers are a direction and a pulse width modulation signal for each wheel. Within each motor controllers are Hi-Bridge circuits and “AND” gates allowing each wheel travel in a clock-wise or counter clock-wise direction and be independently controlled by the BeagleBone.

Another output is the Graphical LCD. The LCD will print out reports of the system including: voltages read from the ultrasonic sensors, wheel slip detected from the shaft encoders, or other commands. Logic Level Converters are added, because the LCD operates on 5 V while the BeagleBone outputs 3.3. V. The converters provide an easy way to interface the voltages.


Correctly interfacing the BeagleBone to each component is prominent to the system’s operation. In the design, the components should not damage another component due to high voltage or high current intake. However, if the voltage/currents actually being seen by a component are too small, the component will not perform the expected operation. Interface parameters must be read from each component’s data sheet. Voltage and Current ratings read from the data sheets will prove if an interface circuit is needed or not. If the parameters of the BeagleBone did not match the parameters of another component, an interface circuit was designed. Otherwise, the BeagleBone could easily be attached to the component.


All of the components require a set process in order to appropriately initialize and communicate with the BeagleBone. UML Activity Diagrams were made, in order to maintain the correct order of events without the difficulty of code. After thorough planning using the UML Diagrams, the Bonescriptcodewas organized similarly to the system block diagram. The overall setup of the code followed C language coding practices and structure. A new file was created for each component, allowing the code to be easily categorized and identifiable. A main file that included each component’s file was used to run the BeagleBone and its components.

(All Bonescript Code and UML Activity Diagrams are in BONESCRIPT FILES section)



The Accelerometer outputs an analog signal to indicate acceleration. In this case the accelerometer is being used to identify the direction of the acceleration due to gravity, from this and adequate degree of rotation from level can be accumulated.

(For More Information on Component Parameters see Component Datasheets section)

Graphical LCD

The BeagleBone interfaces with the LCD through a 10 pin parallel connection. Power for the LCD is 5 V and within the input voltage parameters. The BeagleBone outputs 3.3 V for a logic high allowing requiring logic step for interface at 5VDC logic voltage. 8 pins are used as Data Pins, 1 pin for RS, and 1 pin for E.

(For More Information on Component Parameters see Component Datasheets section)

Ultrasonic Sensors


The sonar sensors in this diagram are being used to return an analog signal based on the nearest object in the sensors line of sight. Sensors are powered via 5 VDC and produces an analog output signal that requires no modified interface for the distances of interest.

(For More Information on Component Parameters see Component Datasheets section)

Motor Controllers

The motor controller logic system power is separate from the Motor Supply voltage. To comply with operation parameters the logic system power is powered via 5VDC whereas the motor supply voltage is powered via 6VDC.

To drive the motors, four Pulse Width Modulation signals are outputted from the BeagleBone. Four more pins indicate the spin direction of each motor.

(For More Information on Component Parameters see Component Datasheets section)

Shaft Encoders

The Encoder switches in this diagram represent contact brushes that touch the spokes of the robots wheel hub. This device is very “bouncy” in respect to the processing speed of the beaglebone, thus explains the reason for the large debouncing circuit immediately following the encoder brush. In addition since the Schmitt trigger emits a 5VDC signal, it is scaled down respectfully to be accepted by the beaglebone.

(For More Information on Component Parameters see Component Datasheets section)


The testing of the system proves if the system works effectively or needs more work. A system design is only as good as the test plan that supports it. A weak test plan will typically only test an ideal situation. Test plans should be thorough, so that the system will not enter an unused state and become unstable. If thoroughly tested, the system should work properly for any situation and any user.Once an error is found and corrected, the system should be retested throughout the entire test plan. This should make sure that no new problems have occurred.


Preliminary testing resulted in appropriate operation of LCD display, Shaft encoding, Tilt measurement, and motor control. Verified by the LCD, the robot was tipped and rolled to verify the adequate ability to determine tilt that the robot will be exposed to in the rugged maze. Additionally verified by the LCD, the shaft encoders were tested via rolling all four wheels independently which responded in appropriate wheel clicks. Finally, verified by performance, the BeagleBone ran a preliminary testing algorithm to fest functionality of the motor control interface, resulting in desired operation.


Problems in the design resulted from the ultrasonic sensors. While they returned a consistent analog signal from walls perpendicular to the sensor, if the wall angled away from 90°, the read distance would be far greater than the actual distance. This is likely due to the echo from the sensor bouncing off of the angled wall, traveling further away from the robot, and then later returning to the sensor causing a bigger delay and a further distance reading. There were also other occurrences of the distance reading jumping when the sensors were set up in the perpendicular set up to a wall. All of our sensors sent signals at the same frequency. This caused greater interference between the sensors due to the other sensors.



The three ultrasonic sensors were replaced by five infrared proximity sensors. Infrared emits a much smaller wavelength allowing for the signal to be much more likely to bounce back directly to the sensor at when the surface is not perpendicular to the sensor. However, the infrared sensors can only detect reflective surfaces and must be panned in order to avoid distance measurements through sight imperfections. In addition, the profile of the IR sensors reaches its max output voltage at 6 cmand drops as the distance is increased or decreased (as seen on the below graph).

IR Sensor Distance Profile

The IR sensors are arranged so that one faces the Left, Mid-Left, Front, Mid-Right, and Right direction on the robot.

Another change includes the shaft encoders. Instead of using an optical encoder, the design now uses a brush encoder. This allowed the encoders to be easily installed onto each shaft without adapting the frame, which was not designed to have encoders. Next, because the Whisker Encoders use wires instead of infrared emitters and detectors, they are more economical and smaller.


No output components changed.




No software components changed.

(All Bonescript Code and UML Activity Diagrams are in BONESCRIPT FILES section)


Component / Unit Price / Qty. / Note
BeagleBone / $89.00 / 1 / Donated by TI
Graphical LCD / $18.00 / 1 / Donated by DFRobot
Triple Axis Accelerometer / $16.00 / 1 / Donated by DFRobot
1A Motor Shield / $14.00 / 2 / Donated by DFRobot
Sharp SEN-08959
IR Sensor / $13.95 / 5 / Donated by Dr. Barrett
Makeblock Ultimate Robot Kit / $210.00 / 1 / Donated by Epic Tinker
Total / $430.75



The Accelerometer outputs an analog signal to indicate acceleration. In this case the accelerometer is being used to identify the direction of the acceleration due to gravity, from this and adequate degree of rotation from level can be accumulated.


Since the accelerometer output is a dynamic potentiometer a simple “PullDown” resistor is necessary in order to interface with the beaglebone instead of the previous circuit.

(For More Information on Component Parameters see Component Datasheets section)

Graphical LCD

The BeagleBone interfaces with the LCD through a 10 pin parallel connection. Power for the LCD is 5 V.


In testing the logic level converters provided inaccurate propagation delay resulting in undesired results. To remedy this problem the BeagleBone was directly connected to the input pins since 3.3VDC is still within operation parameters.

(For More Information on Component Parameters see Component Datasheets section)