前言
在局部路径规划器teb_local_planner详解5:关于car-like robots中,我们介绍了与car-like机器人模型相关的参数,说明了在对接底盘的时候需要注意底盘接收的控制指令格式。我们还介绍了holonomic robot应该配置的参数。
本章主要描述teb中处理动态障碍物的方法,最后会讲些teb相关的问题
一、相关参数
重要参数:
~<name>/include_dynamic_obstacles
: 是否考虑动态障碍物
~<name>/dynamic_obstacle_inflation_dist
: 动态障碍物膨胀距离
~<name>/weight_dynamic_obstacle
: 动态障碍物权重
~<name>/weight_dynamic_obstacle_inflation
: 膨胀带权重
二、实现手段
之前介绍过costmap_converter, 其中有个名字是CostmapToDynamicObstacles的插件。
主要根据costmap的变化来推断动态障碍物。
三、常见问题
1. 与全局planner配合
之前,我们在教程global_planner中有提到参数/orientation_mode
他的含义就是整条全局路径规划出来的轨迹中,每个pose的朝向。
跟local planner配合起来就明白他的意思了。我们在局部规划的时候,总是一段一段的前进。会把全局规划输出的结果分成好几个小段来执行。那么,每个小段的终点都有朝向,这个会决定局部规划器如何规划轨迹。
如果global planner没有提供朝向的话,比如navfn规划器,teb_local_planner会自己重写一下:使用参数:global_plan_overwrite_orientation
,这个朝向总是指向他下一个pose
但是,如果遇到下图这种情况,开始和结束方向相同,我们最好的策略是直接倒车出来:
我们使用global_planner,将其朝向设置为Interpolate就可以成功退车出来了。
最后,allow_init_with_backwards_motion
参数也要设置为true
综合讨论,我觉得,使用global_planner 的时候,应该讲朝向设置为ForwardThenInterpolate
2. 运算时间
想要加速规划时间:
costmap
local_costmap的长宽和resolution配置的小一点
teb中的障碍物相关参数
costmap_obstacles_behind_robot_dist
: local_costmap以机器人为中心,后面的障碍物,没比要太费精力。但是为了保证不后退撞墙,这个值应该大于0obstacle_poses_affected
: 对于小的障碍物,差不多10左右就够footprint model
: 主要是碰撞检测中的距离计算
轨迹的相关参数
dt_ref
:决定轨迹的分辨率,不能太大(> 0.6),否则动力学约束乱套了max_global_plan_lookahead_dist
: 临时终点,最大也不超过local_costmap的边界
优化相关参数
no_inner_iterations
:每次外部迭代中,求解器调用次数no_outer_iterations
: 每次采样间隔的迭代次数- 所有加速度相关的权重:都可以调成0
多条可选轨迹参数
-
enable_homotopy_class_planning
: 开不开备选? -
max_number_classes
:开了放几条备选方案,通常2条就够了,绕开对称的左右障碍物