Developed a full-stack autonomous system on the MBot Classic platform using ROS 2 (Jazzy) and C++ for SLAM and navigation in unknown environments. I built a Particle Filter that incorporates an approximate action model and a Gaussian sensor field model to achieve robust state estimation from encoder and LiDAR data. For navigation, I implemented Frontier Exploration, A* path planning, and a Pure Pursuit motion controller. By integrating a continuous replanning loop, I ensured smooth, high-fidelity trajectory following and real-time obstacle avoidance.
By tuning the IMU, encoders, and motor PID gains, I aligned the physical hardware with my software models to eliminate sensor drift and systematic odometry errors. This involved calculating specific motor slope and intercept values to account for mechanical deadbands, which were stored in FRAM to support a combined Feed-Forward + PID control mode.
The Rotate-Translate-Rotate (RTR) controller ensures precise final headings by decoupling orientation; its "stop-and-go" nature creates significant latency. The Pure Pursuit controller prioritizes momentum and fluid arcs. This transition enables smooth, continuous motion and a more natural movement profile, sacrificing fixed-heading alignment for significantly faster, more efficient path tracking.