Autonomous Warehouse AMR with ROS 2 Jazzy, Gazebo Harmonic and Nav2

Hi everyone,

I’d like to share my first complete autonomous mobile robot project: an Autonomous Warehouse AMR simulation built with ROS 2 Jazzy, Gazebo Harmonic and Nav2.

The robot is a differential-drive AMR equipped with a simulated 2D GPU LiDAR and can autonomously navigate inside a warehouse environment using:

  • AMCL for localization
  • robot_localization EKF for odometry / TF
  • SmacPlanner2D for global path planning
  • Regulated Pure Pursuit for path tracking
  • Local and global obstacle-aware costmaps
  • Nav2 Collision Monitor for safety

I also built a small mission system where missions are defined in YAML files, for example:

PICKUP → SHELFA → DROPOFF → HOME

The mission manager supports retries, pause/resume, cancellation, status tracking and mission logging.

For testing dynamic obstacles, the simulation includes a moving warehouse worker. The robot detects the worker through LiDAR, updates the Nav2 costmaps and reacts accordingly.

I also created a simple Tkinter operator dashboard for selecting missions, monitoring mission progress, viewing the current/next station, elapsed time, event logs and Nav2 lifecycle status.

The complete system can be launched with a single ROS 2 launch command.

The project is available on GitHub:
https://github.com/Anastasios03git/autonomous-warehouse-amr

I’d be very interested in feedback, especially regarding the ROS 2 / Nav2 architecture and ideas for improving the project further.

Thanks!