- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十七课 Move_base导航框架
1. 前言
本节课程重点理解 Move_Base的整个框架, move_base 包提供了一个动作的实现(参见 actionlib 包),在地图上给定一个目标, move_base 将会规划出路径并使机器人避开障碍物从而到达目标。 move_base 节点其实相当于 ros navigation 整体框架的一个指挥官,它统筹了各个 navigation 节点发过来的信息,在下面的系统框图中,浅蓝色的项目是必须要输入的,之前的工作已经完成了这些项目的需求。
move_base 节点将全局导航和局部导航链接在一起以完成其导航任务。全局导航用于建立到地图上最终目标或一个远距离目标的路径,局部导航用于建立到近距离目标
和为了临时躲避障碍物的路径,例如机器人四周一个 4x4 m 的方形窗口。
2. 配置文件
move_base 节点支持任何遵循 nav_core 包中指定的 nav_core :: BaseGlobalPlanner 接口的全局规划以及任何遵循 nav_core 包中指定的 nav_core :: BaseLocalPlanner 接口的局部规划。 move_base节点还维护两个代价地图,分别为全
局代价地图和局部代价地图。在运行 move_base 节点之前需要五个配置文件,这些文建定义了一系列相关参数,包括越过障碍物的代价、机器人的半径、路劲规划时的需要考虑未来多长的路,机器人的的最大速度等等,五个配置文件分别如下:
3. 全局路径规划
在 ROS的导航中,首先会通过全局路径规划,计算出机器人到目标位置的全局路线。这一功能是 navfn 这个包实现的。 navfn 通过 Dijkstra 最优路径的算法,计算
costmap 上的最小花费路径,作为机器人的全局路线。
4. 局部路径规划
本地的实时规划是利用 base_local_planner 包实现的。该包使用 Trajectory
1
Rollout 和 Dynamic Window approaches 算法计算机器人每个周期内应该行驶的速度
和角度( dx, dy, dtheta velocities )。 base_local_planner 这个包通过地图数据,
通过算法搜索到达目标的多条路经,利用一些评价标准(是否会撞击障碍物,所需要的时间等等)选取最优的路径,并且计算所需要的实时速度和角度。
其中, Trajectory Rollout 和 DWA算法的主要思路如下: (之前的课程已经有介绍
了)
1) 采样机器人当前的状态( dx,dy,dtheta );
2) 针对每个采样的速度,计算机器人以该速度行驶一段时间后的状态,得出一条行驶的路线。
3) 利用一些评价标准为多条路线打分。
4) 根据打分,选择最优路径。
5) 重复上面过程。
5. 插件的工作方式
如果我们想按照自己的思路去写 global 或者 local planner 时,该如何做呢?显然
ROS有一个标准。你必须按照它提供给你的模板去实现你自己的算法,这些模板就是基类。如果觉得抽象,可以先通过官方的文档来了解插件是如何工作的?
在上图的这个例子中,假设我们想使用一个形状画图模块, ROS的官方包中已经有
了 polygon_interface 这个基类, 它已经提供了标准的接口函数, 并且有两个子类: 矩
形插件包 rectangle_plugin package 和三角形插件包 triangle_plugin package 。要
想使用这两个子类你只要在相应文件中将它们注册为插件,告诉 ROS我将使用这两个
插件就行了。这个图中一个关键的中心点就是 polygon_interface 基类。
6. 参数配置说明
1. move_base_params.yaml
shutdown_costmaps: 当 move_base 在不活动状态时 , 是否关掉 costmap 。
controller_frequency: 向底盘控制移动话题 cmd_vel 发送命令的频率。
controller_patience: 在空间清理操作执行前 , 控制器花多长时间等有效控制下发。
planner_frequency: 全局规划操作的执行频率 . 如果设置为 0.0, 则全局规划器仅在接收
2
到新的目标点或者局部规划器报告路径堵塞时才会重新执行规划操作。
planner_patience: 在空间清理操作执行前 , 留给规划器多长时间来找出一条有效规划。
oscillation_timeout: 执行修复机制前 , 允许振荡的时长。
oscillation_distance: 来回运动在多大距离以上不会被认为是振荡。
base_local
文档评论(0)