MulDP:还没到沟边就先加速——四足机器人复杂地形自主跑酷导航

四足机器人已经会跑酷了,缺的那一半在哪?

想象一台一米来长的四足机器人在户外奔跑,前方横着一条宽沟。它没有在沟边减速,反而在接近边缘时踩实加速,冲到接近每秒两米的速度,腾空,越过沟,落地后才重新减速。这个"先加速后起跳"的时机不是遥控器给的,而是机器人自己在几分之一秒里做出的决定。2026 年 9 月,复旦大学智能机器人学与先进制造学院的团队把回答这个问题的论文放上了 arXiv,标题就叫 MulDP,并用 1 公里以上的户外实验证明,这类决策可以完整地交给一个生成模型。

这个能力有个专门的名字:自主跑酷导航。跑酷指的不只是跑,而是把高台、深沟、陡梯、窄道这些障碍当成翻越的对象逐个解决。这里有个容易忽略的事实:四足机器人的手脚功夫早就练成了,缺的是"什么时候使劲、往哪个方向使劲"由谁拍板。

先看动作层有多成熟。2023 年的 Extreme Parkour 用单个神经网络,在 Unitree A1 这台低成本机器人的单个前向深度相机上,实现了两倍自身身高的高跳、两倍身长的跨沟、37 度斜台上的奔跑,甚至倒立行走。

Extreme Parkour 技能拼贴:高跳、长跳、斜台奔跑、倒立行走

图注:Extreme Parkour 的头图拼贴,展示 Unitree A1 真机在一系列场景中的跑酷姿态:跨越宽缝的长跳、跃上高台的高跳、在斜台上奔跑、仅前两腿支撑的倒立行走。配文说明这些动作由单个神经网络直接基于前向深度相机完成,无需显式建图与规划。Extreme Parkour

这张拼贴就是技能层的成绩单:跑酷动作本身,是一个已经解决过的问题。

那么"自主穿行"呢?目前最能打的分层系统,比如苏黎世联邦理工的 ANYmal Parkour,把任务拆成感知、技能库、高层导航三个模块:感知模块重建地形,技能库里有 walk、jump、climb 等五套强化学习训练的运动技能,导航模块在 5 赫兹的频率上做路径规划与技能选择,底层技能则以 50 赫兹执行。这套系统能连续翻越真实障碍,自称无需专家示范就能端到端训练,但目标由人给定、场景预先设计,整条管线由 8 个神经网络强耦合拼成,改一个模块就得连带重训其他模块。ANYmal Parkour

用 MulDP 引言里的话说,most systems still rely on human intervention for high-level planning,大多数系统的高层规划仍然依赖人类干预。为什么这一层这么难交出去?论文把原因拆成三条具体的挑战。第一条是细粒度速度调节:地形在变,速度必须跟着连续地加加减减,这不是"到障碍前刹停"这种二值决策。第二条是长视界前瞻行为:跑酷在本质上是一种提前行动,跨宽沟要在到达边缘之前就加速攒动量,等接触到了再反应就晚了。第三条是感知与执行的紧耦合:视觉上看起来能过,身体不一定过得去,机器人在自视野里绕开了障碍,却可能因为自身几何和运动约束撞上去。窄缝就是一个例子,宽度数字上够过,但以四条腿的姿态和落脚方式到底过不过得去,这种可行性判断只能在动作层面做,位置坐标给不了答案。MulDP

三条挑战合起来的意思是:导航决策必须同时回答"往哪走"和"身体该怎么使劲"两个问题。动作层的账已经结清,决策层的账还没人接。

为什么这件事现在才被摆上台面?因为三条线恰好在这个时间点都成熟了。扩散生成给了模型直接输出动作的接口,端到端跑酷技能给了它一个可靠的执行身体,视觉导航给了它大规模仿真数据的训练打法。2026 年的 MulDP 把这三样东西以"速度指令生成"的形态装进了同一个系统;据论文所述,自主跑酷导航此前仍未得到充分探索。那现有的导航方法,为什么偏偏接不了这一单?

