注:树莓派需要与microROS控制板ROS_DOMAIN_ID需要一致,可以查看【MicroROS控制板参数配置】来设置microROS控制板ROS_DOMAIN_ID,查看教程【连接MicroROS代理】判断ID是否一致。

1、Navigation2简介

Navigation2整体架构图

image-20240126110308679

Navigation2具有下列工具:

Navigation 2(Nav 2)是ROS 2中自带的导航框架,其目的是能够通过一种安全的方式使移动机器人从A点移动到B点。所以,Nav 2可以完成动态路径规划、计算电机速度、避开障碍物和恢复结构等行为。

Nav 2使用行为树(BT,Behavior Trees)调用模块化服务器来完成一个动作。动作可以是计算路径、控制工作(control efforts)、恢复或其他与导航相关的动作。这些动作都是通过动作服务器与行为树(BT)进行通信的独立节点。

资料参考网址:

Navigation2 文档:https://navigation.ros.org/index.html

Navigation2 github:https://github.com/ros-planning/navigation2

Navigation2 对应的论文:https://arxiv.org/pdf/2003.00368.pdf

Navigation2提供的插件:https://navigation.ros.org/plugins/index.html#plugins

2、程序功能说明

小车连接上代理,运行程序,rviz中会加载地图。在rviz界面中,用【2D Pose Estimate】工具给定小车初始位姿,然后用【2D Goal Pose】工具给定小车一个目标点。小车结合自身环境,会规划出一条路径并且根据规划的路径移动到目的地,期间如果遇到障碍物,会自助避障,到达目的地后停车。

3、查询小车信息

3.1、启动并连接代理

树莓派成功开机后,打开终端输入以下指令打开代理,

image-20240122162257264

按下microROS控制板的复位按键,等待小车连接上代理,连接成功如下图所示。

image-20240122162429192

3.2、进入小车docker

打开另一个终端输入以下指令进入docker,

出现以下界面就是进入docker成功,现在即可通过指令控制小车,

image-20240201151703606

4、启动程序

首先启动小车处理底层数据程序,终端输入

image-20240126110602528

然后,启动rviz可视化建图,输入这个指令之前需要进入同一个docker终端,步骤如下:

在树莓派的中重新打开一个新终端输入指令,

能看到你进入docker的ID号以及docker版本,看到up哪一项就是当前启动的docker。

image-20240319163942213

根据这个id号就能进入同一个docker,注意每次进入docker的id号都是不一样的,输入指令,

image-20240319163957149

出现这个画面我们就是进入了同一个docker。

输入指令启动rviz可视化建图

image-20240126110645296

此时还没有显示地图加载,因为还没有启动导航的程序,所以没有地图加载。接下来运行导航节点,终端输入(和上面一样需要进入同一个docker终端)

image-20240126110823312

此时可以看到地图加载进去了,然后我们点击【2D Pose Estimate】,给小车设置初始位姿,根据小车在实际环境中的位置,在rviz中用鼠标点击拖动,小车模型移动我们设置的位置。如下图所示,雷达扫描的区域与实际障碍物大致重合则表示位姿准确。

image-20240126110941956

单点导航,点击【2D Goal Pose】工具,然后在rviz中选择一个目标点,小车结合周围的情况,规划出一条路径并且沿着路径移动到目标点。

image-20240126111020881

多点导航,需要把nav2的插件添加进来,

image-20240126111121433

添加后,rviz显示如下,

image-20240126111151491

然后点击【Waypoint/Nav Through Poses Mode】,

image-20240126111254807

使用rivz工具栏中的【Nav2 Goal】给定任意的目标点 ,然后点击【Start Waypoint Following】开始规划路径导航。小车会根据选的点的先后顺序,到了目标点后会自动前往下一个点,无需进行操作。达到最后一个点后,小车停车等待下一个指令。

image-20240126111621090

5、查看节点通讯图

终端输入(和上面一样需要进入同一个docker终端)

如果一开始没有显示,选择【Nodes/Topics(all)】,然后点击左上角的刷新按钮。

6、查看TF树

终端输入(和上面一样需要进入同一个docker终端)

image-20240126113822497

运行完毕后,会在终端的目录下生成两个文件分别是.gv和.pdf文件,其中的pdf文件就是TF树。

image-20240126111739617

7、代码解析

这里只说明导航的navigation_dwb_launch.py,这个文件路径是,

navigation_dwb_launch.py,

这里启动了以下几个节点:

另外还加载了一个导航参数配置文件dwb_nav_params.yaml和加载地图文件yahboom_map.yaml,导航参数表的位于,

地图文件位于,

dwb_nav_params.yaml,

该参数表配置了导航launch文件中,启动的每个节点需要的参数。