TASKS ASSIGNED TO EACH TEAM MEMBER
The Mice design team consisted of Zakaria Juber and Ed Clancy IV. Based on technical interest and experience separate responsibilities were given to each individual.
Zakaria Juber
Zakaria was responsible for the overall hardware design of the Mice. In addition, Zakaria was also responsible for part of the software development and algorithm research. Below is a list of tasks for which Zakaria was responsible.
1. Research possible hardware design approaches
2. Evaluate hardware research data to verify design feasibility
3. Design Mice hardware schematic
i. Obstacle Avoidance and Path Finding subsystem
ii. Control System and Vehicle Dynamics
iii. Robot Localization
iv. Power Management
v. dsPIC Programming Interface
vi. Overall Integrated System
4. PCB (Printed Circuit Board) Design
i. PCB layout
ii. Verify Ideal EMC Performance
iii. PCB Fabrication
iv. PCB Assembly
5. Hardware Testing
6. Partial Software Development
i. Robot Mobility and Speed Control
ii. Assist with Mice Algorithm Research and Development
7. Assist with Maze Construction
Ed Clancy IV
Ed was responsible for Algorithm Design and Maze Construction. In addition, Ed was also responsible for hardware design research. Below is a list of tasks for which Ed was responsible.
1. Assist with Hardware Research
i. Obstacle Avoidance and Path Finding subsystem
ii. Choose IR sensors
2. Hardware Schematic and PCB Design Review
3. Assist with Hardware Testing and IR Sensor Calibration
4. Maze Research, Design, and Construction
5. Software Development
i. Range Determination and Path Finding
ii. Mice Algorithm Research and Implementation
DESIGN CHOICES AND PERFORMANCE CRITERIA
For the Obstacle Avoidance and Path Finding subsystem there were multiple options for sensors to be used. Two of the major possibilities for this part of the design were Sonar and IR (Infrared). Sonar emits an ultrasonic wave and waits for the wave to return to its source. Based on the time and speed of the ultrasonic wave, the sensor can calculate how far an object is. IR emits an infrared light (from an infrared LED) and waits for the light to reflect back onto a phototransistor. The potential drop across the phototransistor increases due to reflection from the infrared light. This potential drop the represents distance between an object and the IR sensor. For this project Sonar was not ideal. The robot needed to know distances from itself to the front and side walls. Sonar emits ultrasonic wave in a very wide angle. Therefore, ultrasound emitted toward the front of the robot will also bounce back from side walls. This will create interference and provide data that are not useful for the robot. However, IR emits infrared only in the pointed direction. Therefore, IR was chosen for this subsystem.
For the Control System and Vehicle Dynamics subsystem there were many options when choosing the correct motors. Stepper motors, brushed DC motors, brushless DC motors are few of the common one that are used for smaller robots. Stepper motors can provide very accurate controlled rotation and eliminates the need for external encoders. But, they are very heavy. Rotation of brushed DC motors can be controlled with PWM. However, they also require an external encoder to calculate RPM. Brushless DC motors are light weight, very expensive, and also requires external encoders. One of the advantages of brushless DC is they last very long time due to the lack of brushes. However, brushed DC motor and stepper motor both have brushes that can be damaged over time. For this project, the motor needed to be light weight and consume less power. Inexpensive stepper motors did not fall into this category. Brushed DC motors are the least expensive, reasonably light weight, and consumes reasonable amount of power. Therefore, brushed DC motors were chosen for this project. The chosen DC brushed motor also had a matching pair of wheels, tires, and quadrature encoders, which made the design more affordable.
It was easily realized that robot localization can be performed using the hardware from the previous two subsystems. Therefore, no additional hardware was necessary to fulfill the requirements for Robot Localization subsystem.
The Power Management subsystem required output of 3.3V and 5V from a 9V battery source. The regulated power could be achieved by using linear voltage regulators, non-isolated switching voltage regulators, and isolated switching voltage regulators. Linear voltage regulators are very inefficient, typically under 50% efficiency. This disadvantage eliminated the possibility of using linear voltage regulators. Switching voltage regulators provides the most efficient power management solutions. Therefore, the answer was clear; use switching regulators. From availability in the market, non-isolated switching regulators were more affordable and required smaller footprints on PCB. Therefore, non-isolated switching regulators were chosen to achieve the regulated 3.3V and 5V output.
When developing the software for the micro mouse maze solving robot, multiple options were considered. Two of the most common approaches are Wall Following method and Flood Fill method.
For the Wall Following method to work the entire hardware and layout of the robot would need to be changed. Two ways of designing the robot to incorporate this software design would be to have sensors looking down at the top of the walls or having some kind of “feeler-like” device that can sense the walls based on contact. Having sensors look down at the top of each wall would be highly inefficient due to having a robot that can only work at a certain wall height. Therefore, this method was eliminated.
The second method was the Flood Fill algorithm. The main idea is to initially fill the maze with values which represent the distance from each cell to the final destination. When the flooding reaches the starting cell then you can stop and follow the values downhill to the goal. One possible approach to this is to start with an array of bytes with one byte representing each cell in the maze. The destination of the maze is given the value 0. Then the algorithm floods all the different cells and checks to see that each one has a value that is incremented by 1 more than its adjacent cell. After that the algorithm repeats those steps until the value in the starting cell isn’t changed. One of main advantages to this is no pre-initializing the map contents which saves memory. Another advantage is that this algorithm can undergo a considerable number of iterations. For example, the worst case would be doing all 256 cells several hundred times. If it took ten instructions per cell, and each one takes 0.5 microseconds, the robot would need around 0.25 seconds to solve the maze. The algorithm will run for as much iteration as there are cells in the longest path. However, because the maze has around 18 cells, the robot will complete the task much faster. The main advantage behind this method is that when the robot approaches a junction (cells with 3 – 4 possible exits), it stops and re-calculates what action to take, but everywhere else the robot’s actions are predetermined and require no decision at all. The last advantage clearly shows why this methodology was chosen for the brains of the robot.
To expand on the flood fill algorithm, a few modifications can be made to optimize it. During navigating through the maze after the initial flooding has been completed, the robot must follow three rules. Such are:
· Move to the cell which the robot has been to the least
· Move to the cell that has the minimum flooded cell value
· Whenever possible the robot must attempt to go straight.
If the robot has to turn, then the robot is wasting significant amounts of time to readjust itself. When following the three conditions the robot will reach the end point of the maze. The reason for modifying the basic flood fill algorithm is to save memory, because mapping the cell values into memory requires a huge memory capacity while generating the cell values at run time prevents that from happening. Then the robot can be designed to move to each cell by the exact distance and then the sensor reading is read by the processor. The robot will make a decision based on the different values read by the encoder, the sensor array, and the three modified conditions. During normal operation the robot will record each location value as it proceeds towards the goal of the maze. For the robot to come back to the starting point, it will just trace the path back using the memory map.