现有的导航方法,为什么到了跑酷地形就使不上劲?

先看现在市面上导航方法的三条路。地图式规划器最传统:先建图,再在图上搜索路径,最后交给底层控制跟踪。问题是这些模块各自为政,动态场景下很难做精细的速度调制,"先加速再起跳"这种动作根本不在路径规划的坐标系里。学习式视觉导航学会了直接从图像预测路径点,但路径点与物理执行是解耦的,它告诉机器人"去那个坐标",没说"多快、什么姿态",遮挡区域仍然容易撞。端到端强化学习和视觉语言动作模型(VLA)倒是直接输出动作,但训练成本高、泛化有限,长视界任务里还缺可控性。MulDP

前两类方法的病根在同一个地方:输出接口。它们输出的都是位置,路径或路径点。位置是一个几何概念,跑酷是一场动力学事件,什么时候加速、什么时候起跳、以什么姿态落地,这些信息在坐标里都不存在。身体拿到一串坐标,还得自己再翻译一遍动力学,而这层翻译恰恰极难。第一章那套分层系统走的就是这条路:导航模块给出目标与技能选择,底层技能负责执行,中间隔着的正是"位置与技能"到"动作"之间的翻译。翻译层越厚,跑酷这种需要连续动力学决策的任务就越吃力。

换个角度看:如果导航的输出不是坐标,而是一段动作,问题会不会好解一些?这正是扩散策略(diffusion policy)给出的回答。扩散策略把机器人策略建模成"以观测为条件的去噪生成":训练时给模型看观测,教它从随机噪声里一步步还原出示范动作;推理时它从噪声出发,经过 K 轮去噪,雕出一段动作序列。2023 年哥伦比亚大学的 Diffusion Policy 用这个思路,在机械臂操作的 12 个任务上把平均成功率相对当时最好的行为克隆方法提升了 46.9%。它的底气来自三点结构性优势。一是多峰分布:同一情境常有多种同样合理的做法,扩散生成天然能表达"都行",而输出单一均值的网络会把它们抹成平庸的中间值。二是高维动作序列:直接推断整段未来动作,避免一步一算的短视。三是训练稳定,不需要像隐式策略那样估计复杂的归一化常数。Diffusion Policy

多峰这一点值得多说一句。在 Diffusion Policy 的经典推方块任务里,示范数据中有从方块左边绕的,也有从右边绕的;回归式策略会学出一条"两头都不挨"的中间路线,扩散策略的每次采样则干脆利落地承诺其中一条。这个特性在后文的跑酷地形里会被反复用到:多条同样合理的走法,正是四足导航的常态。

显式、隐式、扩散三种策略表示对比

图注:三种策略表示的对比。(a) 显式策略直接把观测映射到动作分布;(b) 隐式策略学习以观测和动作为条件的能量曲面,在能量景观上优化出动作;(c) 扩散策略沿学习到的梯度场把噪声逐步细化为动作,并配以稳定训练、多峰分布、高维序列三项能力注记。Diffusion Policy

三种表示放在一起,差别一目了然:显式策略直接映射,隐式策略在能量曲面上找最低点,扩散策略沿着学到的梯度场把噪声一步步细化成动作。更重要的是,扩散策略输出的是一段动作,不是一个位置。配合 receding horizon 滚动时域控制:每次预测未来一小段,执行开头一点点,然后重新规划。在导航领域,已经有人把扩散生成搬了过来,比如 NavDP 用扩散模型生成一串稠密路径点,再交给底层控制器跟随。注意,它生成的还是路径点,身体仍然要自己翻译一遍。NavDP

接口换成了"生成动作",这条路看起来通了。但怎么把它接到四足跑酷上?把 NavDP 直接搬到四条腿上,显然不是答案。

为什么答案是一段段速度指令,而不是一张路径图?

MulDP 的核心决定只有一句话:把导航输出定义成一段速度指令地平线,而不是一条路径。

