Skip to content

Latest commit

 

History

History
160 lines (117 loc) · 3.3 KB

File metadata and controls

160 lines (117 loc) · 3.3 KB

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