try ai
科普
编辑
分享
反馈
  • 运动规划

运动规划

SciencePedia玻尔百科
核心要点
  • 运动规划将移动物理实体的复杂问题,转化为在称为构型空间的高维抽象地图中导航单个点的简单问题。
  • 寻找路径的算法种类繁多,从受物理学启发的势场法(引导运动如同小球滚下山坡),到基于采样的方法(如PRM和RRT),后者通过构建随机图或树来高效探索复杂空间。
  • 一条原始的、无碰撞的路径通常是不够的;需要使用轨迹优化技术来改进路径,使其更平滑、更高效,并且对于真实世界的机器人来说是动态可行的。
  • 运动规划的基本原理具有普适性,不仅解决了机器人学中的关键问题,还在神经外科、发育生物学和计算遗传学等领域解决了关键问题。

引言

从A点移动到B点而不碰到任何东西,这个任务看似微不足道,却代表了一个具有深远数学和物理复杂性的问题。对于一个机器人、一个外科医生的探针,甚至一个发育中生物体内的细胞来说,这种“运动规划”的挑战都需要在一个由几何、物理和动态约束构成的迷宫中导航。我们如何才能将这个问题形式化,让计算机能够解决呢?答案在于找到正确的抽象方法,将复杂的物理交互转化为优雅的数学谜题。

本文将带领读者深入运动规划的核心。它弥合了寻找路径的直观想法与实现它所需复杂计算技术之间的鸿沟。通过两个综合性章节,您将发现使运动规划成为可能的基础概念,及其令人惊叹的影响广度。第一章​​“原理与机制”​​将揭示我们如何使用构型空间来表示问题,探索寻找路径的强大算法策略,并解决运动约束的微妙之处。随后的​​“应用与跨学科联系”​​一章将揭示这些相同的原理不仅应用于机器人技术,还以意想不到且能拯救生命的方式应用于医学、生物学和其他科学前沿。

原理与机制

要求一个机器人在房间里导航,就是提出了一个具有深远几何和物理复杂性的问题。机器人不仅仅是一个点;它是一个具有体积、形状,或许还有一系列关节的物理实体。房间也不是一个空旷的空间;它充满了机器人必须避免接触的障碍物——桌子、椅子、墙壁。运动规划任务的核心,就是寻找一个连续、无碰撞的构型序列,将机器人从起始位姿带到目标位姿。但我们该如何着手思考这样一个问题呢?秘诀,正如在物理学和数学中经常出现的那样,在于找到正确的视角转换。

运动的迷宫:从工作空间到构型空间

让我们想象一个精密的机器人,比如一个为牙科手术设计的微型操作器,它有几个关节,使其能够在病人口腔内转动和伸展。机器人操作的物理空间——在这里是病人的口腔——被称为​​工作空间​​。挑战在于,机器人的位置不仅仅是一个点 (x,y,z)(x,y,z)(x,y,z)。它的完整位姿由一组数字描述:每个关节的角度。如果机器人有 kkk 个关节,我们就需要一个包含 kkk 个数字的列表,q=(q1,q2,…,qk)\mathbf{q} = (q_1, q_2, \dots, q_k)q=(q1​,q2​,…,qk​),来完全指定其位姿。

这个数字列表是高维数学空间中的一个单点,我们称之为​​构型空间​​(​​Configuration Space​​),或简称​​C空间​​(​​C-Space​​)。机器人的每一个可能位姿,无论多么扭曲,都对应于这个空间中的一个唯一点。机器人的运动,在工作空间中是关节旋转的复杂芭蕾,在C空间中则变成了一个单点描绘出的简单、连续的曲线。

这种转换非常强大,因为它将机器人本身简化为了一个点。但障碍物呢?工作空间中的一个障碍物,比如一颗牙齿,会在C空间中划出一个“禁区”。这个区域被称为​​C空间障碍物​​ Cobs\mathcal{C}_{\mathrm{obs}}Cobs​,是所有会导致机器人身体任何部分与障碍物发生碰撞的构型 q\mathbf{q}q 的集合。现在,运动规划问题被优美地重新表述为:为单个点在自由C空间 Cfree\mathcal{C}_{\mathrm{free}}Cfree​ 内找到一条从起始构型 qstart\mathbf{q}_{\mathrm{start}}qstart​ 到目标构型 qgoal\mathbf{q}_{\mathrm{goal}}qgoal​ 的路径。

