MEAM 5100: Design of Mechatronic Systems | Fall '24
Introduction
This project was the final capstone for Penn’s graduate mechatronics course, completed in a three-person team.
I led the software and autonomy stack for a low-cost semi-autonomous mobile robot, integrating sensing, embedded firmware, closed-loop motor control, and a finite-state autonomy pipeline.
The system demonstrated waypoint navigation, wall-following, real-time obstacle avoidance, and a manual-override GUI over WiFi.
This project showcases full-stack robotics engineering: embedded systems, controls, perception via low-cost sensors, and systems-level integration. You can find the github repo here.
Electric schematic for robot components
SolidWorks assembly of lasercut parts
Design Process
Guiding Constraints
The design was constrained by a $150 budget and the requirement to implement functional autonomy on low-cost hardware.
We selected a differential-drive architecture for predictable dynamics and straightforward control. The onboard compute was an ESP32-S2, chosen for its WiFi support, real-time timers, PWM peripheral availability, and ISR handling.
I integrated two complementary ranging sensors: a forward-facing Time of Flight (ToF) module and a right-facing Position Sensitive Detector (PSD). This enabled me to implement reactive behaviors with minimal compute overhead.
Software Design
I architected the full autonomy stack around a deterministic finite state machine (FSM) that could switch between manual control and multiple autonomous behaviors.
The primary autonomous mode included a hierarchical FSM for global waypoint navigation: straight-line motion when unobstructed, and reactive wall-following when encountering obstacles.
Other behaviors included a perimeter-following mode and an “attack” mode for competition objectives.
My teammate’s GUI interfaced with my firmware over WiFi, providing manual teleop, remote state selection, and a live localization display.
Technical Takeaways
Autonomy & Controls
Sensor Fusion & Integration: Integrated ToF and PSD sensors, implemented filtering, and tuned thresholds to perform reliably in a cluttered indoor arena.
Closed-loop Control: Built and tuned PID speed controllers using motor encoder feedback. Used Ziegler–Nichols tuning to stabilize differential-drive tracking under load changes.
Embedded Development: Developed firmware in C++ on the ESP32-S2, utilizing hardware timers, interrupts, PWM generation, and serial/WiFi communication.
Systems Debugging: Debugged real-time failures, sensor saturation, EMI-related noise, and mechanical inconsistencies between individual motors.
Final Project Demo Day
The robot successfully demonstrated reliable teleoperation, ramp traversal, and autonomous behavior execution.
During evaluation, the autonomy pipeline captured 2/3 competition targets and completed a full arena loop using wall-following.
Although several hardware inconsistencies emerged during competition, the system validated the full autonomy stack and embedded control loop under real operating conditions.
Mobile Robot Diagram
GUI showing live localization, autonomous states, and manual controls