Project City

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

The objective of this project is to add an additional camera and array of ultrasonic sensors to the base model car. These additional sensors will interface with the donkeycar software and allow the car to identify and react to common city driving events. The following steps were taken to accomplish this task:

  1. Brushless to Brushed DC Motor drive train conversion
  2. Interface two Raspberry Pi 3 Model Bs
  3. Use OpenCV to identify and classify common road signs
  4. Install an array of ultrasonic sensors to avoid road obstacles
  5. Implement all tasks into the DonkeyCar framework

Team Members

William Liu -

Jingpei Lu

Gates Zeng

Drivetrain Conversion

The brushless DC motor (BLDC) provided on the original chassis has one fundamental problem, it cannot be controlled effectively at low speeds. This makes it difficult accurately emulate congested city driving environments. While the BLDC performed well for high speed driving, its lack of accuracy and precision was not ideal for this project. We found two solutions for this project. One, use a Sensored BLDC for improved control while maintaining top end performance. Two, use a Brushed DC Motor for improved control, but sacrifice top end performance.

The Brushed DC Motor was chosen as its top end performance was adequate for the scope of the project and, more importantly, its cost is an order of magnitude less compared to a Sensored BLDC.


Design Constraints

Designing the Shaft Adapter

Proof of Concept

Development Release

Production Release

Tuning for Performance


Pinion Comparison

Original Pinion
Pinion 1
Pinion 2
Pinion 3

Interfacing the Pi's

While a Raspberry Pi is a widely available and affordable platform for an autonomous vehicle, it does have hardware limitations that required our team to use a second Pi. One Pi will be used to run the DonkeyCar software to autonomously drive the car. The second Pi will be used to process traffic signs, and read data from the ultrasonic sensors. We needed a way to interface the two Pi's so that they could effectively communicate with each other. There were many solutions to this problem, we considered communication over WiFi, Ethernet, I2C and UART. We ended up choosing UART since the implementation seemed easy and straightforward.

Proof of Concept

Development Release

Production Release

Identifying Road Signs

Obstacle Avoidance

Modifying the DonkeyCar Framework