具体的落地形态是:它每 0.2 秒做一次决策。看一眼过去的视觉与自身状态、当前的地形、目标在哪,然后用扩散模型生成未来 H 步的指令序列,每步是一个二元组 $(\Delta v, \Delta \theta)$,也就是速度该加多少、航向该转多少。整套序列记作 $U \in \mathbb{R}^{H \times 2}$,被称为速度指令地平线。生成之后,只把第一条指令发给底层的运动策略,剩下的全部丢掉,0.2 秒后再来一轮。这就是扩散策略的 receding horizon 在四足导航上的落地版本,去噪每一步按 $U_t^{k-1} = \lambda (U_t^k - \mu \cdot \varepsilon_\theta(c_t, U_t^k, k)) + \mathcal{N}(0, \sigma^2 I)$ 更新,噪声调度决定 $\lambda$、$\mu$、$\sigma$,论文取 K=10 步去噪来平衡精度与推理速度。这套机制的源头正是 2023 年的原始 Diffusion Policy。

为什么输出的是指令而不是坐标?可以把它想成两种指路方式。路径点范式像给出租车司机一张地址清单:上车地点、途经路口、目的地,怎么开是司机的事。速度指令范式像坐在副驾上直接指挥:提速、左转、减速。地址清单在大多数时候够用,但当你要求司机把车开上赛道、在弯道前提前加速时,清单上根本没有这一条。跑酷导航正是这种"赛道驾驶":该提前攒动量的地方,位置坐标不会告诉你。而如果输出本身就是速度随时间的变化,"在沟边提前加速"就成了生成的必然结果,不需要任何人额外写这条规则。

输出一整段指令还有一个工程上的回报:相邻时刻的命令来自同一次生成,天然连贯,不会像单步策略那样在两种走法之间来回抖动。这正是扩散策略"动作分块"思想在导航里的用处。

MulDP 系统架构图

图注:MulDP 系统架构:历史深度图像与自身状态(proprioception)经多模态时序 Transformer 编码,当前深度帧经浅 CNN 编码,目标与决策记忆经编码,融合成一个条件表征;扩散模型在该表征条件下迭代生成一段未来速度命令,每次 5 Hz 更新只把序列首条发给底层运动策略,随后重新规划。MulDP

三段指令序列不是凭空来的。MulDP 用三个编码器把多模态观测压成一个条件表征,再交给扩散模型。第一路是多模态时序编码器:把最近一段历史的深度图像与 45 维本征感知一起送进跨模态 Transformer。本征感知是机器人对自身状态的感知,关节角度、姿态、受力,相当于人的本体感觉。历史深度图按 4×4 patch 切成 154 个视觉 token,与自身状态共同嵌入,跨模态注意力融合后输出 128 维特征 h1,这一路看的是趋势。第二路是当前空间编码器:把当前这一帧深度图过一遍浅 CNN,得到细粒度空间特征 h2,这一路防的是突发,历史特征太抽象,遇到突然冒出来的障碍要靠它兜底。第三路是决策记忆编码器:把最近 5 步的规划控制与目标变化经 MLP 建模成 h3,这一路记的是目标,不让机器人走几步就忘了要去哪。三路特征融合成条件 $c_t$,送进 4 层 4 头的噪声预测网络。

三个编码器其实对应三种时间尺度:历史看的是秒级的趋势,当前帧看的是瞬时的空间,决策记忆看的是跨步的目标保持。扩散模型要做的,就是把这三路信息一起翻译成下一步的使劲方式。

为什么非得用生成模型,而不是回归一个单值?举一个具体情形:一片地形,向左绕、向右绕、直接跳都是合理走法。回归网络只能输出一个数,把"左转"和"右转"平均一下就成了"直走",可能直接走进障碍。扩散生成则不同,每一次采样都承诺一个完整的走法,这一轮向左、下一轮向右,都是对的。行为克隆时代的老问题,在多峰场景里被生成式表示绕开了。Diffusion Policy

顺带一提,把视觉和本征感知融进四足导航并不是新事。2024 年的 AMCO 已经把视觉与自身状态按图像可信度加权,耦合进三张显式代价地图,再用模型预测控制(MPC)输出步态与速度。MulDP 与它的分野在表征形态:AMCO 手工拼代价地图,MulDP 让网络自己学出融合的条件表征,这是"显式拼装"与"隐式学习"之别。AMCO

