Upload
kristina-farmer
View
215
Download
0
Tags:
Embed Size (px)
Citation preview
A.G.I.L.EAutonomously Guided Intelligent Lawn Equipment
Team Members:• Brad Ramsey
• Derek Rodriguez• Dane Wielgopolan
Project Advisors:• Dr. Joel Schipper• Dr. James Irwin
Project Goal
Create a proof of concept autonomous lawnmower
• Mow the lawn while– Staying in a defined area– Avoiding obstacles– Efficient mowing
Platform• Dimensions:• Length: 12.5’’• Width: 18.5’’• Height: 7’’
• Symmetrical• Dual 12V lead acid batteries• Dual Pittman DC motors• Differential turning
– Zero turning radius• All electronics designed to work off of 12VDC
RF Filter Flowchart
RF RECIEVER / BANDPASS
FILTER
AC
RF
A/D Converter
MICROCONTROLLER
DIGITAL SIGNAL LEVEL
RECTIFIER
Unity Gain Op-amp
DOG FENCE
GAIN
ANTENNA
1) Single-Frequency Band Pass Filter2) Gain stages3) Rectifier4) Unity Gain Op-Amp 5) ADC on Emac
RF Filter Design•Frequency - 333 KHz
• Low frequency (LF) spectrum•IC used is LM318D•High Slew Rate and Gain Bandwidth Product
• Within desired noise floor
“Eyes”
• Ultrasonic sensors• Projects sound wave• Listens for echo• Converts time to distance• SRF05 – 3m range• We only need 1m
Reading the Ultra-Sonics
• Software Counter• Returns Value from 0-250• 250 is approximately 1m
CLEAR COUNT
SEND PULSE IS RETURN PIN LOW?
YES
IS RETURN PIN HIGH?NOINCREMENT
COUNTYES
RETURN COUNT
NO
SELECT SENSOR
Obstacle Avoidance• Ultrasonic sensors scan environment
• Distance thresholds are used in software
• Environment is stored in memory
• Proper action is taken DB
MOWER CHASSIS
C
A E
Obstacle Avoidance
DB
MOWER CHASSIS
C
A E
DB
MOWER CHASSIS
C
A E
D
B
MO
WER
CH
ASSI
S
CA
E
D
B
MO
WER
CH
ASSI
S
CA
E
Navigation
• Digital compass
• Voltage regulator
• PWM signal
• Follows heading
• Precise 90 and 180 degree turns
• Difficult indoors
}
Compass Tracking
• Error = (Heading – Desired heading) x Gain
• Error modifies PWMsignals accordingly
Example: Turn LeftError = 90 = (45-0)*2
LEFT MOTOR – ERROR & RIGHT MOTOR + ERROR
0˚
90˚
180˚
270˚
45˚
Error
Motor Control• Utilizes the EMAC’s onboard DAC• 0V to 5V → 0% to 100% duty cycle• H-Bridges control direction
Intelligence
• Software uses sensors’ data
• Follow the border
• Cover the field twice
• Avoid static and dynamic obstacles
Basic Algorithm
• Uses dog fence as border
• Starts with border• Ideal for square field• More testing• Minimal areas
missed
Double Cut
• Missed areas– Light blue/light green
• Up-Down pattern– Blue
• Left-Right pattern– Green
Safety Features
• Stay with in mowing area– Avoid unknown obstacles– Don’t cut neighbor’s yard
• Ultrasonic sensors– Don’t run over life forms– Don’t crash into walls
• Bump sensors– Last line of safety protection
• Kill switch– Manual cutoff
DB
MOWER CHASSIS
C
A E
System Block Diagram
RIGHT DRIVE MOTORLEFT DRIVE MOTOR
DIRECTION DIRECTION
MICROCONTROLLER
SENSOR INPUTS
OUTPUTS
DIGITALCOMPASS
ULTRASONIC SENSORS
H-BRIDGE
PWM
H-BRIDGE
PWM
DOG FENCE DETECTORS
ANALOG TO PWM
CONVERTER
ANALOGVOLTAGE
ANALOG VOLTAGE
Ultrasonic Error Correction
IS READING SIGNIFICANTLY
DIFFERENT THAN OLDREADING?
YES
NO
READING
OLDREADING = READING
RETURN OLDREADING
OLDREADING
YES
POS_BOGUS FLAG = 0?
NO
POS_BOGUS FLAG
POS_BOGUS FLAG = 0
RETURN READING
POS_BOGUS FLAG = 1
OLDREADING = READING
POS_BOGUS FLAG = 0
RETURN READING
Microcontroller Connections
EMAC MICROCONTROLLER
ADC1ADC0P4.6 P4.7
DOGFENCERF RXers
MOTOR CONTROLLER
DAC0 DAC1
2121Direction Pins PWM Adjustment
DIGITALCOMPASS
P1.1 P1.2 P1.4 P4.1P1.3 P4.2 P4.3 P4.4
ULTRASONICSENSORS
2 31
Feedback Pins
Pulse P
ins
4 1 2 3 45
P1.5 P4.5
5 1 2
P1.6
PW
M
P1.7
RESET
Compass Read Function
IS RETURN PIN LOW? IS RETURN PIN HIGH?NOINCREMENT
COUNTYES
CALCULATE HEADING
NO
YES
CHECK FOR ERROR
RETURN HEADING
Compass Read Code• int readcompass()• {•• unsigned int reading=0;
• while(compassPWM==1){} //if its already high, wait• while(compassPWM==0){} //if its low, wait• while(compassPWM==1) //if its high, start counting until it falls low, then return count• {• reading++;• }• reading = (reading/13)-10; //convert to value between 0 and 359• if(reading > 380){reading = comp_readingold;} //error checking ignore massive error • if(reading > 359){reading = 359;} //error checking• comp_readingold=reading;• return(reading);• //return(compass_lookup(reading)); //lookup table• }