为了对这些C空间障碍物获得一些直观理解,考虑一个更简单的情况:一个平移的小多边形机器人 RRR 在一个二维平面上的一系列多边形障碍物 OOO 中移动。这里的C空间就是二维平面本身,其中一个点 (x,y)(x,y)(x,y) 代表机器人的位置。C空间障碍物是什么样子的呢?它实际上是工作空间障碍物 OOO 被机器人的形状“生长”或“填充”后的结果。更精确地说,它是障碍物与机器人形状绕原点反射后的​​闵可夫斯基和 (Minkowski sum)​​,写作 Cobs=O⊕(−R)\mathcal{C}_{\mathrm{obs}} = O \oplus (-R)Cobs​=O⊕(−R)。这就像我们拿起机器人,将它翻转,把它的参考点放在障碍物的边界上,然后描绘出它扫过的区域。这种优雅的几何构造将“两个形状何时相交?”的复杂问题,转化为了“一个点何时在一个形状内部?”的简单得多的问题。

可能性的艺术:导航景观

现在我们已经将问题简化为在一个复杂景观中导航一个点,我们该如何找到路径呢?最直观的方法之一是根据我们的需要重塑景观本身。想象C空间是一张巨大而有弹性的橡胶薄片。我们在目标构型处放置一个重球,将薄片向下拉出一个深谷。然后,我们在所有C空间障碍物下方放置柱子,将它们向上推成高山。这就创建了一个​​势场​​ φ(q)\varphi(\mathbf{q})φ(q)。

要找到一条路径,我们只需将我们的点机器人放在起始构型处,让它“滚下山”。在数学上,我们沿着最陡下降方向,即势场的负梯度方向移动:q˙=−∇φ(q)\dot{\mathbf{q}} = -\nabla \varphi(\mathbf{q})q˙​=−∇φ(q)。这个方法优雅而简单。然而,它存在一个致命缺陷:​​局部极小值​​。想象一个U形障碍物在我们的橡胶薄片上形成了一个峡谷。我们的小球可能会滚入峡谷并被困住,无法滚上坡逃脱,即使目标就在另一边。这是简单势场法常见的陷阱。

但是,有没有办法构建一个“完美”的、没有陷阱的景观呢?答案是肯定的,而且出人意料。答案来自热学和电学的物理学。如果我们将目标声明为一个电势为 ϕ=0\phi=0ϕ=0 的“冷汇”,并将所有障碍物和边界表面声明为电势为 ϕ=1\phi=1ϕ=1 的“热源”,那么它们之间的自由空间中的电势必须满足​​拉普拉斯方程​​ ∇2ϕ=0\nabla^2 \phi = 0∇2ϕ=0。由此产生的​​谐波势场​​具有一个奇妙的性质,由偏微分方程的最大值原保证:它在自由空间内不包含任何局部极小值。通过跟随该场的梯度找到的路径,保证能从任何起点引导到目标。导航迷宫的问题就这样转化为了解决一个经典物理方程的问题!

撒下一张网:随机性的力量

创建和导航这些势场景观可能计算量巨大,尤其是在复杂机器人的高维C空间中。这催生了一种完全不同且出奇有效的理念:不要试图描述整个自由空间,只需用随机样本来探索它。

其中一种方法是​​概率路图 (Probabilistic Roadmap, PRM)​​。其思想是在自由C空间中散布大量随机构型,就像在地图上投掷飞镖一样。然后,我们尝试用直线连接任意两个“邻近”的样本点。如果这条线没有碰到C空间障碍物,我们就将其添加到我们的路图中。在撒下这张由节点和边构成的网之后,我们只需使用标准的图搜索算法,就能找到从起点到终点的一系列连接。

