top of page

Autonomous Obstacle Avoidance Robot Car

Fall 2021

Course Info

ME 461: Computer Control of Mechanical Systems

A lab-based course focusing on development and integration of mechanical and electrical systems. We hand-soldered a PCB, and used a TI F28379D Launchpad Microprocessor to control peripherals on the PCB. Projects included controlling a 3-wheel robot, creating a segway-style 2-wheel robot (balancing using control law and an MPU-9250 IMU), and an open-ended final project.

Project Details

ME 461, Computer Control of Mechanical Systems, was a very hands-on course involving the integration of electronic and mechanical systems. In the labs, my lab partner and I built a robot car from scratch, programming and controlling it using a TI C2000 microcontroller. For the final project, we were tasked with adding additional functionality to the car through extra processors and sensors. We chose to turn the simple remote-control robot car into an autonomous obstacle avoidance vehicle that could also map its surroundings. This was accomplished through the addition of a Raspberry Pi, MPU-9250 IMU, and LiDAR sensor.


My responsibilities mainly involved setting up dead reckoning and the closed loop control of the car. Dead reckoning involved determination of the world-fixed frame position and heading. The heading of the robot car was estimated by combining an analytical estimate with a sensor estimate. Quadrature motor encoders were used to determine the rotation direction, absolute angle, and rotational speed of each wheel (the robot consisted of 2 motorized wheels and 1 caster), which were used to analytically estimate absolute heading. The sensor estimate was developed with the MPU-9250 accelerometer, gyroscope, and magnetometer using sensor fusion with a cascaded complementary filter. With an accurate heading value, we were able to map the position of the car and obstacles as it moved, and we used our main control law to drive the robot heading to a desired angle upon seeing an obstacle.


In this project I worked extensively with discrete time control systems and data acquisition systems, and I learned a lot about the intersection of mechanics, electronics, and computing. Additionally, I gained experience with inertial measurement units, complementary filtering, and Raspberry Pi. I would have liked to refine the dead reckoning through additional data (adding another MPU-9250 IMU or using GPS tracking), as the combined heading estimate was still subject to bias, but overall the car performed well and avoided obstacles while simultaneously mapping its position with Python on the RPI.


We submitted this project on hackster.io; you can find more project details at our submission at the following link:

https://www.hackster.io/440448/creation-of-a-mapping-obstacle-avoidance-robot-car-1bf802

bottom of page