Autonomous Stunt Robot
Fast Robots
Dr. Kirstin Petersen
Individual
January 2023 - May 2023
Skills:
-
Embedded Systems
-
Sensors, complementary filter
-
Control Theory (PID)
-
Mapping and localization
-
Motors, motor drivers, hardware
Overview
Over the course of 12 labs, I turned a normal RC car into an autonomous robot capable of performing stunts through PID controllers, as well as mapping, localization, and motion planning. The course covered a variety of topics in robotics, hardware, and especially sensor fusion and different methods to make sensor data more accurate such as complementary filters. One thing I loved about the class was its focus on practical robotics as well as theory. I learned that working with "fast" robots goes beyond just good control theory and dynamics models; I also needed to take into account sensors, processing speed, and how I could simultaneously optimize and simplify our system. I also needed to figure out how to overcome sensor noise, system failures (such as uneven motor drivers), and inherent limitations (such as wheels slipping, slow sensor sampling rates, etc.).

The robot in question
Summary
For the class, we all had websites which served as a portfolio for all of our labs. I have linked mine here:
https://mattieuzhai.github.io/Fast_Robots_mz375/
While I would love for you to check all of the labs out, if you are in a rush, here are some of the highlights (the final labs from 8 after really show what the robot is capable of):
Lab 2: Bluetooth Communication:
For this lab, we set up Bluetooth on our MCU using the BLE protocol and allow communication between the robot and computer. We also set up notification handlers to make parsing through data from the robot easier.
For this lab, we had the choice of setting up a PID controller to control the distance of the robot from the wall in front it or an orientation-based PID controller using data from the IMU to control the yaw of the robot. I chose to create the distance-PID controller (we eventually needed both anyways).
Lab 8: Stunts (definitely check this one out!)
This was the main lab for the first half of the class, where we had to program our robot to do a stunt. The stunt I chose was to have the robot drive at a wall as fast as possible and then do a 180 degree turn 1 foot away from the wall and drive back. I used both the distance-PID controller and the orientation PID controller to perform this stunt.
For this lab, we had to use everything we had learned to have our robot navigate a set of waypoints within a known map. I used my PID controllers and an inverse odometry model based on a turn-then-move scheme to control my robot and have it navigate the map.



