导航模块,是实现机器人移动功能的重要能力,主要包括全局路径规划和局部路径规划。本文将带大家深度认识局部路径规划,以及TEB算法的规划原理和参数配置。
01 机器人局部路径规划
当我们旅游迷路了,想必大家都会毫不犹豫地——
打开手机,点开地图APP,开始「导航」。
其实,不止我们人类,机器人也会用到「导航」功能,只不过这个功能是它们自带的。
无论是在某底捞的送餐机器人,还是某朵酒店的配送机器人,又或者是智能工厂里的真·机器人搬运工……
都是机器人通过自己的导航模块,为自己规划出一条移动路径,然后控制底盘安全稳定地完成移动。
我们以机器人操作系统ROS为例,导航模块输出了Twist类型的速度指令后,将其下发到底盘,就成为了底盘运动的直接依据。
其中,最终向机器人底盘下发速度指令的部分,就是「局部路径规划」。
由于这个速度指令,不仅要遵循全局路径规划给出的路径,还需实时避开路径上的障碍物,导致算法需要频繁调用、高速响应,通常要将全局路径进行分割。
也就是说,只考虑当前点附近的路径和障碍物进行规划。「局部路径规划」因此而得名。
02 TEB算法规划原理
DWA、TEB、Trajectory Rollout是三种常用的局部路径规划算法。其中,TEB算法有很强的前瞻性,能够动态避障,表现较好,缺点是计算复杂——这也是其使用g2o算法优化计算量的原因。
TEB全称是Timed Elastic Band,译为时间橡皮筋。好比导航的起点和终点之间,拉了一条绷直的橡皮筋作为行走路线,如果路中间有障碍物,就会将橡皮筋撑开,影响行走时的路径。
就像这样:
当然,在实际情况中,机器人的行走路线会受到许多其他因素的影响,不会紧贴着障碍物表面。我们通常会将障碍物进行膨胀处理,让机器人的行走路线与真实的障碍物之间,保持一定的安全距离。
在TEB算法中,所有影响因素分为两类:约束和轨迹。
约束指的是速度和加速度的限制,