跟随全局规划器

简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡。

1.先看一下via-points当前的优化行为:启动下面节点

roslaunch teb_local_planner test_optim_node.launch
rosrun rqt_reconfigure rqt_reconfigure

为了方便调试参数(默认via-points并为开启)

现在设置global_plan_viapoint-sep为一个正值。正值就激活了via-points的考虑。

在rviz上选择publish point,该publish point在起始和结束之间的,为了添加一个点需要选择一个对象,也可以简单任意在栅格上选择一个点。

如下图所示:

轨迹确实会被via-point所吸引,但是轨迹不能reach到它。主要原因是优化器会尝试找到时间最小化的轨迹同时最小化到via-point的距离。在这里有两个冲突的对象只要via-point不直接在最小化时间轨迹上的话。产生的全局最小是经过对目标对象权衡后的。通过在代价函数中增加权重,用户可以设置期望的选择来是全局最小化转移。

最小化到via-point的距离的权重由weight_viapoint所决定,现在增加该值大于1.

下图设置的weight_viapoint为10的结果:

现在可以尝试增加更多的via-point,然后调整weight_viapoint,观察会发生什么。

注意:障碍物避障(保持与障碍物最小的距离)可能会与最小化与via-point的距离相冲突。不要选择weight_viapoint的值太大,以便obstacle 代价是可忽略的了。

规划器甚至适用于更复杂的场景,例如:当访问一组任意的via-points点集的时候,可以在到达目标的时间是最小的。

如果在轨迹上相对于via-point的最近点是起始或者目标位姿,然后via-point会被忽略。因此你添加的via-points在开始之前或者在结束之后都不会被考虑进来。不影响导航行为,因为轨迹是根据全局规划来初始化的。

2.在替代的拓扑中规划

两个不同策略的使用取决于参数viapoints_all_candidates的选择:

1).设置为真,所有生成的候选轨迹与via-points相联系的,每一个对应的优化器会尝试最小化到他们的距离。

2).设置为假,只有候选的轨迹,该轨迹属于全局规划相对于via-point优化后的拓扑才会被考虑,其他均被忽略。

3.导航:跟随全局规划

运行如下节点:

roslaunch teb_local_planner_tutorials robot_diff_drive_in_stage.launch
rosrun rqt_reconfigure rqt_reconfigure

根据优化的例子,通过设置global_plan_via_point_sep为正值0.5来使能via-points.

在rviz上设置新的目标点,参数global_plan_via_point_sep的值定义了在全局规划上两个连续的via-points点之间的最小分割距离。例如设置为0.5米,每0.5米一个新的点从全局规划中选择出来(只要全局规划的分辨率足够)。因此,通过调整这个值,你可以指定是否一个粗糙的或者一个精细的参考路径被考虑进来用于路径跟随。

现在设置不同的目标点以及不同的global_plan_via_point_sep以及weight_viapoint的值。

注意,一个太精细的分辨率对于一个大的优化权重来说,可能会影响障碍物避障行为,特别是对于动态障碍物。

teb教程5的更多相关文章

  1. teb教程1

    http://wiki.ros.org/teb_local_planner/Tutorials/Setup%20and%20test%20Optimization 简介:本部分关于teb怎样优化轨迹以 ...

  2. teb教程8

    融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...

  3. teb教程3

    配置和运行机器人导航 简介:配置teb_local_planner作为navigation中local planner的插件 参考teb安装 由于局部代价地图的大小和分辨率对优化性能影响很大,因为占据 ...

  4. teb教程10 teb questions

    http://wiki.ros.org/teb_local_planner/Tutorials/Frequently%20Asked%20Questions

  5. teb教程9

    通过costmap_converter来跟踪和包含动态障碍物 简介:利用costmap_converter来很容易跟踪动态障碍物 1.costmap_converter中提供了一个插件称之为costm ...

  6. teb教程7

    融合自定义的障碍物 简介:本部分讲解怎样考虑其他节点发布的多边形的障碍物. 1.在一些应用当中,可能不想依赖于代价地图或者想添加其他的除了点状的障碍物.你可以发送你自己的障碍物列表到teb_local ...

  7. teb教程6

    代价地图的转换 简介:本部分关于怎样把代价地图转换插件应用到转换占据栅格costmap2d到几何形状来优化(测试阶段) teb_local_planner包支持costmap_converter插件, ...

  8. teb教程4

    障碍物避障以及机器人足迹模型 简介:障碍物避障的实现,以及必要参数的设置对于机器人足迹模型和其对应的影响 1.障碍物避障是怎样工作的 1.1 惩罚项 障碍物避障作为整个路径优化的一部分.显然,优化是找 ...

  9. teb教程2

    http://wiki.ros.org/teb_local_planner/Tutorials/Inspect%20optimization%20feedback 检查优化反馈 简介:怎样检查优化的轨 ...

随机推荐

  1. Python之随机选择 random

    随机选择:random import random # 从一个序列中随机的抽取一个元素 values=[1,2,3,4,56] # 指定取出N个不同元素 print(random.sample(val ...

  2. 修改bug 提交出错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null

    提交出错:操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null.对关系作出更改后,会将相关的外键属性设置为 null 值.如果外键不支持 null 值,则必须定义新的关系,必须向外键属性 ...

  3. HTML 使用CSS 如何去掉文本聚焦框 HTML 使用CSS 如何去掉文本聚焦框 : outline 值设为none 修改input、textarea输入框placeholder样式

    HTML 使用CSS 如何去掉文本聚焦框 : outline 值设为none 修改input.textarea输入框placeholder样式  兼容性代码: input::-webkit-input ...

  4. 【记录】mysql中建表utf8和utf8mb4区别?timestamp和datetime区别?

    mysql中建表utf8和utf8mb4区别? 1:utf8 是 Mysql 中的一种字符集,只支持最长三个字节的 UTF-8字符,也就是 Unicode 中的基本多文本平面 2:要在 Mysql 中 ...

  5. 2019HDU多校第一场 BLANK DP

    题意:有四种数字,现在有若干个限制条件:每个区间中不同的数字种类必须是多少种,问合法的方案数. 思路: 定义 dp[i][j][k][t] 代表填完前 t 个位置后,{0,1,2,3} 这 4 个数字 ...

  6. spring mvc 整合 druid

    环境: ubuntu eclipse maven 一. pom.xml 加入druid 依赖 <!-- https://mvnrepository.com/artifact/com.alibab ...

  7. python3.x 扯扯【切片】这玩意儿

    在此之前先了解一下list这个玩意儿: list对应cpp这的数组,一维数组,二维数组,或者是嵌套都行: L=[] #空列表 L=[1,2,3,4,5,6] #六项 L=['a',['b','c']] ...

  8. Python内置数学函数

    class NumString: def __init__(self, value): self.value = str(value) def __str__(self): return self.v ...

  9. 每天一个Linux命令:rm(5)

    rm rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变 注意:使用rm命令要格外小心.因为 ...

  10. Service系统服务(一):安装一个KVM服务器、KVM平台构建及简单管理、virsh基本管理操作、xml配置文件的应用、为虚拟机制作快照备份、快建新虚拟机

    一.安装一个KVM服务器 目标: 本例要求准备一台 RHEL7.2 服务器,将其搭建为KVM平台,主要完成下列操作: 1> 关闭本机的SELinux保护.防火墙服务   2> 挂载RHEL ...