TEAM MECHAZAWA Jeong Bang Riley Ceria Grant Higa

Preview:

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

Recommended