回到那张架构图,整条数据流从观测到指令序列,没有经过任何"位置"的概念。但这套策略拿什么训练?它需要一座足够大的跑酷导航数据集,还要跨过仿真与真机之间的那道鸿沟。

仿真里学会的本事,凭什么到了真机还成立?

任何端到端导航策略都面对同一个问题:本领主要在仿真里学,真机的噪声、延迟、物理差异却不会照着仿真来。MulDP 的回答是一座专为跑酷导航建的数据集 QPND,外加两路数据增强。

QPND 由论文团队用 Unitree Go1 机器人在 Isaac Sim 仿真器里采集,总里程 31 公里,6400 条轨迹,约 25 万张深度图,覆盖六类地形,据论文自述是第一个四足跑酷导航数据集。采集时只用前向深度相机,10 赫兹、量程 2 米,加本征感知,刻意不用 LiDAR 这类特权传感器,保证训练分布与真机一致。六类地形的构成如下:

地形类型采集里程
Gap(沟)2.1 km 脚本采集 + 6.8 km 遥操作
Hurdle(栏)1.8 km 脚本采集 + 6.9 km 遥操作
Stairs(楼梯)3.4 km(脚本采集)
Gravel(砾石)1.5 km
Box(箱体)2.1 km
Flat(平地)6.4 km

采集方式是两条腿走路。普通地形用脚本控制的自动策略采集,不可通行的障碍地形改用专家遥操作。原因正好呼应第三章的多峰论点:自动策略学不会"多种绕法都合理"的场景,人在遥操作时反而会顺手给出多样的合理走法,喂给模型的是一个分布,而不是唯一的答案。

数据增强也有两路。轨迹级增强把每条轨迹切成更短的连续片段,各自独立作为训练样本,数据利用率提升近 50%。传感级增强给深度图注入 1% 的随机噪声和方差 0.01 的高斯噪声,再对本征感知加噪,模拟真机传感器的不干净。两路增强的动机是同一个:让模型在真机噪声面前不慌。每类基础地形还随机采样 50 对起点终点用脚本策略采集,这些起终点的多样性直接决定了动作分布的覆盖面。所有设计都在回答同一个问题:仿真里学到的分布,怎么才能在真机噪声下不崩。MulDP

底层执行这一环,论文直接复用了课题组自己的 RENet,一篇发在 IEEE Robotics and Automation Letters 2025 上的视觉端到端强化学习运动策略。RENet 擅长跑酷,但论文明确说明它没有自主导航规划能力。它只扮演执行者:接收高层速度航向指令与视觉输入,调整关节运动。也就是说,决策脑完全由 MulDP 承担,运动身体由 RENet 承担,两层通过 5 赫兹的首条指令对接。这套组合说明 MulDP 是站在已解决的技能之上,再加一颗决策大脑。

训练本身是标准的扩散训练:以噪声预测均方误差为目标,AdamW 优化器、学习率 1e-4、1000 轮、batch size 512。这些配置一句话带过就好,真正的工程功夫在数据与接口设计里。

数据、增强、接口都齐了。现在的问题是:这套设计值不值?每个模块都必要吗?

每个设计都必要吗?——对比与消融给出的答案

评估在仿真里按四项指标来。成功率 SR 指到达目标 0.2 米以内算成功;SPL 用路径效率给成功率加权;TR 是机器人在可通行区域里实际走过的面积占比;TTR 是成功试次的平均到达时间。每类场景 50 个随机起点,目标距离 5 到 8 米,单次限时 60 秒。

对比对象都是导航领域叫得上号的方法。NavDP 是 waypoint 式导航扩散策略的代表,论文把它的 critic 模块去掉后在 QPND 上重训,称为 NavDP*;ViNT 与 PointNav 是经典学习式视觉导航,同样在 QPND 上重训;另外两组直接用官方 checkpoint 评估,不做任何适配。结果看表:

方法SRSPLTTR
MulDP89.7%71.9%4.9 s
NavDP*(去掉 critic 重训)59.0%——
ViNT*(QPND 重训)71.5%——
NavDP 官方 checkpoint38.4%27.1%—
ViNT 官方 checkpoint35.8%25.5%—

三个信息量最大的对比。第一,MulDP 对 NavDP* 的差距,89.7% 对 59.0%。这个对比与速度接口的设计动机一致,但同时改变了视觉表征和训练方式:MulDP 直接消费前向深度图,端到端联合训练视觉编码器与导航策略;NavDP* 依赖预训练的 DepthAnything 从 RGB 提特征,预训练域与导航任务存在表征错配。因此,严格地说,这组对比只能说明 MulDP 的整套设计更有效,不能单独把差距归因于接口。第二,官方 checkpoint 直接掉到 38.4% 和 35.8%,因为它们在困难地形上收敛成了保守避障,根本不用四条腿的运动能力。第三,NavDP 为什么"保守"还有一层结构原因。它先生成 M 个稠密路径点候选,再用一个在仿真里以 ESDF 距离场监督训练的 critic 打分选优,安全评估落在路径点层面。跑酷场景要求的是"允许穿过障碍"式的精细判断,这套路径点层的安全评估在跑酷地形上反而不合适,MulDP 的实验因此把 critic 去掉重训成 NavDP*。可即便如此,重训后的 NavDP* 也只有 59.0%。顺带看 SPL:它给成功率加上了路径效率的权重,MulDP 的 71.9% 说明它多数时候既到了目标,也没有在障碍前反复试探绕远路。MulDP NavDP

五路消融逐一回答"每个设计是否必要"。去掉本征感知,成功率从 89.7% 掉到 69.5%,到达时间从 4.9 秒涨到 7.5 秒,说明身体状态感知和视觉同样要紧。去掉决策记忆编码器最惨烈:成功率只剩 7.4%,通行率却反升到 90.3%。这个反差很反常,值得点破:机器人并没有失去运动能力,它满地图乱转、完全忘了目标在哪,记忆编码器管的是目标导向推理。去掉当前空间编码器掉到 82.0%,动态场景开始出错。去掉深度和本征的噪声注入掉到 75.0%,对特定视觉外观过拟合。去掉轨迹增强掉到 32.5%,数据量几乎减半,过拟合直接压垮了泛化。五刀下去刀刀掉血,说明这套系统里没有冗余模块:感知、记忆、空间、噪声、数据,各自扛着一块别人替不了的功能。

更说明问题的是真机。在 Unitree Go1(机载 Orin NX,5 赫兹推理)上,论文做了 1 公里以上的户外动态目标跟随实验,全程无人类干预,机器人连续完成上下楼梯、草地穿行、跨沟、避障、跨栏。注意这是跟随一个动态移动的目标,目标的相对位置由 UWB 定位系统提供,不是固定终点。

仿真里还有一个直接检验多峰性质的证据。在一个 16×16 米、训练中从未见过的环境里,目标固定在 13 米外,从同一组起终点出发,MulDP 能采样出多条不同的可行轨迹,有的绕左、有的绕右,验证了"多种走法都对"不是嘴上说说;换成确定性回归策略,只会收敛出一条四平八稳的平均路线。

1 公里以上户外动态目标跟随实验

图注:长距离户外动态目标跟随实验的连续截图与俯视导航图。橙框为带平缓上下梯的圆形广场,蓝框为陡梯上下、草地穿行与避障,绿框为跨 gap、圆形花园与末端 hurdle 跳,右侧为俯视导航地图。图中实验跟随的是动态目标,而非固定终点。MulDP

前瞻行为的证据藏在速度曲线里。跑酷场景中,机器人在到达沟边之前就开始加速,峰值接近每秒 2 米,落地之后才减速,说明策略在接触地形之前就已经把动量备好,而不是撞上了才反应。密集障碍场景里,它保持约 1.1 米每秒的巡航速度,用航向调整来避障而不是急刹,避免了停停走走。还没到沟边就先加速,正是这篇论文标题里那个画面,也是速度指令地平线这个设计最直观的回报。

