Title: Zigbot
1Zigbot
- Solving Mazes Autonomously and Reporting via
Zigbee Communications
2Overview of Project
- Create a robot capable of solving mazes
autonomously. - Have the ability to wirelessly transmit any data
from the robot in real-time to anyone/anything
listening. - Program the robot in such a way as to allow
multiple robots to solve the maze at a time. - Win the IEEE Micromouse Robot Competition.
3In the Beginning
- EE101 Robot Base
- Robot created by the ECE department at MSU to get
incoming students excited about electrical and
computer engineering. - We chose to use this robot as a base to allow for
a fast start on the project by allowing us to not
focus on the design and layout of the board but
on software and other hardware issues.
4Modifications and Additions to Chassis
- Fitting in the Maze
- Lifted the PCB and brought in the motors.
- Trimmed the rear corners to make turning easier.
- Adding Zigbee Module
- Added a second female header to make the board
act similar to the SLK boards. - Pin assignments for the motors were moved to the
outside of the robot to free up the pins that the
additional module required. - Batteries were changed to AAA NiMH to facilitate
better mounting location and higher current drain
from the wireless module.
5More Modifications and Additions
- Mounting the Front Sensors
- Size constraint was major issue.
- Mounting the Rear Sensors
- Added late in project due to lack of sensor
information. - Creating the Wheel Encoder circuit
- Done experimentally
6The Ideal Work Environment
- Having a Debugger
- 30ft BDM
- Independent Power Supply
- A single work environment was instrumental in
productivity because we could spread out and have
a spaces set up for specific tasks. - Having a Whiteboard
7Creating the Computer Interface
- To connect the robot to the computer, the base of
a single kit was used to create a computer base
station. - The modifications made were as follows
- Addition of 2 headers to plug in the Zigbee and
CSM modules - Power and Ground cables running to a single 5V
voltage source
8Final Chassis and Work Environment
9Solving the Maze
- Memory Usage
- Initial Starting Conditions
- Orientation and Position
- Dead-End Checking
- Exploring then finding the shortest path
10Keeping the Memory Usage Low
- Define the maze as a matrix and leverage the
indices as the coordinates of the actual robot. - Use only a single byte per cell for On2 memory
usage based on the size of the maze, which is
predefined before compilation. - Cell Data consists of 4 bits for the walls and 4
bits for the explored paths. - Shortest Path algorithm only requires stack size
equal to the number of cells in a maze.
11Orientation and Position
- To solve the maze it is very important that the
robot knows where it is inside of the maze. - To do this, the maze was defined using the
cardinal direction system of NWSE. - North is always the first direction taken by the
robot. - East is based off of North and is independent of
the first direction taken.
12Preferring to Explore First
- When deciding the next path to take the robot
firsts checks if there are any open paths that
have not been explored. - If there are multiple unexplored paths the robot
will take the left most path. - If all paths have been explored the robot will
search for the nearest cell with no explored
sections.
13Starting in Any Direction
- Assumptions
- Zigbot will always start in a corner of the maze
i.e. not somewhere in the middle - Zigbot will always start with its back to a wall
i.e. there is no open wall behind starting
position - To start in any direction the Y-Axis is defined
by the robot based on the first open sidewall
encountered.
14One Way Walls and Dead Ends
- An example of a 1-Way Dead End removal is shown
below
15Shortest Path Algorithm
- All cells explored are stored in a queue
- If the current cell exists already in the queue
at a closer path from the start point, queue
index will reset to where the cell previously at
(remove unwanted cells) - If an adjacent accessible cell from the current
cell is in the queue, check if it shortens the
path then make shorter path in the queue and set
open to explored.
16Overview of Robot Maze Solving
- Low Memory Ceiling so 1 byte/cell is good.
- Robot will maintain correct orientation and
position from all starting possibilities. - Robot removes Dead-Ends by creating One-Way
walls. - Robot could easily prefer to explore towards the
center of the maze. - Robot shares information with anyone listening.
17Error Detection and Correction (EDAC)
- Error is continuously accumulated.
- Correcting errors creates the strong possibility
of causing more errors. - The maze is the only absolute error free point of
reference.
18Keeping in Line
- Side Wall Correction
- Internal Wheel Encoder
- Correcting in Corridors
- Correcting with a Single Side Wall
- Correction on Corners
- Front Wall Correction
- Keeps reading front sensor for a wall
- Checks for edge detection to account for accrued
errors
19Internal Wheel Encoders
- Sensors on the wheel give a absolute encoder
- Counts edges to allow for distance sensing.
- Used to turn as close to 90/180 degrees as
possible. - IR Sensor reads each edge
20Sidewall Correction
- 2 Wall Correction
- Compares sensors on opposite sides of the robot
only when it detects walls on the front side
sensors. - 1 Wall Correction
- This happens only when we dont have two walls.
- Make sure that the robot is not too far or too
close from the wall. - Compares the front and rear readings from the
side of the robot that is detecting a wall.
21Correction around Corners
- Robot turns as close to 90 degrees as possible
using the internal wheel encoders. - Once turn is nearly complete it reads the front
and back sensors from the side with a wall. - The robot keeps turning until the front and back
sensors are equal, just like the one wall
correction.
22Recap of Real-Time Correction
- Robot must continuously fix itself due to errors
always being added to current state. - Double Wall Correction
- Single Wall Correction
- 90 Degree Turn Correction for distance and angle
of turn. - Wheel Encoder Distance Correction
23Transmitting Wirelessly
- Uses the Freescale Zigbee Module
- Same as used in the MSU Embedded Class
- Low Power by design
- Up to 1Mbit Bandwidth
- Long Range Indoors
- 61ft on 6th Floor of Cobleigh Hall
24Working with Multiple Robots
- Must use the same data structure for each robot.
- Must use a scheme that will allow the maze to
include n amount of robots solving the maze
simultaneously from a single corner. - The maze is the absolute marker so that the
robots can traverse through it using a single
shared coordinate system that is free of errors.
25What do we send?
- 5 packets of 4 bytes
- Each packet contains X,Y,CellData,Orientation
- Only the first packet contains the robot
orientation, the other cells are stuffed with
0xF0 in the orientation byte.
26Conclusion
- Very complex project has presented many
challenges. - Proved the adage that most designs fail at the
interface, this is where most of the problems
were encountered.