使用自定义RRT*全局规划器建图导航

一、实现效果

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算法上,改进了父节点选择的方式,采用代价函数来选取拓展节点领域内最小代价的节点为父节点,同时,每次迭代后都会重新连接现有树上的节点,从而保证计算的复杂度和渐进最优解。

其他的,网上资料很多,我就不再赘述。
参考:https://blog.csdn.net/qq_14977553/article/details/108628208

移动机人项目组任务安排表 Day 01 上午 1.gmapping参数配置(李超) 2.总体launch文件的编写(钟浩) 3.机人tf,状态,滤波launch文件的编写(李博) 4.移动机人调试(李超,钟浩,李博) 5.完成gmapping建图修图(李超,钟浩,李博) 下午 1.move_base参数配置(李超,钟浩) 2.amcl参数配置(李博) 3.调试机导航参数(李超,钟浩,李博) 4.在rviz中完成机人单点导航(李超,钟浩) 5.记录多个导航目标点(李超,钟浩) 6.查阅随机循环导航函数的资料(李博) 7.完成随机循环导航功能节点函数(李超,钟浩,李博) 8.完成随机循环导航功能测试(李超,钟浩,李博) 里程碑事件: 1.完成gmapping建图修图 2.调试机导航参数 3.完成随机循环导航功能测试 Day 02 上午 1.完成循环导航代码的编写(李超,钟浩,李博) 2.调试循环导航功能(李超,钟浩,李博) 下午 1.完成自主探索建图代码的编写(李超,钟浩,李博) 2.调试自主探索功能(李超,钟浩,李博) 3.优化自主探索功能代码(李超,钟浩,李博) Day 03 上午 1.完成初始化位姿功能 2.完成里程计清零功能 下午 1.完成可设置循环次数导航功能 2.调试初始化位姿,里程计清零,循环导航功能 Day 04 上午 1.完成单点设定导航插件 下午 1.完善单点设定导航插件 2.调试单点设定导航插件功能 Day 05 上午 1.完成多导航点记录插件 2.完成多点循环导航节点 下午 1.完成多点循环导航插件 2.调试多点循环导航插件功能 Day 06 上午 1.查找关于巡墙算法的解决方案 2.完成rrt_exploration(快速随机搜索树)的下载和demo测试 下午 1.修改rrt_exploration接口 Day 07 上午 1.修改rrt_exploration接口 下午 1.修改rrt_exploration接口 Day 08 上午 1.在仿真机人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 下午 1.在真实机人上完成快速随机搜索树自主探索建图功能 2.优化导航UI界面 Day 09 上午 1.分别完成导航和自主建图的move_base参数的配置 下午 1.完成rviz中marker标记 Day 10 上午 1.将marker功能添加到真实机人上,并完成各项参数优化。 下午 1.完成代码整理,说明文档撰写。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值