ROS2学习笔记22
本文介绍了使用FishBot进行自主导航的配置流程。首先编写launch文件,将地图和参数传递给Nav2系统,并设置仿真时间参数。接着修改CMakeLists.txt和package.xml文件,添加必要的依赖和安装配置。最后通过编译和测试验证导航功能,包括定位初始点、设置目标点、生成导航路径以及多路点导航。测试结果显示机器人能够成功按照规划路径移动,并支持通过多个中间点进行导航。
一、使用FishBot进行自主导航
1.1 编写launch文件
将地图、配置文件传递给nav2为提供好的launch文件中即可。
cd robot/robot_ws/src/fishbot_navigation2/
touch launch/navigation2.launch.py
nano launch/navigation2.launch.py
import os
from ament_index_python.packages import get_package_share_directory
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
def generate_launch_description():
#=============================1.定位到包的地址=============================================================
fishbot_navigation2_dir = get_package_share_directory('fishbot_navigation2')
nav2_bringup_dir = get_package_share_directory('nav2_bringup')
#=============================2.声明参数,获取配置文件路径===================================================
# use_sim_time 这里要设置成true,因为gazebo是仿真环境,其时间是通过/clock话题获取,而不是系统时间
use_sim_time = LaunchConfiguration('use_sim_time', default='true')
map_yaml_path = LaunchConfiguration('map',default=os.path.join(fishbot_navigation2_dir,'maps','fishbot_map.yaml'))
nav2_param_path = LaunchConfiguration('params_file',default=os.path.join(fishbot_navigation2_dir,'param','fishbot_nav2.yaml'))
rviz_config_dir = os.path.join(nav2_bringup_dir,'rviz','nav2_default_view.rviz')
#=============================3.声明启动launch文件,传入:地图路径、是否使用仿真时间以及nav2参数文件==============
nav2_bringup_launch = IncludeLaunchDescription(
PythonLaunchDescriptionSource([nav2_bringup_dir,'/launch','/bringup_launch.py']),
launch_arguments={
'map': map_yaml_path,
'use_sim_time': use_sim_time,
'params_file': nav2_param_path}.items(),
)
rviz_node = Node(
package='rviz2',
executable='rviz2',
name='rviz2',
arguments=['-d', rviz_config_dir],
parameters=[{'use_sim_time': use_sim_time}],
output='screen')
return LaunchDescription([nav2_bringup_launch,rviz_node])
1.2 安装并添加依赖
(1)修改CMakeLists.txt
nano CMakeLists.txt
添加install指令,将文件拷贝到install目录。
cmake_minimum_required(VERSION 3.5)
project(fishbot_navigation2)
# find dependencies
find_package(ament_cmake REQUIRED)
install(
DIRECTORY launch param maps
DESTINATION share/${PROJECT_NAME}
)
ament_package()
(2)添加依赖
nano package.xml
主要是添加这行 <exec_depend>nav2_bringup</exec_depend>
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>fishbot_navigation2</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="sangxin2014@sina.com">root</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<exec_depend>nav2_bringup</exec_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>
1.3 编译和测试
(1)编译
在工作空间robot_ws/下打开终端:
cd ../..
![]()
colcon build --packages-up-to fishbot_navigation2

(2)测试
运行gazebo仿真:
source install/setup.bash
ros2 launch fishbot_description gazebo.launch.py



运行Nav2:
source install/setup.bash
ros2 launch fishbot_navigation2 navigation2.launch.py


设立起始点,选择上面工具栏中的“2D Pose Estimate”, 在地图中选择初始点位置及方向:

得到导航地图:

选择上面工具栏中的“Nav2 Goal”, 在地图中选择目标点位置及方向,将生成导航路径,机器人沿路径移动到目标点:


点击左下角的 “Waypoint / Nav Through Poses Mode”,再使用“Nav2 Goal”可以设置路点导航,途径多个目标点(图中绿色箭头):

点击左下角的“Start Nav Through Poses”,可以开始导航:





二、使用Nav2导航API进行导航
Nav2的API其实是Nav2提供的一个Python库,通过该库你可以事先调用你的机器人进行简单的控制(比如导航到点)。
学习:【ROS2机器人入门到实战】使用Nav2导航API进行导航_foxy nav2 怎么设置起点和终点-CSDN博客
这部分是使用ROS2(foxy)版本的,所以可以跳过。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)