September 2026 - Ongoing
For my ROB380 - Autonomous Robotics course, I was tasked with developing a custom robot operating system as well as interactive interfaces to explore algorithms, motion, and control of robotic systems.
Project 1 - Heaps and Path Planning
For Project 1, I implemented a binary min-heap, heap-sort services, A* path planning (for shortest path identification) on occupancy grids in C++. Additionally, I built an interactive interface that steps through heap operations and search execution, allowing visual understanding and debugging of the underlying algorithms.
For Project 1, I implemented a binary min-heap, heap-sort services, A* path planning (for shortest path identification) on occupancy grids in C++. Additionally, I built an interactive interface that steps through heap operations and search execution, allowing visual understanding and debugging of the underlying algorithms.
Below is a demonstration of the binary min-heap implementation and interface, stepping through several algorithms that support the underlying structure:
Below is a demonstration of the A* route planning algorithm, showing how the search begins at an arbitrary start node, expands a frontier of explored nodes, and reaches the end node with the shortest path based on a Euclidean distance heuristic.
Project 2 - Robot Arm Simulation and Control
For Project 2 I developed an interactive dashboard for a two or three link robotic arm simulator. The equations of motions were developed using Lagrangian dynamics and different numerical integration methods (Euler, Midpoint, Verlet, and Runge-Kutta 4) to observe how they deal with error build up and predict the continuous motion of the robotic joints. The live joint state visualizer was equipped with PID tuning and inverse kinematics to observe how motor commands affect dynamic behavior of position tracking and tune PID values to remove unnecessary oscillations and achieve faster responses.
Below is a demonstration of a three-link simulation using a Runge-Kutta 4 numerical integrator, inverse kinematics, and arbitrary PID values (the slow speed of response indicates the PID values definitely need to be tuned) to reach a target position set by the user:
Project 3 - Robot Kinematics and Choreography
For Project 3 I built a C++ robotics runtime with URDF parsing, forward kinematics, world-coordinate transforms, and finite choreography. I also built a browser-based 3D viewer with robot positioning that allows URDF files to be loaded and joint angles to be adjusted by users.
Below is a demonstration of the browser-based 3D viewer using a High Torque Robotics Pi-12 robot:
Below is a demonstration of a choreography of the Pi-12 robot doing a moonwalk pictured in the browser-based 3D viewer: