运动与路径规划

自由空间与障碍空间

一旦你把机器人的各种姿态想象成一张地图(也就是位形空间),这张地图自然就裂成两块区域。自由空间是所有那些机器人没碰到任何不该碰的东西的姿态的集合——它干干净净地待在世界里,没有和墙、桌子、或它自己的身体重叠。障碍空间则是剩下的一切:那些被禁止的姿态,因为机器人若真摆成那样,它身上某个部位就会卡进障碍物里,或者跟自己缠在一起。于是,真实世界里那条把“允许”和“不允许”分开的界线,原封不动地重现,直接画到了这张姿态地图上。

这样切分 C空间的意义在于:规划一段安全的运动,变成了一道纯粹的几何题——为那个点找一条全程都待在自由空间里、绝不闯进障碍空间的路线。有一个出人意料却很重要的事实:障碍物投在地图上的“影子”,看起来跟障碍物本身一点都不像。房间里一根小小的圆柱,可能在 C空间里挖出一大块形状古怪的禁区,因为机器人要避开这根柱子的,是它的整副身躯——而不只是一个点——而且在每一种姿态下都得避开。正是这种变形,使得规划器要在 C空间里思考:在那里,禁区只不过是一块要绕开的区域,无论真实世界里的碰撞几何曾经有多奇怪。

想象一台又宽的清洁机器人待在走廊里。它停在中间空地的那些姿态属于自由空间;它紧贴着墙、轮廓会嵌进墙面的那些姿态则属于障碍空间。地图上那条分界线,距离每面墙都留出了机器人一个半径的余地,而不是正好贴在墙上。

禁区会按机器人自身的尺寸“胀大”——障碍物在 C空间里的影子,比障碍物本身更大。

自由空间常写作“C-free”。规划器的全部任务,就是找出一条从起点到目标、始终留在 C-free 之内的路径。

又称
free spaceC-freeobstacle space自由空间障碍空间