MEAM 5100: Design of Mechatronic Systems | Fall '24
Introduction
This was a small group (3-person) final project for Penn's graduate mechatronics course.
The goal was to design and build a mobile robot with autonomous capabilities, via a combination of sensors, motors, and microcontrollers.
The functional goals were for the robot to have wall-following, obstacle-avoidant path finding to global coordinate waypoints, and a user interface for manual control.
Electric schematic for robot components
SolidWorks assembly of lasercut parts
Design Process
Guiding Constraints
We used the cost constraint of $150 component budget and the functional goals to guide our design process.
We chose a non-holonomic differential drive system for its simplicity and maneuverability, with 2 DC motor-driven wheels, and a caster wheel for stability.
We used an ESP32-S2 microcontroller for WiFi capabilities and a wide variety and quantity of peripherals.
I decided on using 1 forward-facing sensor, an infrared time-of-flight (TOF) sensor that gave readings precise to 5cm, and 1 rightward-facing sensor, an infrared position sensitive detector (PSD).
Software Design
We decided on having a Finite State Machine that can switch between various autonomous states and a manual control state, hence the semi-autonomous nature of the robot.
I designed the global path finding state, which itself had an FSM toggling between straight navigation and wall-following behavior.
Another autonomous state was a "dumb" wall-following state that performed wall-following around the perimeter of the game arena.
The third autonomous state was the attack mode, which would.
While we had a terminating condition for each of the autonomous states, the GUI that my teammate developed allowed for manually setting certain high-level states, manual WASD controls, and a live localization map.
Technical Takeaways
Autonomy & Controls
Path Finding: Implemented bug algorithm and tuned sensor threshold constants to perform in game arena
PID: Implemented a PID controls feedback loop to take in motor encoder readings and compare to speed setpoints for stable motor controls.
Tuned using Ziegler-Nichols method.
Final Project Demo Day
We were able to demonstrate full manual control, with forward, backward, and turning motion, ability to go up an inclined ramp, and attack an enemy robot.
Using autonomous path finding, our robot was able to capture 2 out of 3 designated enemy targets, and complete a full wall-following lap around the game arena.
While the autonomous behaviors worked well in the graded evaluation, it did not work as well during the competition, and we encountered some hardware issues as well.
Mobile Robot Diagram
GUI showing live localization, autonomous states, and manual controls