Linux + ROS2
Separated map, planning, vehicle-state, visualization, and control responsibilities into ROS2 nodes with explicit topic interfaces.
Built a Linux-based autonomous-driving simulation stack that performs trajectory planning, path and speed optimization, and closed-loop tracking through a modular ROS2 pipeline.
The project focuses on the planning layer of an autonomous vehicle: selecting a safe route around obstacles, converting that route into a smooth drivable trajectory, and passing control-ready reference states through ROS2.
A trajectory seed initializes a collision-free route, and the EM-style planner then alternates between path and speed refinement so the final output is smoother, dynamically feasible, and easier for the downstream controller to track.
Separated map, planning, vehicle-state, visualization, and control responsibilities into ROS2 nodes with explicit topic interfaces.
Implemented performance-sensitive planning modules in C++ and organized packages, dependencies, and executables through CMake.
Generated a collision-free route that serves as a strong initialization for continuous trajectory optimization.
Alternated path and speed optimization to reduce curvature, respect obstacle boundaries, and produce a trackable reference trajectory.
I learned that a clean trajectory is not enough on its own. The planner, controller, and vehicle model have to work together so the final path can actually be executed smoothly in closed loop.
RViz views and trajectory plots made failures much easier to understand. Seeing the reference path, ego motion, and obstacles together helped me iterate much faster on both planning and control behavior.
Keeping planning, state estimation, control, and visualization separated as ROS2 components made the stack easier to extend, debug, and improve without rewriting the whole system.