Onboarding
Research Group — Intern Onboarding
Autonomous Mobile Robots Onboarding Plan
Set up the environment
Get something moving before reading anything
Run ROS 2 inside a container instead of installing it on your host. It keeps your system clean, makes switching between distros trivial, and works the same on Linux, macOS (Apple Silicon included), and Windows (WSL2). Install Docker, pull osrf/ros:jazzy-desktop-full, and use rocker for GUI and NVIDIA GPU passthrough. Only fall back to a bare-metal install if Docker truly does not fit your workflow.
ROS 2 Jazzy Jalisco is the current recommended LTS (supported through May 2029) and the default target for Nav2, TurtleBot4, and Gazebo Harmonic — start here. Humble Hawksbill (LTS, EOL May 2027) is acceptable only when extending an existing Humble codebase; new work should target Jazzy. Avoid non-LTS distros (Iron, Kilted) unless you have a specific reason.
The official Nav2 getting started guide. Spin up TurtleBot4 in Gazebo Harmonic and send it to a goal point. If you set up the Docker image above, the whole stack runs in a container — no system-wide install required.
The current Nav2 reference platform from Clearpath Robotics, with native ROS 2 support. Simulates with Gazebo (Harmonic on Jazzy, Fortress on Humble) out of the box — no hardware needed.
TurtleBot4 navigates to a clicked goal point in simulation. Can launch the stack, build a map with teleop, save it, and send a Nav2 goal.
Understand localization
How does the robot know where it is?
The algorithm behind Nav2's AMCL package. Explains how the robot uses particle filters to localize itself on a known map using laser scan data.
Before AMCL can localize, you need a map. SLAM Toolbox is the standard tool in Nav2 for building one from lidar data.
Can explain what AMCL is doing when the robot localizes. Understands the difference between mapping mode and localization mode.
Understand collision avoidance
How does the robot avoid obstacles in real time?
The algorithm behind Nav2's DWB controller. Only 8 pages, very clearly written. Explains how the robot samples velocity commands and picks the one that avoids obstacles while tracking the global path.
Costmaps are how Nav2 represents obstacles for both the global and local planner. Understanding inflation radius and layer configuration is essential for any real deployment.
Can tune costmap inflation radius and explain the effect. Understands the role of the local planner versus the global planner.
Understand the full system
How do all the modules fit together?
The official Nav2 architecture paper by its main author, Steve Macenski. Read this after running Nav2 for a few days — every design decision will make sense in context.
Watch alongside the Marathon 2 paper. The author walks through every component in a live setting, which helps connect the paper to actual code.
Can draw the full Nav2 pipeline from scratch: sensor → costmap → BT navigator → global planner → local controller → cmd_vel.
Supplementary references
Keep these open throughout. Reach for them when you hit a wall.
The definitive reference when tuning any Nav2 component. Bookmark this and use it constantly.
Dynamic obstacles, custom plugins, multi-robot, GPS navigation, and real hardware deployment.
The RPP controller in Nav2 — a simpler and more robust alternative to DWB for many real-world use cases.
The current recommended global planner in Nav2, replacing the older NavFn. Supports SE2 and hybrid-A* planning for non-holonomic robots.
When stuck, these are the fastest ways to get answers. The Nav2 Discord is especially active.