From MAE/ECE 148 - Introduction to Autonomous Vehicles
Jump to navigation Jump to search


Welcome to the wiki page of Team 7! Our autonomous project consists of 4 parts which are indoor autonomous driving, outdoor autonomous driving, parallel parking and stop sign recognition. In this wiki page we are going to walk you through our autonomous vehicle designing process.

Our GitHub repository can be found here: [1]


Team Members

(Jerry) Yihui Yang

Chris Jensen

Jessica Yang

Alan Kuo

Vehicle Design


OE - Output enable. Can be used to quickly disable all outputs. When this pin is low all pins are enabled. When the pin is high the outputs are disabled. Pulled low by default. The 12.4V Lipo battery supplies power to the Electrical Speed Controller (ESC), The relay and the Raspbberry Pi.To power a raspberry Pi, a 12V to 5V step down is needed and the output will be from a USB port so that it can power the Raspberry Pi directly. The battery power goes to a switch and then goes to the RF controlled relay, which serves as an emergency stop switch of the entire system. The COM pin of the relay is connected to the 3.3V pin on the Raspberry Pi which provides the “high logic”. The NO pin stands for the “normally open” which controls logic level for the red LED. The NC pin stands for “normally closed” which controls logic level for the blue LED and it is connected to the output enable “OE” pin on the Pulse Width Modulation (PWM) module which disables the PWM pins on logic high. With this circuit built, we are able to shut down the steering and throttle control using a remote control. OE - Output enable. Disables all output pins on logic high Battery powers RPi thru a “step-down” converter Battery powers ESC, which controls DC motor Battery powers RF relay, which is a part of the emergency stop button Red LED is on when PWM is disabled, blue LED is on when PWM enabled PWM module controls servo motor Problem encountered: Broken RF Relay :( Partial power failure :(

Calibration Values After assembling the vehicle, the circuit and installed Donkey. We were able to calibrate the steering and throttle with PWM values as follow:


Neutral 330

Left 240

Right 420


Neutral 360

Forward Min 370

Forward max 450

Backward min 290

Indoor Autonomous Driving

We were able to build a decent model for our vehicle to drive autonomously on the indoor track for 5 laps after collecting 16k data, a short demo can be found here:

{{#evu:https://www.youtube.com/watch?v=HXKzBH-yZyQ&t=20s |alignment=center }}

Outdoor Autonomous Driving

The outdoor driving model took us much more effort to build. The first successful model we built was able to ran 3 laps autonomously, however, it only supplied a very limited throttle therefore the vehicle ran out of juice at the sharp uphill turns. This was due to the way we drove the vehicle during the training. We tried driving to slowly in the beginning so that it was able to have enough time to recognize the corners. For the following models, we supplied more constant throttles in fortunately we were able to ran our vehicle autonomously for 6 laps after training it for hundreds of laps!

Lessons learned:

• Driving with constant throttle helps

• Driving closer to the red lines helps because the cracks on the track are also black and they might confuse the models with the actuall black tapes

• Drive with consistent throttle and turning angles

• The outdoor track needs taller camera mounts with a wider angle because the track is wider than the indoor track

• The best training time is from 10am to 2pm with clear sky

• EBU2 courtyard is really cold, bring gloves;)

{{#evu:https://www.youtube.com/watch?v=nAYo9gsQZ9E&t=14s |alignment=center }}

Parallel parking

Parking without break {{#evu:https://www.youtube.com/watch?v=zFrD8Qqie0I |alignment=center }}

Parking with break {{#evu:https://www.youtube.com/watch?v=l8N4FTa2AsY |alignment=center }}

Stop Sign Recognition

We initialized the haar cascade classifier model and trained it using an pre-trained stop sign model. We then took an image of a stop sign using our pi camera and inputed into the model for it to recognize. The model was able to successfully output the number of stop signs found on the image.
We drew a rectangular box around the stop sign to ensure that the model works properly. While testing the model, we rotated the sign

References and Resources Used

Team 7 would like to give special thanks to:

• Parallel parking inspiration from [2018 fall team 2]

• OpenCV tutorial

• Professor Jack Silberman and professor Mauricio de Oliveira

• The amazing tutors

for making this project happen!