Submission Format for IMS2004 (Title in 18

advertisement
ParkBot
Jason Mersch, Danielle Anderson, Victor
Morales, and Victor Robles
School of Electrical Engineering and Computer
Science, University of Central Florida, Orlando,
Florida, 32816-2450
Abstract — This paper represents the design
foundation that encompasses the building and
utilization of ParkBot . It is an autonomous RC car
that will search for an available parking space in a
virtual parking lot when instructed via a signal from a
handheld RF transmitter. During the parking process,
ParkBot updates the user via a LCD screen that is
mounted on the front end which displays each
algorithm as it is executed. Once it has parked, it
awaits a return instruction to return to its original
destination.
Index Terms — Arduino, Autonomous, ESC,
Microcontroller, RC, RF, Servo, Ultrasonic
I. INTRODUCTION
With the ParkBot system, we would like to
eliminate the hassle with untrustworthy valet
personnel and the costs that are associated with
the convenience of valet parking. We decided to
solve this problem with the design and
implementation of ParkBot, an autonomously
valet parking vehicle with search, park, and
return functionality.
II. PROJECT OVERVIEW
ParkBot is a self-parking car. ParkBot is
programmed to execute instructions according to
specific algorithms. The optimal function is for
the car to locate an open parking space on a test
course autonomously and park in that space.
The car has have restrictions with respect to
distance travelled, speed, weight, and width of
parking spaces. During operation, it is able to
avoid obstacles using sensors. ParkBot is using
the platform of an existing radio controlled car.
If a commercially available car is used, it is
modified in accordance with the design. The
project is divided into subsystems. These
subsystems will include hardware and software.
The hardware will include power supplies, a
motor, servo motor for the steering mechanism,
speed controller, transmitter, receiver, and
sensors to detect obstacles and calculate
distances travelled. The brain of the project is
an
Arduino
microcontroller.
The
microcontroller or microprocessor is the central
subsystem that will send and receive
instructions/data for all of the other subsystems
included. Algorithms are written in order to
make ParkBot requirements fully functional.
This autonomous valet parking vehicle with
search, park, and return functionality would
provide a low cost solution to automatic valet
parking with potential use in real world vehicles.
Cars with this functionality would have their
own designated row of spaces. An overall I/O
block diagram is shown in Figure 1.
Signal from
ultrasonic sensors
for collision avoidance
Signal from
user's remote
control's receiver to
prompt ParkBot to
start searching and
pull out
Commands on
how to find and
park in a spot,pull
out of a spot, and
return to point of origin
(given by microcontroller)
input
input
ParkBot
input
Drive and
find an open
parking spot,
pull into it,
pull out of it, and return
output
to point of origin
when prompted by user's
remote control
while avoiding
collisions at all times
Fig. 1. Overall System I/O Block Diagram
III. SYSTEM COMPONENTS
ParkBot consists of many different
subsystems. Some of these subsystems were
purchased as fully functional for ParkBot, while
others were designed and created entirely by the
members of the group.
A. R/C Car Platform
ParkBot is intended to simulate a potential real
world environment. For this reason, a remote
control car was chosen as the platform for this
project. This car includes fully functional
proportional steering for easy maneuverability
for pulling into and out of parking spaces. Also
included is one rear motor with electronic speed
control. The car is manufactured by Duratrax
and the model is Evader ST and no major
assembly was required. The scale of the car is
1:10. The car measures 15.2 inches length by 13
inches in width by 5.8 inches in height. The size
and layout of the car allowed for circuit board as
well as additional power supplies. In addition,
the chassis has convenient locations for the
mounting of collision avoidance sensors. The
RC car platform is shown in Figure 2.
Fig. 2. Duratrax Evader RC Car Platform
Controlling the motor is achieved with the
electronic speed controller. To achieve this, the
speed controller that was included with the car
will be utilized. In the early stages of design, an
h-bridge was considered to for motor control.
The motor had the capability to draw current in
excess of the purchased h-bridge’s capacity, so
the existing speed control is used. While it is
rated at 128A, the only time the ESC will see
that much current (for a short time) is during
hard acceleration and the motor is essentially
stalled. In addition to controlling speed, it also
controls direction. The ESC has two heat sinks
that aid in keeping the MOSFET pairs cool
during operation as well as a green and red LED
to indicate status as assist with setup. The ESC
is rated for a maximum of 8.4 volts. The ESC
module is shown in Figure 4.
B. Motor and ESC
A single motor is located in the rear end of the
car and was included in the car when purchased.
We chose to keep this motor because it would
was economically sound.
The voltage
requirement is 7.2 to 8.4 volts and will be
powered by the recommended battery supply.
The motor is manufactured by Duratrax as well
and is a DC brushed 20 turn motor. The overall
length of the motor of the motor is 68 mm. This
motor is sufficient to drive the intended load for
the car. The stock weight is 3 lbs. 6.3 oz and the
additional weight of the three sensors, second
battery, and circuit board will add approximately
1.5 lbs. additional. It is important to note that
ParkBot will not need to exceed a speed of more
than 6mph. The systems stock maximum speed
is estimated to be 30 mph. Because of the
possible excessive speeds, it will be necessary to
control the speed of the motor in order to
effectively park in the vacant spaces in the
predetermined available parking spaces. The
motor is shown in Figure 3.
Fig. 3. Duratrax Photon Speed DC Motor
Fig. 4. Duratrax Sprint ESC
C. LCD Display
The LCD display of ParkBot is a feature that
will display each function of ParkBot as it is
executed. The LCD used is a Standard small
character LCD. The LCD is 16 characters wide
by 2 rows with white text on a blue background.
The volage requirement is 5 volts. The LCD is
connected via a single row of 16 pins. Once
ParkBot receives the initial function call from
the transmitter and execution begins, ParkBot
begins to move forward and the display will read
Seeking. During seek mode, ParkBot will first
check for a space available on the left while
displaying Seeking Left. ParkBot then checks
for availability on the right and displays Seeking
Right. This verifies that the right and the left
sensors are fully functional and seeking for
availability in the correct sequence. When an
available space has been detected, depending on
which side is available, the display shows
Parking Right or Parking Left. As soon as
ParkBot begins to pull into the available parking
space it will display the number of inches that is
required to fully park with the required clearance
from the front of the parking space. After
ParkBot has parked, the LCD will display Sleep
Mode while ParkBot is awaiting further
instruction from the transmitter. The second
stage of ParkBot’s functionality will be the
execution of the Pullingout function. During this
stage the LCD will display Pulling Out. Once it
has completely pulled out of the space to return
to the start point, the LCD will display Seeking
Return. The LCD is shown in Figure 5.
measurement technology needed to be chosen.
Ultrasonic technology was chosen because of its
high accuracy and familiarity with members of
the group. The Ping Ultrasonic Range Finder
was chosen to be implemented in the ParkBot
system. The Ping Ultrasonic Range Finder was
found to be well documented with many
examples on how to interface with an Arduino
microcontroller. It also had a range of 118
inches which is more than enough for the
ParkBot system. The Ping Ultrasonic Sensor is
shown in Figure 6.
Fig. 6. Ping))) Ultrasonic Range Finder
Fig. 5. LCD Screen Module
D. Steering Servo
The steering servo that was equipped with the
car is a fully proportional digital system. We
chose to keep the existing servo because this
was the most attractive feature about the car
when purchased. This allows for simplicity
when maneuvering into and out of parking
spaces. The servo is a DuraTrax SX-100 with
128 oz-in. of torque. The voltage requirement
for the steering servo is 6 volts and is regulated
from the 7.2 volt battery that is recommended
when purchased. This is a three wire steering
servo. The steering servo receives a control
signal from the microcontroller. The three
positions are: turnleft, turnright, and straight.
E. Obstacle Avoidance Sensors
In order to achieve all of the goals and
objectives for ParkBot, a good distance
ParkBot will utilize three of these ultrasonic
sensors in order to avoid collisions, detect open
and occupied parking spots, and enable for
precision parking maneuvers. All of these
sensors will be attached to an Arduino
microcontroller to give instant feedback as to
how far a solid object is away from ParkBot.
All of the sensors will help ParkBot properly
execute the necessary algorithms to complete
ParkBot’s objective. One of the sensors will be
mounted in the center of the front bumper. This
sensor will be responsible for giving distance
readings in order to avoid frontal collisions and
will also aid in pulling fully into the parking
spot. Another sensor will be located in the
center on the right side of ParkBot. This sensor
will aid in determining whether a right parking
spot is occupied or open. The final sensor will
be located in the center on the left side of
ParkBot. This sensor will aid in determining
whether a left parking spot is open or occupied.
F. RF Remote Control
ParkBot was originally going to use an
infrared remote control for the communication
between the microcontroller and user, but this
option it was going to require line of sight in
between the receiver on the microcontroller and
remote control transmitter from the user and
since a cover for the project was needed, it was
decided to go with radio frequency
communication.
To make the project more interesting and time
was not a problem; the RF remote control was
decided to be built instead of using the one that
came with the original RC car. The transmitter
and receiver units use for Parkbot are from
www.sparkfun.com. The transmitter use shown
in Figure 7 is a RF-link transmitter operated at
315Mhz, with a range distance of 500ft, small in
size, and it has a 2400 or 4800 transfer rate, and
it can be powered from 2 to 12 volts depending
on distance desired.
G. Power System
To properly power ParkBot, it is necessary to
have enough power to be distributed to the
motor and extra components. The power supply
is divided into two different power supplies, one
for the ESC with the DC motor and steering
servo shown in Figure 9; the other one for the
microcontroller, sensors, receiver unit, LCD, and
LEDs shown in Figure 10.
Fig. 9. Primary Power Supply
Fig. 7. RF Transmitter
The receiver will be connected to the
microcontroller and will be powered from the
voltage regulator connected to the secondary
battery. The receiver use shown in Figure 8 Is a
RF-link receiver operated at 315 MHz, with a
range distance of 500ft, small in size, and it has
a 4800 transfer rate, and it can be powered using
5v from the regulator.
Fig. 10. Secondary Power Supply
The first power supply will need a lot of power
for the DC motor, ESC, and steering servo to
constantly run for a long period of time without
being recharged. The DC motor runs with a
voltage of 7.2-8.4 volts, therefore the battery
pack use for this power supply is a Duratrax
DTX 4200 battery shown in Figure 11 Which
consist of a 7.2V rechargeable Ni-MH with
capacity of 4200 mAh. The steering servo will
be powered from a 6v voltage regulator
connected from the main battery.
Fig. 8. RF Receiver
Fig. 11. Duratrax DTX 4200 Ni-MH Battery Pack
The second power supply will not need a lot of
power to properly provide the power, and it will
need a battery larger than 5v since most of the
extra electronic components require this amount
of voltage. This voltage will come from a 5v
voltage regulator connected directly to the
second battery. The secondary power supply is a
DigitalEnergy RC 1600 batery in which
consists of a 9.6V rechargeable Ni-MH with
capacity of 1600 MAh. This battery will provide
more than enough power for the added
components to ParkBot and battery life is very
satisfactory.
The two power supplies batteries weight
around 1.5 pounds. This amount of weight does
not affect ParkBot performance based on testing
results. The rechargeable times for both batteries
are around 4 Hrs for the primary and 2Hrs for
the secondary.
H. Microcontroller
The main microcontroller is an Atmel
ATMega 328 with Arduino bootloader. This
microcontroller was chosen based on the
familiarity with the Arduino language and
architecture and the many examples available on
how to interface with ParkBot’s hardware. Also,
the microcontroller was fast enough and had
enough flash memory for storing ParkBot’s
program code. The microcontroller’s main
responsibility is to manage information coming
in and from all of the components of ParkBot.
The microcontroller is responsible for receiving
and processing input from the ultrasonic
collision-avoidance sensors and the RF remote’s
receiver. The data from the receiver and sensors
will be used to determine what ParkBot will do
in certain situations where input is needed from
the sensors or receiver. The microcontroller will
be responsible for sending commands to the
steering servo which control the left and right
movement of ParkBot and the ESC which will
control the DC motor for forward and backwards
movement
of
ParkBot.
Also,
the
microcontroller will be responsible for sending
commands to the LCD screen to display the
proper messages when needed. All of the
components except for the steering servo and
ESC will be connected to a digital I/O pin on the
microcontroller. The steering servo and ESC
will need to be connected to a PWM digital I/O
pin on the microcontroller for proper operation.
After properly connecting these components to
the microcontroller, commands will be written
up programmatically and programmed onto the
microcontroller.
I. Parking System Software
In order to simulate this real world system on a
small scale, proper calculations must be done in
order to set-up the test area for the most accurate
results to translate this from a system for an RC
car into a real world system for real life sized
cars. First, the fact that the RC car that was
chosen is 1/10th the size of a real world vehicle
will be taken into consideration for all
calculations. In a real world scenario, the
typical parking space is 240 inches in length by
120 inches in width. The average mid-sized car
is 185 inches in length by 70 inches in width. If
two cars of this size are parked adjacent to each
other centered in their respective spots, then
there will be a total of 50 inches in between the
two parked cars. Since our RC car is 1/10th the
size of a real world car, then we would need 5
inches in between ParkBot and each of the
neighboring cars. Since the RC car is 13 inches
in length, then the parking spot in our test area
would have to be 23 inches in width to account
for the 5 inches of space on both sides of
ParkBot. The ends of the spot will not denote
the end of the physical parking spot but will
denote where the end of a car will be located.
A few design considerations must be taken
into consideration while describing the parking
system software. The first design consideration
is that ParkBot will always check for obstacles
located in the front every time ParkBot needs to
move forward. When ParkBot needs to move
forward, it will enter into the front obstacle
detection algorithm. This algorithm checks to
see if the obstacle in front is at a safe distance
for ParkBot to move forward. If not, ParkBot
will check the front sensor at a rate of 2 Hz to
detect when the front obstacle has cleared away
from the path of ParkBot. If the obstacle was at
a safe distance to begin with, ParkBot will just
continue execution in whichever algorithm it is
currently executing.
This front collision
avoidance algorithm is further described in
Figure 12 below.
YES
YE
Front collision
avoidance algorithm
Front
obstacle distance
< 3 in.?
YES
YE
NO
Check front sensor
at 2 Hz
Return to
algorithm
execution
Front
obstacle distance
< 3 in.?
NO
NO
right sensor to see if a car is present in the
parking space to ParkBot’s right side. If the
distance to a solid object is greater than 20
inches, there is no car present in the spot, and
the spot will be deemed as open. If the distance
to a solid object is less than 20 inches, a car’s
rear bumper has been detected and the spot will
be flagged as occupied. ParkBot will go back up
to the first step and repeat this process until an
open spot is detected on the left or right. This
process is illustrated in Figure 13.
Wait for signal
to begin execution
Fig. 12. Front Collision Avoidance Algorithm
Before going into detail about how ParkBot
will find an open parking spot, two important
design considerations will be taken into account.
The first is that ParkBot will always have an
open parking spot in the designated valet lot that
it parks in. In other words, the valet lot would
be closed if no spots are detected as available for
ParkBot. Also, the open spots in the valet lot are
guaranteed to be large enough for ParkBot to
park in.
ParkBot will perform multiple algorithms that
will achieve all of the goals and objectives of the
system as a whole. The first algorithm that will
be performed is the search and pull in algorithm.
Since ParkBot will need to return to the point of
origin, we will need to keep track of the number
of points in the parking lot that ParkBot has
flagged as occupied. The first step is for
ParkBot to run the front collision avoidance
algorithm to detect whether it is safe for ParkBot
to move forward. Once it is safe to move
forward, ParkBot will move forward a short
distance (1-2 inches). In order to achieve this, a
delay must be placed after the signal is sent for
the ESC to run the motors forward. Once
ParkBot has come to a complete stop after
moving forward 1-2 inches, ParkBot will get
input from the left sensor to see if a car is
present in the parking space to ParkBot’s left
side. If the distance to a solid object is greater
than 20 inches, there is no car present in the
spot, and the spot will be deemed as open. If the
distance to a solid object is less than 20 inches, a
car’s rear bumper has been detected and the spot
will be flagged as occupied. If the left spot is
occupied, ParkBot will now get input from the
Check parking
spot to the
left
Go to front
collision avoidance
algorithm
NO
N
Open?
ParkBot moves
forward 2 inches
NO
N
NO
N
Check parking
spot to the
right
YES
YE
Open?
YES
YE
Begin parking
algorithm
Fig. 13. Search for Parking Spot Algorithm
The second algorithm will pull ParkBot into an
empty parking space. The motor will be pulsed
to turn on in reverse until the front wheels of
ParkBot are lined up with the front of the
parking space. After ParkBot comes to a
complete stop, the wheels on ParkBot will be
turned fully to the left or right depending on
whether the car is going into the left parking
spot or the right parking spot. Now, ParkBot’s
motor will be turned on until ParkBot has
completed a 90 degree turn. Now that ParkBot
is parallel with the orientation of the parking
spot, ParkBot must pull itself into the parking
spot completely. Initial specifications state that
ParkBot must be 3 inches from the front barrier
of the parking spot. The motor will be turned on
so that ParkBot moves a distance of 1-2 inches.
After ParkBot comes to a complete stop,
ParkBot will get input from the front sensor
which will give the distance in inches that
ParkBot is away from the front barrier of the
parking spot. If ParkBot is 3 inches or less away
from the front barrier of the parking spot,
ParkBot will go into a “sleep” mode to wait for a
signal from the RF remote control to pull out of
the spot. If the distance from the front barrier is
greater than 3 inches, the motor turned on so that
ParkBot moves a distance of 1-2 inches, and the
check will be performed again. This will be
repeated until ParkBot is at the specified
distance away from the front barrier of the
parking spot. This process is illustrated in detail
in Figure 14.
The final algorithm for ParkBot will pull
ParkBot out of the parking spot and return
ParkBot to the point of origin. One design
consideration is the fact that the user must wait
until the valet lot is clear of any moving cars
before prompting ParkBot to pull out. Once
ParkBot receives a signal from the RF remote
control, ParkBot will begin the pulling out of
parking spot process. Pulling out of the parking
spot is achieved by doing exactly the opposite of
pulling into the parking spot. The wheels of
ParkBot will be turned in the direction opposite
of the way they were turned pulling into the
spot. ParkBot’s motor will be turned on until it
makes a full 90 degree turn. Once this is
achieved, ParkBot’s motor will be turned on to
move in 1-2 inch increments for the same
number of times that it turned on the motor
looking for an open spot. After this is done,
ParkBot will still not be at the point of origin, so
ParkBot’s motor will be pulsed on to move 1-2
inches six more times in order to get to the point
of origin. This process is illustrated in Figure
15.
Back up
until front
wheels are
lined up with
front of spot
Wait for
signal to
pull out
NO
Left or
right spot
open?
RIGHT
RH
LEFT
Turn wheels to
the left
YES
Turn wheels in
opposite direction
as pulling into
spot
Turn wheels to
the right
Go to pull out
and return
algorithm
Go to front collision
avoidance
algorithm
YES
Move forward
until 90 degree
turn is completed
Signal to
pull out
received?
Turn wheels
straight and
move forward
Has <
3 inch front
clearance
NO
N
Move backwards
until ParkBot
completes a 90
degree turn
Go to front
collision avoidance
algorithm
Move forward
until point of
origin is reached
Fig. 14. Pull Into Parking Spot Algorithm
Fig. 15. Pull Out of Parking Spot and Return Algorithm
IV. CONCLUSION
In conclusion, ParkBot would make parking
experiences much more convenient and
comfortable without having to trust and rely on
valet parking personnel. ParkBot will also
eliminate the hassle of paying for the
convenience of valet parking and eliminate the
worry associated with letting someone else drive
your car.
ACKNOWLEDGEMENT
The authors wish to acknowledge the
assistance and support of Dr. Samuel Richie
along with the entire faculty and staff of the
University of Central Florida School of
Electrical Engineering and Computer Science.
BIOGRAPHY
Jason Mersch is graduating from the University
of Central Florida in May of
2010 with a Bachelor’s
degree
in
Computer
Engineering with a minor in
Mathematics.
Jason
currently is a participant in
the UCF / Lockheed Martin
College Work Experience
Program as a Software Engineer.
Upon
graduation, Jason will be starting a full time
Software Engineering position at Lockheed
Martin.
Victor A. Robles is currently a senior at the
University of Central Florida.
He will receive his Bachelor’s
of Science in Electrical
Engineering in the summer of
2010. He plans to achieve an
engineering position and plans
to attend graduate school.
Victor Morales is graduating from the
University of Central Florida in
August of 2010 with a
Bachelor’s degree in Electrical
Engineering. Victor hopes to
work with a government agency
or in communications. Also
Victor will be planning to
continue his studies in graduate
school.
Danielle Anderson is currently a
senior at the University of
Central Florida. She will
receive her Bachelor’s of
Science
in
Electrical
Engineering in the summer of
2010. Upon graduation she
plans to pursue a career
within
the
engineering
profession as well as continue her studies.
REFERENCES
[1] Duratrax
< http://www.duratrax.com/ >
[2] Arduino
< http://www.arduino.cc/ >
[3] Parallax
< http://www.parallax.com >
[4] Spark Fun
< http://www.sparkfun.com >
[5] Adafruit
< http://www.adafruit.com >
[6] Tower Hobbies
< http://www.towerhobbies.com >
Download