时间参数化与轨迹平滑
规划器交回来的通常是一条“路径”:空间中的一串点——先到这里,再到这里,然后到那里——就像地图上的一连串圆点。但这些圆点对“时间”只字未提。它们没有告诉机器人该走多快、什么时候加速、什么时候松劲。时间参数化就是给这条光秃秃的路径配上一只时钟的步骤:它为每一个时刻确定机器人此刻究竟应该在哪里,于是那串沉默的点就变成了一份真正可以照着执行的、会动起来的计划。其结果被称为“轨迹”——也就是附带了时间的路径。
难点在于,机器人并不能想多快就多快。每个关节都有一个不能超过的最高速度(速度上限),以及一个改变速度的最快幅度(加速度上限);一旦硬闯过任何一个,机器人就会猛地一顿、冲过头,或者干脆卡住。所以时间参数化就像一位谨慎的司机在蜿蜒的山路上规划行程:在直道上放开油门,在急弯前早早刹车,绝不向轮胎索取超过它抓地力的东西。它会沿着路径把时间安排拉长或压缩,让机器人始终待在每一条限制之内,同时又尽这些限制所允许地尽快完成。
轨迹平滑是它的亲密搭档。一条刚规划出来的原始路径往往是棱角分明的——一段直线接上下一段直线的地方会出现尖角和突兀的折点。如果要机器人严格沿着这种尖角走,就意味着要在拐角处骤然停下、再猛地切换到新方向,既颠簸又缓慢,还很伤硬件。平滑会把那些拐角磨圆、把速度的变化揉和起来,让运动汇成一气呵成的连贯划过,就像滑雪者顺势划出一道柔和的弧线,而不是硬生生踩出一段段折线。时间安排与平滑合在一起,就把一条几何路线变成了真实机器能够优雅完成的动作。
给一只机械臂一条平滑的路径,让它端着一杯咖啡横穿桌面。时间参数化为它定下一条温和的速度曲线——起步慢、停得也慢、没有任何骤然的颠簸——这样机械臂就绝不会猛到把咖啡晃出杯沿;可要是杯子是空的,它本来是可以快得多的。
同一条路径,不同的时间安排:速度和加速度的限制,决定了走多快才是安全的。
路径和轨迹不是一回事:路径只是路线在空间中的形状,而轨迹则加上了时间——你在每一瞬间所处的位置,从而也就决定了你走得多快。