一个动态的替代方案是​​快速探索随机树 (Rapidly-exploring Random Tree, RRT)​​。我们不是构建一个完整的地图,而是从初始构型开始“生长”一棵可行路径树。在每一步,我们在C空间中选择一个随机点,并将树上离它最近的分支向它延伸一小段距离。通过优先向未探索的区域生长,这棵树会迅速地在自由空间中蔓延,最终找到目标。这就像温室里的一株藤蔓,本能地穿过缝隙,朝向光明。

这些基于采样的方法带有一种不同的保证。它们在确定性意义上不是完备的,但它们是​​概率完备的​​。这意味着如果存在一条路径,随着样本数量的增加,找到它的概率会趋近于1。我们用绝对的确定性换取了惊人的速度和效率,尤其是在具有许多自由度的问题中,明确构建C空间障碍物在计算上是不可能的。

从锯齿线到优雅运动

基于采样的方法产生的路径通常是锯齿状、低效且动态不可行的——机器人无法瞬时改变其方向或速度。找到一条路径只是第一步;下一步是找到一条好的路径。

但什么使一条路径“好”呢?我们可以使用数学上的​​范数​​来量化这一点。例如,我们可能想要一条既高效(接近直线)又安全(与障碍物保持较大距离)的路径。我们可以用​​L2L_2L2​范数​​(可以理解为均方根误差)来衡量与直线的总偏差,用​​L∞L_\inftyL∞​范数​​(最大反向间隙)来衡量最坏情况下的安全裕度。一条好的路径是最小化这些成本加权组合的路径。

这将运动规划变成了一个优化问题。我们可以采用PRM或RRT生成的锯齿状路点序列,并在它们之间拟合一条平滑曲线。使用​​三次埃尔米特插值​​等技术,我们可以生成一条轨迹,不仅连接了路点,还确保了速度是连续的(C1C^1C1连续性),从而产生更自然的运动。

更高级的​​轨迹优化​​方法,如CHOMP(用于运动规划的协变哈密顿优化),将整个路径视为一个单一实体——一根我们可以拉伸和弯曲的橡皮筋。我们从路径的初步猜测开始,然后迭代地改进它,通过拉紧它来减少其长度或能量,同时利用来自障碍物的排斥力来确保它保持无碰撞。这种方法优雅地将势场的思想与整个轨迹的优化结合起来,通常能产生平滑、自然的运动。这个过程类似于我们大脑的运作方式:一个高层计划指定目标(“拿起杯子”),一个​​逆运动学​​模块将其转化为我们关节的期望轨迹,一个​​逆动力学​​模块计算出执行该运动所需对抗惯性和重力的精确肌肉扭矩。

约束的微妙之处:平行停车问题

最后,我们来探讨一个真正美妙的微妙之处。有些系统的约束不在于它们的位置,而在于它们的速度。想一想汽车:你可以前进和后退,也可以转动方向盘,但你不能直接横向滑动。这种关联速度矢量分量的约束被称为​​非完整的 (nonholonomic)​​。

乍一看,汽车似乎不可能实现纯粹的侧向位移。然而,我们在平行停车时却经常这样做。如何做到的呢?我们执行一系列允许的动作:前进时转动方向盘,然后后退时转回方向盘。最终的结果是一个虽小但确定的侧向移动。

这种效应可以用一个绝妙的数学对象——​​李括号 (Lie bracket)​​来描述。如果我们有两个可行的速度方向,X1X_1X1​(例如,向前行驶)和 X2X_2X2​(例如,向前行驶同时转弯),李括号 [X1,X2][X_1, X_2][X1​,X2​] 代表了通过执行一个无穷小循环所能获得的“额外”运动方向:沿 X1X_1X1​ 移动,然后是 X2X_2X2​,然后是 −X1-X_1−X1​,最后是 −X2-X_2−X2​。对于汽车来说,这个交换子方向恰好是那个“被禁止的”侧向滑动。

这揭示了一个深刻而强大的原理:可达空间的几何形状不仅由你瞬时可以移动的方向决定,还由这些方向组合和交换的方式决定。通过组合简单的、允许的运动,我们可以生成在一阶上不可用的方向上的运动。运动规划不仅仅是关于避开障碍物;它关乎理解运动本身的基本语法。

