Navigation
This tutorial explains how to use Navigation2 (Nav2) for 2D autonomous navigation.
You will learn:
- How Navigation2 works
- How to use Navigation2 in practice
What is Navigation2?
Navigation2 (Nav2) is a collection of packages in ROS 2 that enables autonomous navigation for mobile robots. It integrates localization, path planning, obstacle avoidance, and path following to move a robot automatically to a given destination.
Main applications:
- Indoor mobile robots (delivery robots, cleaning robots, etc.)
- Autonomous navigation for research robots
- Autonomous driving in competitions and projects
- Automated control of a Minecraft player
How Navigation2 Works
Nav2 consists of several main layers:
Costmap
Represents the environment using maps and sensors (e.g., LiDAR). The costmap indicates distances to obstacles, which is essential for planning and safe navigation.
Planner
Generates a global path from the start to the goal based on the costmap and robot footprint.
Controller
Follows the path generated by the planner. It computes velocity commands from the path and localization data to drive the robot.
Behavior Tree
Controls the overall flow of tasks (e.g., navigating to a goal). Tasks are described in an XML tree structure, enabling flexible behaviors beyond just driving.
Requirements
- ROS 2 Humble (Ubuntu 22.04 recommended)
- Development tools:
git,vcstool,colcon,rosdep - Repository:
minecraft_ros2_example - Packages:
minecraft_ros2family (retrieved via.reposfile) - Minecraft client launched via
runClient.sh
Setup Instructions
0. Install Development Tools (if not already installed)
sudo apt update
sudo apt install -y git python3-vcstool python3-colcon-common-extensions python3-rosdep
# Initialize rosdep (only once)
sudo rosdep init || true
rosdep update1. Source ROS 2 Environment
source /opt/ros/humble/setup.bash(Ensures ROS_DISTRO=humble is active)
2. Create Workspace & Get Samples
Follow the Sample Setup Guide to prepare the sample code.
Run Instructions
Terminal 1: Launch Nav2
source ~/ros2_java_ws/install/setup.bash
source ~/minecraft_ros2_example_ws/install/setup.bash
ros2 launch minecraft_ros2_example nav2_bringup.launch.xml- Starts Nav2-related nodes
- Uses the
world -> playerTF for autonomous navigation
Terminal 2: Launch Minecraft Client
cd ~/minecraft_ros2
./runClient.sh- Start Minecraft in a superflat world
- Build walls and equip LiDAR
- If the costmap shows correctly, setup is successful
- Use Rviz2 → 2D Goal Pose to send a target position and start autonomous navigation