单独一篇论文的数字已经够硬。把它放回 2023 到 2026 的演化线上看,它站在哪、又停在哪?

放在 2023–2026 的演化线上看,MulDP 站在哪、又停在哪?

把时间轴拉长,MulDP 其实是两条演化线的交汇点。一条是导航侧:从 AMCO 的显式代价地图,走到 NavDP 的 waypoint 扩散生成,再到 X-NavDP 的 waypoint 分块加强化学习后训练。另一条是跑酷侧:从 Extreme Parkour 的单策略端到端技能,到课题组自己的 RENet 底层策略,再到 PUMA 的单阶段落足点先验。MulDP 站在"扩散生成 × 速度指令输出"这个此前空着的交叉位置上,并让 RENet 充当它的执行层。

图注:两条演化线的示意。上方是导航侧:AMCO 的显式代价地图到 NavDP、X-NavDP 的 waypoint 扩散生成;下方是跑酷侧:Extreme Parkour 的单策略技能到 RENet 底层策略、PUMA 的单阶段强化学习。两条线在 MulDP 交汇,RENet 兼任它的底层执行层。

2026 年的自主跑酷,其实有两条平行的技术路线。PUMA 走的是一侧:单阶段强化学习,预测 egocentric 落足点先验来引导姿态,输出的是落足点与关节级指令;MulDP 走的是另一侧:扩散生成,直接输出速度指令地平线。两篇论文的任务与评测场景本就不是一套,这里不做性能比较,只并置结构。PUMA

PUMA 单阶段训练框架

图注:PUMA 单阶段训练框架:本征感知与深度图像输入策略,预测 egocentric 落足点先验、基座速度与潜在地形特征,与当前观测拼接后送入策略网络;多个 critic 按不同奖励分量协同优化,PAS 策略在训练中逐渐用预测落足点替换真值落足点。PUMA

差异盯住输出形态看就清楚了:PUMA 指导机器人"脚踩哪",MulDP 指导机器人"下一步怎么使劲"。在导航扩散这条线上,2026 年的 X-NavDP 把 waypoint 分块加上强化学习后训练,跨形态推广,与 MulDP 的速度指令直出构成了同一个扩散空间里的两种输出范式:一个仍需 MPC 把轨迹翻译成速度命令,一个让底层直接执行。X-NavDP 第一章那套 8 个网络强耦合的分层系统,到这里成了最鲜明的对照组:MulDP 用一个扩散网络加一个现成的底层策略,就把高层决策整个接管了。

最后讲局限,边界是论文自己画的。第一,实机实验依赖 UWB 提供相对的动态目标位置,离开这套定位系统,自主导航还谈不上。第二,1 公里实机只在训练地形分布附近的户外路线验证;对未见障碍的泛化(草地上的圆盘、路上的自行车)证明它能认出生疏的几何形状,但距离"任何地形都能去"还远。第三,论文自己列出的未来方向是语义感知、更高层规划、轻量安全评估模块,这些恰好是它现在没有的。另外,QPND 数据集与代码截至写作时没有公开。

把所有这些放回最初的问题:四足机器人"会跑酷"与"会自主穿行"之间隔着的,不是更强的动作,而是把决策交给生成模型的那一层接口。MulDP 证明了这条路可以通到 1 公里外的真机,也诚实地标出了它停在哪。导航决策可以、而且应该以动作本身为输出,这句话从此有了一个可验证的样本。下一站的问题也清晰:等语义感知补上之后,机器人能不能从"认得出障碍"走到"认得出障碍是什么",从训练过的跑酷地形走进真正开放的世界。那是 MulDP 自己留给后来者的跑道。

想深入可以读原文:MulDP: Multimodal Diffusion Policy for Autonomous Quadruped Parkour Navigation across Complex Terrains — arXiv:2609.03984

参考文献

MulDP:还没到沟边就先加速——四足机器人复杂地形自主跑酷导航