Nischal Basnet
Department of Electrical Engineering
University of New Orleans
New Orleans, LA USA
nbasnet@uno.edu
Abstract The objective of our project is to design and
build the Intelligent Parallel Parking and Obstacle Avoidance
System. The system is comprised of autonomous vehicle
navigation and micro-processing systems installed on a model car.
The system measures an available parking space, checks whether
the space is large enough for parking, aligns the car correctly in
the traffic lane and then performs the necessary parallel parking
maneuvers into the parking spot. In addition to parallel parking,
the system can detect static obstacles, like road blocks and
dynamic obstacles, like pedestrians, in the vehicles path. If
dynamic obstacles are detected, the vehicle stops until the
obstacle moves out of the way. If static obstacles are detected, the
vehicle maneuvers around the obstacle ensuring a collision free
trajectory. The product provides an economic solution to
autonomous parallel parking and can be added to any regular
vehicle thus encompassing a wider customer base. The product
provides an economic solution to autonomous parallel parking
and can be added to any regular vehicle thus encompassing a
wider customer base.
Keywords- autonomous vehicle; intelligent parallel parking;
microprocessor; sensors; motor controler; dc motor; servo motor;
stepper motor.
I.
INTRODUCTION
MICROPROCESSOR SYSTEM
C. Motor controller
Controlling the motion of the dc motor directly through
microprocessor is difficult task. Hence, in order to make it
easier to control the dc motors motion, we decided to use a
motor controller chip. For our purpose we choose SN754410
quadruple half-h driver. Using SN754410 we can control
forward, backward and stop motion of the dc motor.
III.
PROGRAMMING
A. Alignment Algorithm
Read distance
from two distance
sensors
Distance from
(Front Sensor >
Back Sensor)
Check to see
distance from
which ultrasonic sensor is
more?
Steer from
current position
to left
Distance from
(Back Sensor >
Front Sensor)
Steer from
current position
to right
D2
D1>D2 turn
right
D1
Yes
Wait to see if
obstacle is removed
(Dynamic or Static
Obstacle)
No
Maneuver
around the
obstacle
Avoid
obstacles/Turn
left and move
forward until
no obstacle is
present
towards right
D2
D2>D1 turn
Left
Move until no
obstacle is
detected
Go back
straight
Stop for
obstacles/
Stop after
3 sec
Check the
distance to
right using
Ultra-Sonic
sensor
Check whether
enough length
of parking space
is covered?
Yes
Is vehicle
(distance
of <
20cm)
detected?
Yes
Move forward
until the back
wheel of the
vehicle is in
line with the
parked vehicle
No
Travel distance
greater than
required length
of parking
space
digitalWrite(LED, LOW);
pinMode(pingPin, OUTPUT);
digitalWrite(pingPin, LOW);
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT);
duration = pulseIn(pingPin, HIGH);
// convert the time into a distance
mm = microsecondsToCentimeters(duration);
V.
B. Servo Motor
Microprocessor was interfaced directly interface with
Servo motor by connecting the control pin from servo, directly
to the digital input/output pin on the Arduino board. Different
values were passed from microprocessor to the servo motor
through the pin indicating where to rotate the front tires. Here,
90 meant straight tires and values less meant turn to left while
more meant turn to right
Following code turns the front wheel from straight to 55
degree to the right.
for(pos = 90; pos <= 145; pos += 1) // turn 55 degree right
{ // in steps of 1 degree
myservo.write(pos);//servo position = variable 'pos'
delay(15); // waits 15ms for the servo
}
C. Obstacle Sensor
Microprocessor was interfaced with infrared obstacle
sensor by directly connecting the output pin from the sensor to
the analog input pin on the Arduino board. When the sensor
detects an obstacle the sensors output voltage changes and is
read as input by the microprocessor. The change in voltage is
converted to a number to check the presence of the obstacle.
Following code stops the dc motor when obstacle sensor
detects an obstacle.
int distanced1 = analogRead(0);
int distanced2 = analogRead(1);
if ( distanced1 > 900 || distanced2 > 900)
{ //stop when obstacle present
digitalWrite(motor1Pin,LOW);
digitalWrite(motor2Pin, LOW);
}
D. Distance Sensor
Microprocessor was interfaced with ultrasonic obstacle
sensor by directly connecting the output/output pin from the
sensor to the digital input/output pin on the Arduino board.
The microprocessor first sends a high pulse for about 2
microseconds from the sensor. When the pulse hits an obstacle
the sensor receives an echo. The time taken by the sensor to
send signal and receive its echo is then converted to distance.
Following code sends a pulse and converts the time taken
to receive the echo pulse to distance.
ACKNOWLEDGMENT
I would like to thank my teammates, who, over the last two
semesters, have shown tremendous work ethic and group work
skill. We have faced a lot of ups and down while designing
and building the prototype and I am very happy with the
composure and program solving skill that my teammates have
shown. So I would like to thank Abishek Yadav for properly
managing the team, and designing and building the
mechanical system. I would like to thank Ajit Gauli for
designing the sensor and motor systems and helping while
debugging them. I would like to thank Anil Pandey for
designing the power system. The hard work of all the group
members during the last two semesters made the project
successful.
ASIN Company
http://www.aisin.com/news/products/060929.html [Online]
Ford Motor Company. http://media.ford.com/article_display.cfm?
article_id=29625 [Online]
Canadas Driving School Directory.
http://www.drivingschool.ca/drivereducation/page7.html. [Online]