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 >