Developed autonomous navigation logic for a LiDAR-equipped robot capable of navigating to any user-specified coordinate. The system was deployed and managed using ROS2 and Docker, and simulated using Foxglove for visual debugging.
The core navigation stack implements A* Pathfinding for global path planning and Pure Pursuit Controls for local trajectory following — all written in C++.
The core navigation stack implements A* Pathfinding for global path planning and Pure Pursuit Controls for local trajectory following — all written in C++. Uses tf2 for geometric calculations for navigation.
Scans input packets from LiDAR sensor and creates a costmap based on input. Real-time updates of costmap occur, managed with ROS2, to create a fully updated occupancy grid used in navigation.
Nodes were structured as a pub/sub system with separate packages for perception, planning, and control. Docker was used to containerise the full stack for reproducible deployment.
The system was validated in Foxglove, allowing visual debugging of LiDAR point clouds and planned paths in real time.
Getting the lookahead distance right took far longer than expected — too short and the robot oscillated, too long and it cut corners. Learned to treat control parameters as experiments, not guesses.
ROS2 node discovery across containers required careful configuration of DDS settings. First real exposure to containerised robotics workflows.
Never worked on LiDAR perception before. Went through numerous guides on how to do it — the task was very difficult but resulted in a solid understanding of occupancy grids.