应用与跨学科联系

当我们首次接触到物理学或数学中的一个新原理时,我们的第一反应可能是某种抽离的欣赏。“啊,一个聪明的技巧,”我们可能会说,“一个对明确定义谜题的巧妙解决方案。”但一个基本思想的真正美妙之处不仅在于其巧妙,更在于其惊人的、且常常是出乎意料的普适性。运动规划问题——如何从A点到达B点——就是这样一个思想。它看似如此简单,是我们每次穿过房间时都会解决的问题。然而,当我们将它形式化时,我们发现我们锻造了一把钥匙,打开了从机器人嗡嗡作响的齿轮到生命本身静默而复杂的舞蹈等各种领域的大门。现在,让我们踏上旅程,穿过其中一些门,惊叹于我们在里面发现的世界。

发条宇宙:机器人与机器

最自然的起点是我们为我们移动而制造的东西:机器人。想象一个工厂地板上的简单机器人,用网格表示。它的任务是从一个起始方格到达一个目标方格,同时绕开箱子和机器。这不仅仅是在迷宫中寻找路径。机器人有物理约束;它有“前”和“后”,也许只能向前移动或原地转弯。突然之间,它的“状态”不仅仅是其位置 (x,y)(x, y)(x,y),而是包括其方向或朝向在内的整个构型。问题变成了在这个更丰富的“构型空间”中搜索一个有效的移动序列——左转、前进、右转等等。计算机可以探索这个空间,就像一只在迷宫中细致的老鼠,但它可以更聪明。通过使用一个简单的经验法则或“启发式”方法——例如,知道每向前一步都使其更接近目标的曼哈顿距离——它可以做出智能猜测,并剪除大量无果的搜索空间区域,从而在不检查每一种可能性的情况下找到最优路径。

当然,现实世界很少是静态、可预测的网格。如果障碍物也在移动怎么办?如果环境如此复杂,以至于在合理的时间内计算出一个完美的、最优的解决方案在计算上是不可能的怎么办?在这里,我们可以从自然界中得到启发。考虑一个蚁群,它们集体地找到了通往食物的有效路径,而没有任何中央规划者。我们可以设计模仿这种行为的算法,释放一群虚拟“蚂蚁”来探索动态环境。这些蚂蚁沿着它们的路径留下数字“信息素”,更短、更成功的路径会得到更强的增强。随着时间的推移,一个共识就会出现,一条穿越混乱的、被频繁踩踏的高速公路。这就是蚁群优化的精髓,一种为混乱、真实的现实世界问题寻找好的(即便不是完美的)解决方案的强大方法。

另一种方法,同样受到物理学的启发,是将路径本身视为一个物理对象,比如一根穿过工作空间的弹性绳。我们可以随机地晃动和扰动这根绳子。如果一个随机的推动使路径变短或使其离障碍物更远,我们就保留这个变化。这类似于一个系统沉降到一个低能量状态。 “模拟退火”的绝妙之处在于,我们最初允许系统“热”,这意味着它可以偶尔接受坏的移动。这可以防止它陷入一个尚可但非最优的构型——一个局部极小值。随着我们“冷却”系统,它变得更加挑剔,优雅地沉降到一个真正优秀的解决方案中。

当世界不仅混乱,而且充满主动敌意时,挑战就升级了。想象一下,当一个对手试图通过在你前进的道路上放置障碍物来阻挡你时,为一架监视无人机规划路径。这不再是一个简单的谜题;这是一场博弈。在这里,运动规划与博弈论的世界联系起来。我们必须使用像极小化极大算法这样的策略,假设我们的对手总是会做出对我们最不利的举动。我们规划我们的行动,以在这个最坏情况下面对时最大化我们的结果。通过预先思考几步,并剪除那些明显比我们已找到的选项更差的博弈树分支,我们可以设计出一种能抵抗聪明对手的稳健策略。

