全局规划器与局部规划器
让机器人从当前的位置走到它想去的地方,通常被拆成两份工作,交给两个规划器。全局规划器是负责大局的“找路人”:给它一张整片区域的地图,它会在机器人还没动之前,就算出一条从起点到目标的完整路径——这就相当于打开地图应用,看到那条横穿全城、被整条标亮的路线。局部规划器则是分分秒秒掌方向盘的“司机”:机器人真正沿着那条路线滚动前进时,它盯着正前方那一小片世界,一秒一秒地操控转向,既照着计划走,又闪避一路上随时冒出来的东西。两者像一个团队那样配合——一个决定整体方向,另一个处理眼前的转向。
之所以这样拆分,是因为这两份工作的“形状”不同。全局规划器可以慢慢地、宽广地去想:它顾及整张地图,所以不会把机器人送进一条最后是死胡同的走廊——但它通常是依据一张早先画好的地图来规划的,无法知道刚才有人在过道里放下的一个箱子。局部规划器恰恰相反——它只往前想几秒钟、几米远,却能对实时的传感器读数飞快地做出反应,绕开一个突然走进路径的人,或一把地图上没有的椅子。粗略而有远见,对上反应灵敏而目光短浅:这样的分工正是关键所在。
有一个好懂的比方,就是一次公路旅行。全局规划器是你出发前选好的路线——那一串带你横穿全国的高速公路。局部规划器则是握着方向盘的你:保持在车道内、为前车刹车、轻轻绕过路面的坑洼,同时心里始终装着那条大路线。如果某条路意外封闭了,局部规划器单凭自己是没法解决的;它会把情况反馈回去,由全局规划器重新规划出一条绕开堵点的新路线。
一台送货机器人被派去穿过大楼的门厅。它的全局规划器绕开已知的墙和家具画出一条路线。它刚出发,就有人走进它的路径;局部规划器不需要一张新地图——它只是放慢速度,往旁边偏出一米绕开那个人,再在另一头重新接回全局路线。
全局规划器选定路线;局部规划器应付路上的意外。
两者的运行频率通常差别很大:全局规划器可能每隔几秒、或在出现重大变化时才重新规划一次,而局部规划器每秒会更新许多次,好让它来得及做出反应。