1.创建py功能包
2.在该功能包下创建launch文件夹
创建一个start_nav2.launch.py文件
写入以下内容,
import os
import launch
import launch_ros
from ament_index_python.packages import get_package_share_directory
from launch.launch_description_sources import PythonLaunchDescriptionSource
def generate_launch_description():
# 获取与拼接默认路径
cyberdog_nav2_dir = get_package_share_directory(
'cyberdog_nav2')
nav2_bringup_dir = get_package_share_directory('nav2_bringup')
rviz_config_dir = os.path.join(
nav2_bringup_dir, 'rviz', 'nav2_default_view.rviz')
# 创建 Launch 配置
use_sim_time = launch.substitutions.LaunchConfiguration(
'use_sim_time', default='true')
map_yaml_path = launch.substitutions.LaunchConfiguration(
'map', default=os.path.join(cyberdog_nav2_dir, 'maps', 'map1.yaml'))
nav2_param_path = launch.substitutions.LaunchConfiguration(
'params_file', default=os.path.join(cyberdog_nav2_dir, 'config', 'nav2_params.yaml'))
return launch.LaunchDescription([
# 声明新的 Launch 参数
launch.actions.DeclareLaunchArgument('use_sim_time', default_value=use_sim_time,
description='Use simulation (Gazebo) clock if true'),
launch.actions.DeclareLaunchArgument('map', default_value=map_yaml_path,
description='Full path to map file to load'),
launch.actions.DeclareLaunchArgument('params_file', default_value=nav2_param_path,
description='Full path to param file to load'),
launch.actions.IncludeLaunchDescription(
PythonLaunchDescriptionSource(
[nav2_bringup_dir, '/launch', '/bringup_launch.py']),
# 使用 Launch 参数替换原有参数
launch_arguments={
'map': map_yaml_path,
'use_sim_time': use_sim_time,
'params_file': nav2_param_path}.items(),
),
launch_ros.actions.Node(
package='rviz2',
executable='rviz2',
name='rviz2',
arguments=['-d', rviz_config_dir],
parameters=[{'use_sim_time': use_sim_time}],
output='screen'),
])
注意修改路径,文件名等你自定义的东西
3.在功能包下创建maps文件夹用于存放地图的.pgm和.yaml文件
4.在功能包下创建config文件夹
用于存放nav2官方nav2_params.yaml,便于修改,该文件请前往nav2官方github复制
https://github.com/ros-navigation/navigation2/blob/main/nav2_bringup/params/nav2_params.yaml
5.修改setup.py
修改setup.py,将功能包下的launch文件夹,maps文件夹,config文件夹复制到工作空间/install/share目录下
6.可以根据自己的机器人修改nav2_params.yaml中的内容
nav2_params.yaml中可以很方便修改bringup中的所有参数,通过start_nav2.launch.py来把nav2_params.yaml传递给bringup
发表回复