View
220
Download
1
Embed Size (px)
Citation preview
TEAM MECHAZAWA
Jeong Bang
Riley Ceria
Grant Higa
Job Duties
Chassis Design and Fabrication
Program Algorithms
Head Programmer
Jeong RileyChassis
Circuit design
Assistant programmer
Grant
Micromouse
“Autonomouse” robot that solves a maze in the fastest time possible.
International
Many different types of mice.
Great Fun!!
Our Mouse
Our Mouse
Side Sensors (Distance Sensors)
Stepper Motors
Rabbit Processor
Nice Wheels
Cool Chips… a lot of SMD.
SUPER SMALL!!
Side Sensors
Analog signalA/D converter5 bit accuracyRequires calibrationMore distance information
Smoother tracking
Analog to Digital Mux
Sensor Placement
4 sensors-total2 front-facing2 side-facing
Chassis Considerations
Placement of componentsSensorsMotorsPC boardsBatteries
HeatSymmetryWeight
Limited Tools
Bandsaw was missing teeth
Used clamps to bend brackets
Dremel was the main tool usedParts mysteriously disappeared
Resulting Chassis
Buddy-esque shape
One piece design
Brackets hold sensors
Standoffs hold Circuit Boards
Furniture slider support
Chassis Problems/Solutions
Motor axle to longChoose different motors
Sensor anglesFind a better way to mount sensors
Circuit Design (power)
8 AA NiMH batteries2100 mAh
Power12V DC-DC step up converter
MAX1771Possibly unnecessary
5V linear regulatorLM340Runs hot
Circuit design (driver)
Driver BoardPanasonic 2SK2211 n-MOSFET
Runs fairly coolSmall size
Gate storing too much chargeAdded resistor to increase response
Circuit design
Main board5V regulatorRabbit RCM2000MAX118 A/D converter
SHARP GP2D120 distance sensors
PCBoards
Design done in CIRCAD
Double and single sided
Iron-on resist paperDifficult to iron on well
Ran out of etchant
Programming
Tracking Staying in Center Mapping Walls
Solving Find Center Fastest Path Speed Run
Centering
Reading Analog Signals
Delays
Blind Tracking
Front Wall
Mapping
Setting Values
Pointers or no pointers?
Wall There?
When to check?
Finding Center
Flood fill
Simple
void flood(int floodx, int floody, int notbegin)
{
int x, y; // state position variables for flooding
int hd_value; // highest defined value while flooding maze
int stopflood;
int mox, moy;
int decided; // states whether a new direction has been decided
int turn; // states which way tpo turn
decided = FALSE; // no new direction decided in begining
turn = STRAIGHT; // want to go straight first mox = mx;
moy = my;
// initially floods maze giving all values high
for(x=1; x<17; x++)
{
for(y=1; y<17; y++)
maze_map[x][y].value=256;
}
//gives a starting point to flood from
maze_map[floodx][floody].value=0;
/********************************************************************/
/**********************---MAIN FLOOD AREA---*************************/
/********************************************************************/
stopflood = FALSE;
hd_value = 0;
while(1)
{
/* increment x and the next value to search for after each round until flood is done */
/* floods until either the whole maze is flooded or until the mouse position is reached */
for(x=1; x<17; x++)
{
for(y=1; y<17; y++)
{
//printf("x: %d y: %d", x, y);
/*****Only look at the current cells that have the current highest defined value*****/
if(maze_map[x][y].value == hd_value)
{ //printf("in the if\n");
if(maze_map[x][y].south==FALSE && maze_map[x][y-1].value>hd_value) maze_map[x][y-1].value=hd_value+1;
if(maze_map[x][y].north==FALSE && maze_map[x][y+1].value>hd_value) maze_map[x][y+1].value=hd_value+1;
if(maze_map[x][y].east==FALSE && maze_map[x+1][y].value>hd_value) maze_map[x+1][y].value=hd_value+1;
if(maze_map[x][y].west==FALSE && maze_map[x-1][y].value>hd_value) maze_map[x-1][y].value=hd_value+1;
if(notbegin == TRUE && hd_value >= (maze_map[1][1].value)) return;
/************* IMPORTANT PART!! EVERY DEAD END GETS HIGH VALUE SO WON'T GO FOR SURE *************/
} // end if
} // end for
} // end for
hd_value++;
if(notbegin == FALSE && hd_value >= (maze_map[mox][moy].value+3)) return;
} // end while
} // end solving
Fastest Path
Searches of finding Center
Floods from Center to Beginning
Goes to unsearched Cells
Speed Run
The Grant Delay
Acceleration
Faster
No mapping, or solving
followpath[x] array
Tracking Problems
Sensors
A to D conversion
Motor limits
Tracking of an “imaginary” wall
Jittery
Step Counts
False Wall Readings
Tracking Solutions
Play with wires
Use 5 bit accuracy
Created new type of Delay
Limited distance for walls
Solving Problems
POINTERS!!!!!
Arrays
Loops…going on and on
Stopping at each cell
Solving Solutions
Make sure the “*” are everywhere…fixed almost everything
Only Solve at Junctions
Problems
Board FabricationPoor PCBoard designLack of sufficient etchant
ChassisLack of toolsSensor attachmentBattery placement
Problems
Connectors
Motors torquewidth
Programming
Time
Initial Goals
Build a working mouse and win regions
Do 45’s
Be able to compete on the international level at some point in the future
Results
Mouse can find the center and take the shortest explored path
Too wide for 45’s
Too slow to compete internationally
Mouse is “ghetto”
Sensor connecters may fail