最后,对于许多现代机器人——一个多关节臂、一个四旋翼无人机——挑战不仅是避开障碍物,还要遵守物理定律。无人机不能瞬间停下或转弯。它的运动受复杂的动力学支配。仅仅在几何空间中规划路径是不够的;路径必须是动态可行的。这正是一些最优雅的数学发挥作用的地方。对于某些系统,一个称为“微分平坦性”的属性允许我们找到一个神奇的变量变换,将复杂的动力学映射到一个更简单的“平坦空间”。我们可以在这个平坦空间中规划一个简单、平滑的轨迹,然后使用该映射将其转换回在现实世界中执行该机动所需的复杂电机指令集。或者,我们可以将整个时空轨迹视为一个单一实体,并使用强大的数值优化技术来弯曲和塑造它,直到它满足所有约束——最小化能量、避免碰撞、并遵守电机限制——所有这些同时完成。

生命蓝图:生物学和医学中的运动规划

运动规划的原理是如此基础,以至于自然界在我们之前很久就已经发现了它们。在生物学和医学中的应用不仅仅是类比;它们是同一个根本问题的直接而深刻的实例。

也许最引人注目的应用是在现代神经外科中。对于患有某些类型癫痫的患者,一种称为激光间质热疗(LITT)的手术可以通过消融大脑中一个小的、异常放电的区域来提供治愈。外科医生必须将一个微小的激光探针从颅骨上的一个点引导到一个深层目标,如海马体。然而,大脑是一个布满了至关重要的“禁区”——动脉和静脉——的景观。刺穿其中任何一条都可能是灾难性的。手术规划软件,配备了来自MRI的详细地图,解决了一个风险极高的运动规划问题:找到通往目标的最安全的直线轨迹,一条与所有关键血管距离最大化的路径。外科医生的路径是3D空间中的一条线,而构型空间是所有可能进入角度的集合。通过理解大脑沟回中的大脑中动脉或深部脑池中的Rosenthal基底静脉等结构的详细解剖结构,该算法可以推荐一条人眼可能错过的路径,从而在治疗与悲剧之间 буквально地导航那条细微的界线。

同样的原理在微观尺度上运作。在我们神经系统发育期间,每个神经元都必须伸出一个称为轴突的长而细的突起,以找到并连接其正确的伙伴,有时距离可达数厘米——对于单个细胞来说这是一个巨大的距离。这个生长中的轴突的顶端,即“生长锥”,就像一个微小的、自主的机器人。它导航的环境是发育中的胚胎,充满了复杂的化学信号织锦。一些由靶细胞分泌的分子形成浓度梯度,充当远程“化学引诱剂”,像灯塔一样引导生长锥穿过组织。一旦它靠近,靶细胞表面的其他分子作为短程“细胞粘附分子”,提供最终的锁钥识别信号,告诉轴突:“你已到达。在此停止。”这是一个美丽的生物学实现的两阶段运动规划策略:基于梯度的全局搜索,随后是基于接触的局部验证。

将这种抽象再推进一步,我们发现运动规划甚至可以帮助我们理解生命本身的旅程。在计算生物学领域,科学家们分析数千个单个细胞的基因表达,以理解发育或疾病等过程。如果我们想象一个“空间”,其中每个轴代表一个基因的活动水平,那么一个单个细胞就是这个高维“基因空间”中的一个点。一个干细胞在分化成成熟的肌肉细胞时,会沿着一条路径——一条轨迹——穿过这个空间。“轨迹推断”的问题就是从许多处于不同阶段的细胞的静态快照中重建这条路径。在相似细胞图上寻找一条简单的最短路径通常会失败,产生生物学上无意义的捷径。但是通过整合“RNA速率”——一种利用不同类型的遗传信息来预测细胞在基因空间中移动方向的巧妙技术——我们可以应用运动规划的原理来追踪细胞命运的分支路径。我们实质上是在使用运动规划来阅读用基因语言书写的发展故事。

从在仓库中导航的机器人到在大脑中导航的轴突,从外科医生的激光到细胞在其自身遗传命运中的旅程,寻找路径的问题揭示了它是我们世界结构中一条深刻而统一的线索。它教导我们,通过将一个问题抽象到其核心,我们可以获得超越尺度和学科的理解,揭示在我们机器的发条装置和生命蓝图本身中运作的同样优雅的模式。