一、实现效果

1、使用tianbot_mini开源模型,gmapping建图算法,自定义RRT*全局规划器作为move_base插件
2、我是用真车建图,考虑到有伙伴没有真车,所以文章采用仿真环境
3、(开源仿真环境,两个都要git clone):

https://github.com/tianbot/tianbot_mini
https://github.com/tianbot/tianbot_mini_description
(开源规划器插件)https://github.com/li-huanhuan/rrt_star_global_planner
4、B站视频讲解:使用自定义RRT*全局规划器建图导航
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、实现过程

1、把3个项目全部git clone到同一个工作空间里,并进行编译运行

git clone https://github.com/tianbot/tianbot_mini_description.git
git clone https://github.com/tianbot/tianbot_mini.git

git clone https://github.com/li-huanhuan/rrt_star_global_planner

在这里插入图片描述
安装相关依赖:

sudo apt-get install ros-noetic-costmap-2d
sudo apt-get install ros-noetic-nav-core

sudo apt-get install ros-noetic-move-base-msgs
sudo apt-get install ros-noetic-gmapping

2、先熟悉一下rrt*插件这个项目

要用turtlebot3:
sudo apt-get install ros-noetic-turtlebot-*
添加模型声明到环境变量

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
编译后启动launch文件
roslaunch rrt_star_global_planner rrt_node.launch
添加map、path

用2D Nav Goal规划个路径试一下:
在这里插入图片描述
launch文件中,并没有启动局部规划器,所以只是规划出一条全局路径,终端会显示规划所消耗时间,因为算法本身的原因,所以计算速度并不是很快,尤其是在狭长的环境中

在这里插入图片描述

在仿真环境中使用
该算法是在turtlebot3仿真中使用的,我们用tianbot_mini仿真环境试一下,如果有真车的可以按下面的方法应用到真车中。
首先可以看出已经生成了move_base插件,那我们直接调用插件就可以
观察

只需要在启动move_base的launch文件中启动该全局规划器就可以,在启动move_base节点中加一行代码:
<param name="base_global_planner" value="RRTstar_planner/RRTstarPlannerROS"/>
在这里插入图片描述

后面为插件的名称:
在这里插入图片描述

这样就完成了,跑一下SLAM试试

在这里插入图片描述

三、算法简介

快速搜索随机树算法(Rapidly-exploring Random Tree,RRT)由Lavalle提出,是一种采用增量方式增长的随机采样算法,用于解决有代数约束(障碍带来的)和微分约束(非完整性和动态环境带来的)的高维空间问题。RRT算法的优势在于无需对系统进行建模,无需对搜索区域进行几何划分,在搜索空间的覆盖率高,搜索的范围广,可以尽可能的探索未知区域。但同时也存在算法计算代价过大的问题。
RRT* 与基本RRT算法的主要区别在于RRT* 算法引入了对新生成节点相邻节点的搜索,目的是选择低代价的父节点,除此之外还有重新布线的过程进一步减小路径代价,是解决高维的最优路径规划问题的一个突破性的方法。
RRT* 算法是渐进最优的,该算法在原有的RRT算法上,改进了父节点选择的方式,采用代价函数来选取拓展节点领域内最小代价的节点为父节点,同时,每次迭代后都会重新连接现有树上的节点,从而保证计算的复杂度和渐进最优解。

其他的,网上资料很多,我就不再赘述。