2.9 KiB
Executable File
2.9 KiB
Executable File
Nav2
What is Nav2
Nav2, or the Navigation 2 Stack, is a powerful and flexible navigation framework for robots in the Robot Operating System 2 (ROS 2). It provides a modular set of tools and algorithms for autonomous robot navigation in complex environments.
Starting Nav2 from the Terminal
Here are the terminal commands for launching the Nav2 toolkit.
# Start robot or robot simulator in this case I wil use the turtlebot3
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=true map:=Desktop/maps/my_map.yaml
# Launch rviz2 and add the TF visualization and the map visualization
ros2 run rviz2 rviz2
Custom Nav2 Launch File
Here is a custom ROS 2 Launch file
=== "Python"
```python title="nav2.launch.py" linenums="1"
from launch import LaunchDescription
import os
from ament_index_python import get_package_share_directory
from launch_ros.parameter_descriptions import ParameterValue
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
def generate_launch_description():
# Declare the arguments
use_sim_time = LaunchConfiguration('use_sim_time', default='False')
map = LaunchConfiguration('map')
# Define RViz config path
rviz_config_path = os.path.join(
get_package_share_directory('locker98_tools_bringup'),
'rviz', 'nav2_config.rviz'
)
# Include the bringup launch file
bringup_launch_file = os.path.join(
get_package_share_directory('nav2_bringup'),
'launch', 'bringup_launch.py'
)
# Include the bringup launch file and pass arguments
include_bringup = IncludeLaunchDescription(
bringup_launch_file,
launch_arguments={
'use_sim_time': use_sim_time,
'map': map
}.items()
)
# RViz node
rviz2_node = Node(
package='rviz2',
executable='rviz2',
output='screen',
arguments=['-d', rviz_config_path]
)
# Return LaunchDescription
return LaunchDescription([
DeclareLaunchArgument('use_sim_time', default_value='False', description='Use simulation time'),
DeclareLaunchArgument('map', default_value='', description='Map input'),
include_bringup,
rviz2_node
])
```
=== "XML"
```xml title="nav2.launch.xml" linenums="1"
<launch>
<!-- Declare Launch Arguments -->
<arg name="use_sim_time" default="false" description="Use simulation time" />
<arg name="map" default="" description="Map input" />
<!-- Include bringup launch file -->
<include file="$(find-pkg-share nav2_bringup)/launch/bringup_launch.py">
<arg name="use_sim_time" value="$(var use_sim_time)" />
<arg name="map" value="$(var map)" />
</include>
<!-- RViz node -->
<node pkg="rviz2" exec="rviz2" output="screen">
<param name="config" value="$(find-pkg-share locker98_tools_bringup)/rviz/nav2_config.rviz" />
</node>
</launch>
```