- Ari Cortes – ECE Senior
- Antoine Laget – CSE Senior (UCSD Extension)
- Kevin Lam - MAE Senior
- Jack Ringelberg - MAE Senior
In this class, students are tasked with programming a remote control car to navigate a track autonomously. This is first accomplished by using deep learning to train an AI model with the Donkey Car framework, and then tackled using ROS to implement image processing and lane-following algorithms. In both cases, training and tuning result in a lot of eccentric behavior and crashes, so an emergency stop is implemented to minimize accidents. Currently, a relay controlled by a wireless clicker disables the PCA9685 PWM board, stopping steering and throttle commands from reaching the servo and motor. This assembly is not ideal because it is bulky, requires with a lot of jumper wires, and causes the car to coast to a stop rather than brake. The goal of this project is to replace the relay and PWM board assembly with a single ESP32 wi-fi capable microcontroller. The ESP32 will generate PWM signals to control the servo and motor and will receive emergency stop commands through wi-fi from a user's phone or computer.
(IMAGE OF PWM+RELAY+CLICKER NEXT TO ESP32 AND A PHONE)
- ESP32 generates PWM signals based on commands from Jetson Nano to control the servo and motor
- ESP32 functions as an access point for a phone or computer to connect to
- Website with a red button activates an emergency stop
Nice to Haves
- Heartbeat and watchdog to shutdown car when wi-fi connection or serial connection with Jetson is lost
- Expand website to include additional functions beyond emergency stop
(QUICK VIDEO OF PROJECT (I (JACK) CAN DO))
(PICTURE OF CAR HERE OR 3D SCAN)
The major components of the mechanical design include the baseplate, camera mount, and Jetson Nano case.
Text about baseplate
Jetson Nano Case
Text (maybe link to where we got design from) (also should we use the triton AI one or the one we had on car before?)
Description of components, circuit diagram before and after replacement of PWM board and relay
Git Repository: (LINK HERE)
ESP32 (LOLIN32) Code
Description of code behavior
Jetson Nano Code
- ROS nodes, topics, etc. maybe a rqt graph?
- If we do, or if not describe how you would modify the code
How we designed and also include info on how someone would add features in the future
Deep Learning Autonomous Laps
ROS Autonomous Laps
ESP32 with E-Stop
Advice and Suggestions for the Future
- Build to Crash - No matter how carefully you drive, you will probably crash a lot! A lot of collisions occur between cars and are often not your fault. The best way to prepare for this is to ensure your mechanical parts are beefy and electrical components are covered.
- Get Driving ASAP - Training a deep learning model at the tent track was a particularly difficult task due to the constantly changing lighting conditions. It was critical to start training early to ensure there was enough time to work out any kinks and develop a robust model. Listen to Professor Silberman and send your parts out in the first week!
Future Suggestions for ESP32 Use
- Expanding ESP32 Website Functionality - Describe possible expansions and how to implement
- Other Suggestions for the ESP32 - If we have them
Acknowledgements and References
- Team 1 - Thank you for helping us determine the proper PWM signals to send to the motor and servo.
- Dominic and Haoru - Thank you for debugging with us throughout the quarter.
- Professor Silberman and Professor de Oliveira - Thank you for providing a priceless learning opportunity!