Skip to content

Repository files navigation

ROS 2 Logo

ROS 2 Autonomous Navigation Robot

A fully autonomous mobile robot built using ROS 2 Humble, Gazebo, and Nav2, capable of mapping, localization, and goal-based navigation in a custom simulation environment.


πŸŽ₯ Demo


πŸ–ΌοΈ Project Showcase


🧠 What This Project Demonstrates

This project showcases:

  • βœ… Full robotics pipeline (Perception β†’ Localization β†’ Planning β†’ Control)
  • βœ… Strong understanding of ROS 2 architecture
  • βœ… Hands-on experience with Nav2 stack
  • βœ… Debugging of real-world issues:
    • TF tree errors
    • Costmap tuning
    • QoS mismatches
  • βœ… Ability to design scalable, modular systems

βš™οΈ System Architecture

πŸ”Ή High-Level Flow

LiDAR β†’ SLAM β†’ Map β†’ AMCL β†’ Nav2 Planner β†’ Controller β†’ cmd_vel β†’ Robot

πŸ”Ή ROS 2 Graph (rqt_graph)


πŸ”Ή TF Tree


πŸš— Robot Capabilities

  • πŸ—ΊοΈ Mapping using SLAM Toolbox
  • πŸ“ Localization using AMCL
  • 🎯 Goal-based navigation (Nav2)
  • 🚧 Obstacle avoidance (costmaps)
  • πŸ“‘ LiDAR-based perception
  • πŸ” Stable TF tree (map β†’ odom β†’ base_link)
  • πŸ•ΉοΈ Manual + autonomous control

🧩 Navigation Stack Breakdown

Component Role
Map Server Loads static map
AMCL Localization
Planner Server Global path planning
Controller Server Local trajectory execution
BT Navigator Decision making

πŸ§ͺ Simulation Environment

  • Gazebo Classic
  • Custom maze world
  • Differential drive robot
  • Realistic LiDAR + IMU sensors

🐳 Docker Deployment

Build Image

cd ~/ros2_ws/src/diff_robot
docker build -t diff_robot_nav2 .

Run Container

xhost +local:docker

docker run -it \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
--env="LIBGL_ALWAYS_SOFTWARE=1" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--net=host \
--name diff_robot_container \
diff_robot_nav2

Run Simulation

source /ros2_ws/install/setup.bash
ros2 launch diff_robot robot.launch.py

Run Navigation (New Terminal)

docker exec -it diff_robot_container bash
source /ros2_ws/install/setup.bash
ros2 launch diff_robot nav2.launch.py

Usage

  1. Open RViz
  2. Set Initial Pose
  3. Send Navigation Goal
  4. Robot autonomously reaches target

About

A fully autonomous mobile robot built using ROS 2 Humble, Gazebo, and Nav2, capable of mapping, localization, and goal-based navigation in a custom simulation environment.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages