跟随全局规划器
简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡。
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的值。
注意,一个太精细的分辨率对于一个大的优化权重来说,可能会影响障碍物避障行为,特别是对于动态障碍物。