Watch Your Step Learning Semantically-Guided Locomotion in Cluttered Environments
2026/8/5
来源:arxiv2603
这篇文章的核心目标非常明确:让四足机器人不仅"看见地面高不高",还能够理解"地面上的东西能不能踩",并把这种语义判断真正下沉到落足点选择和低层运动控制中。论文提出的系统叫 SemLoco,面向电线、手机、充电宝、小型仪器等低矮、易损、但在深度图或高程图中不明显的物体。它不是单纯做语义导航,也不是让机器人绕着整片区域走,而是试图在行走过程中精确调整每一步的落足位置,避免足端直接踩到这些物体。
一、论文试图解决什么问题
传统四足机器人在复杂地形上已经能保持平衡、爬坡、跨越障碍,但进入室内人类环境后,问题的重点会发生变化。室内环境中的危险物体未必很高,例如地上的数据线、手机、遥控器和小型设备,它们对机器人动力学影响不一定大,机器人甚至可以直接踩过去,但这样会损坏环境中的物体。因此,这里的目标不再只是"机器人不要摔倒",而是"机器人不要破坏周围环境"。
现有方法大多依赖 elevation map,也就是高程图。高程图比较适合检测台阶、石块等明显的几何起伏,但对高度只有几毫米或几厘米的小物体不可靠。一方面,深度传感器的噪声可能与物体高度处于同一个量级;另一方面,地图滤波过程可能直接把这些小物体平滑掉。即便高层语义导航模块识别出了"这是手机"或"这是电线",很多系统也只会在路径规划层面改变机器人整体路径,并不会约束具体某一条腿下一步落在哪里。
因此,论文所强调的关键断层是:
高层语义理解知道"这个物体不应该踩",但低层 locomotion controller 并不知道具体哪个足端、在哪个时刻、应该把落足点改到哪里。
SemLoco的主要工作,就是把语义地图转化为显式的落足约束,并进一步让强化学习控制器跟踪这些安全落足点。
二、整体框架
论文第3页的图2给出了完整框架。系统可以拆成三个主要部分:语义与高程地图构建、语义感知落足点规划、强化学习低层控制。
机器人输入包括速度指令、步态参数、本体状态、高程图和语义图。系统首先利用一个经过修改的Raibert启发式生成每条腿的目标落足点,然后把目标落足点通过奖励函数间接提供给RL policy。policy并不直接输出足端坐标,而是输出12个关节的目标位置偏移,最后由PD控制器转成关节力矩。
因此,这篇文章不是纯粹的:
\[\text{图像+语言/语义}\rightarrow\text{落足点}\]而是:
\[\text{语义图+高程图} \rightarrow \text{显式落足点搜索} \rightarrow \text{RL关节控制}\]其中,语义信息并不是完全由神经网络隐式消化,而是被显式用于候选落足点的安全判断。这是理解整篇文章最重要的一点。
三、策略的输入与输出
策略的总观测维度为1513维:
\[O_t= \left[ C_t^{cmd}, B_t, O_t^{proprio}, O_t^{extero} \right].\]第一部分 $C_t^{cmd}\in\mathbb{R}^3$ 是速度指令,包括机身前后速度、左右速度和偏航角速度:
\[v_x^{cmd},\quad v_y^{cmd},\quad \omega_z^{cmd}.\]第二部分 $B_t\in\mathbb{R}^{13}$ 是步态行为参数,包括机身高度、摆动高度、步频、占空比、站立宽度和长度,以及各条腿的相位或接触计时信息。这里可以看出,该系统的步态并不是完全由RL自由发现,而是使用了类似Walk These Ways的参数化步态接口。论文主要使用的是四拍walking gait,而不是典型的trot。
第三部分 $O_t^{proprio}\in\mathbb{R}^{57}$ 是本体感知状态,包括估计的机身线速度、角速度、重力方向、12个关节角、12个关节速度,以及前两步的动作。
第四部分 $O_t^{extero}\in\mathbb{R}^{1440}$ 是外部环境信息,由两张 $30\times24$ 的局部地图构成:
\[H_t^{elev}\in\mathbb{R}^{720}, \qquad H_t^{sem}\in\mathbb{R}^{720}.\]地图覆盖机器人周围约 $1.5\text{ m}\times1.2\text{ m}$ 的区域,分辨率为5厘米。高程图和语义图分别经过CNN编码,编码特征再与其他状态拼接,送入MLP actor。
动作空间为12维:
\[a_t\in\mathbb{R}^{12},\]表示12个关节相对于名义关节位置的目标偏移。PD控制器参数为:
\[k_p=20,\qquad k_d=0.5.\]所以,SemLoco的policy本质上仍然是一个joint-position policy,并没有直接输出足端落足点。
四、论文最关键的部分:语义感知落足点规划
SemLoco首先使用标准Raibert启发式计算每条腿的名义落足点。对于第 (i) 条腿:
\[P_{\text{raibert}}^i = P_{\text{nom}}^i + \Delta P_{\text{lin}}^i + \Delta P_{\text{yaw}}^i.\]其中 $P_{\text{nom}}^i$ 是由站立宽度和长度决定的默认足端位置。线速度修正项为:
\[\Delta P_{\text{lin}}^i = \begin{bmatrix} \frac{T_{\text{stance}}}{2}v_x^{cmd}\ 0 \end{bmatrix},\]偏航修正项为:
\[\Delta P_{\text{yaw}}^i = \begin{bmatrix} 0\ \frac{T_{\text{stance}}}{2} \omega_z^{cmd}x_{\text{nom}}^i \end{bmatrix}.\]站立时长由步频 (f) 和占空比 (d) 计算:
\[T_{\text{stance}}=\frac{d}{f}.\]这一部分给出的是"如果不考虑障碍,按照当前速度和步态,下一步大概应该落在哪里"。
接下来,SemLoco不会直接采用这个名义点,而是在其周围建立一个 $M\times M$ 的局部搜索网格,对候选落足点逐一打分。候选点的代价为:
\[J(p_k) = C_{\text{dir}}(p_k) + w_{\text{col}}\mathbf{1}_{\text{col}}(p_k).\]其中,方向偏移代价定义为:
\[C_{\text{dir}}(p_k) = w_x^+\max(\Delta x,0) + w_x^-\max(-\Delta x,0) + w_y|\Delta y|.\]这里的权重满足:
\[w_y \gg w_x^+ > w_x^-.\]这个不对称设计非常有意思。它表达了三条运动学偏好。
首先,横向偏移最昂贵,因为横向改步容易破坏支撑多边形和整体平衡。其次,向前过伸比缩短步幅更危险,所以 $w_x^+>w_x^-$。最后,当名义落足点不安全时,系统优先选择"少迈一点",其次才考虑向前伸更远,最不愿意做的是大幅横向改步。
碰撞项 $\mathbf{1}{\text{col}}$ 根据语义障碍的AABB包围盒进行判断。障碍边界还会按照足端半径 $r{\text{foot}}$ 向外膨胀,以提供安全裕度。碰撞权重设置为:
\[w_{\text{col}}\gg w_y,\]意味着碰撞候选点原则上被直接否决。
最终目标落足点为:
\[P_{\text{target}}^i = \arg\min_{p_k\in G_i}J(p_k).\]换句话说,这里的"语义落足点预测"本质上不是神经网络直接预测,而是:
Raibert名义点 + 局部离散搜索 + 语义碰撞代价。
这与您之前研究的Quad-SDK、Mini-Cheetah和TAMOLS一类方法在思想上很接近:先生成名义落足点,再在局部范围内根据地形或可通行性进行修正。它的创新点主要在于把语义危险区域引入了落足搜索代价。
五、语义地图是怎么构建的
真实部署时,系统使用开放词汇语义分割模型,对RGB图像中的每个像素预测类别概率:
\[P(S_t=c\mid u,v).\]由于RGB和点云对齐,每个像素可以关联到一个三维点,再投影到局部或全局栅格地图中的某个cell (g)。每个栅格维护一个类别概率分布:
\[P_t(c\mid g).\]作者使用贝叶斯融合进行时间更新:
\[P_t(c\mid g) \propto P(S_t=c\mid p_i)P_{t-1}(c\mid g).\]然后,为每个类别预先指定一个通行代价 $\phi(c)$,地图中某个格子的最终语义代价为:
\[M(g) = \sum_{c\in\mathcal C} P_t(c\mid g)\phi(c).\]不过,论文当前并没有保留非常丰富的开放词汇语义,而是把最终语义压缩成一个0到1之间的"fragility"指标。也就是说,手机、电线、纸盒等不同物体,最终主要被转化成"有多不应该踩"的连续代价,而不是让机器人执行不同类型的交互行为。
因此,论文虽然使用了开放词汇语义分割,但控制层接收到的其实是一个相对简单的语义可通行性图,而不是完整的语言语义表示。
六、强化学习如何跟踪目标落足点
目标落足点 $P_{\text{target}}^i$ 并不会作为policy的显式输入,而是进入奖励函数。主要奖励为:
\[r_{\text{primary}} = w_{\text{vel}}r_{\text{vel}} + w_{\text{sem}}r_{\text{semantic}}.\]速度跟踪奖励为常见的指数形式,用于跟踪平面速度和偏航角速度。语义落足跟踪奖励为:
\[r_{\text{sem}} = \sum_{i=1}^{4} \mathbf{1}*{\text{swing}}^i \exp \left( -\frac{ |p*{\text{foot}}^i-P_{\text{target}}^i|*2^2 }{ \sigma*{\text{foot}} } \right).\]只有当第 (i) 条腿处于摆动相时,这个奖励才生效。它鼓励摆动足最终接近规划器给出的安全落足点。
这一设计意味着,RL policy需要自己学习如何通过12个关节动作,把足端送到目标位置,同时维持机身稳定和速度跟踪。显式规划器负责回答"脚应该落在哪里",RL负责回答"怎样运动才能落到那里"。
总体奖励采用乘法结构:
\[R_{\text{total}} = r_{\text{primary}} \cdot \exp(c_{\text{penalty}}r_{\text{penalty}}).\]这里主任务奖励非负,惩罚项非正。作者认为,相比简单地把各种奖励线性相加,这种乘法形式能减轻不同奖励项之间的权重冲突。
七、为什么要设计ReLU足端净空惩罚
论文没有强制摆动足严格跟踪一条固定的足端轨迹,而只要求足端不要低于一个最小安全高度。
目标摆动高度为:
\[z_{\text{ref}}^i = s_{\text{feet}} \sqrt{ \sin(\pi\phi_{\text{swing}}^i) } + \delta_z.\]其中 $\phi_{\text{swing}}^i\in[0,1]$ 是摆动相进度,$\delta_z=0.02\text{ m}$ 是安全裕度。
对应的净空惩罚为:
\[c_{\text{clearance}} = \sum_{i=1}^{4} \mathbf{1}*{\text{swing}}^i \max(0,z*{\text{ref}}^i-z_{\text{footswing}}^i)^2.\]ReLU的作用是,只在真实足端高度低于参考高度时惩罚。如果足端比参考轨迹抬得更高,不会被惩罚。
这比严格轨迹跟踪更适合杂乱环境。严格跟踪:
\[-(z-z_{\text{ref}})^2\]会同时惩罚"抬得太低"和"抬得太高",导致policy不敢根据障碍动态提高摆腿高度。而ReLU版本只给出下界,相当于告诉机器人:
至少抬这么高,但必要时可以抬得更高。
实验中,去掉这一设计后,在15个障碍物每平方米时,足端碰撞率从8.78%上升到23.07%,说明这种单边约束对复杂摆腿动作很重要。
八、两阶段强化学习
这篇文章的第二个重要设计,是virtual obstacle到rigid obstacle的两阶段训练。
第一阶段使用虚拟障碍。障碍会出现在高程图和语义图中,policy也会收到对应的安全落足点奖励,但仿真中障碍没有物理碰撞。机器人的腿可以直接穿过障碍,不会被绊倒,也不会推动障碍物。
这样做的目的是先让policy学习:
\[\text{地图中的危险位置} \rightarrow \text{足端应该如何调整}\]而不必在训练早期同时承受碰撞、摔倒、关节冲击等复杂物理后果。如果一开始就使用刚性障碍,机器人频繁摔倒,几乎得不到有效的速度和落足奖励,最后容易学成"原地不动"的保守策略。
第二阶段再启用刚性障碍,让策略适应摩擦、碰撞、足端打滑和真实动力学。
这个两阶段过程本质上是一种从"软空间约束"到"硬物理约束"的课程学习。第一阶段解决落足空间探索,第二阶段解决动态可执行性。
消融实验很好地说明了这个设计的重要性。在15个障碍物每平方米时,完整方法成功率为92.6%;去掉虚拟障碍阶段后,成功率下降到45.8%,平均失败距离从9.51米下降到5.88米。
九、训练和部署设置
训练使用Isaac Lab和PPO,每个阶段都采用4096个并行Unitree Go2环境。作者使用单张RTX 5090训练,虚拟障碍阶段约1.5小时,刚性障碍阶段约3.5小时,总训练时间约5小时。
真实机器人是Unitree Go2,搭载头部RGB-ToF传感器Odin1和AGX Orin。语义分割、地图融合和policy inference都在机器人本地运行。低层policy频率为50 Hz,感知前端异步运行在10 Hz。
从系统角度看,这个频率搭配是合理的:语义和地图不必每个控制周期都更新,而低层关节动作需要保持较高频率。10 Hz感知结果在多个50 Hz控制周期中复用。
十、实验结果怎么看
仿真测试环境是一条 $10\text{ m}\times2\text{ m}$ 的直线跑道,目标速度为0.4 m/s。障碍密度分别为10、15、20和25个每平方米。每种密度使用同一组500个随机环境进行评估。
指标包括成功率 (S)、平均失败距离 (D) 和足端碰撞率 (C)。
完整方法在障碍密度为10、15、20、25个每平方米时,成功率分别为:
\[97.0%,\quad 92.6%,\quad 87.4%,\quad 82.2%.\]对应足端碰撞率分别为:
\[2.37%,\quad 8.78%,\quad 13.45%,\quad 24.33%.\]Blind policy在最高密度下成功率只有9.4%,足端碰撞率达到93.33%。
不过,有一个结果需要谨慎理解:在仿真中去掉语义地图后,性能下降其实并不特别大。例如10个障碍物每平方米时,完整方法和无语义版本成功率都是97%,碰撞率分别为2.37%和7.46%。这是因为仿真障碍本身具有明显高度,高程图已经可以较好地把它们检测出来。
所以,这篇文章真正能够证明语义地图价值的部分主要不是仿真定量结果,而是真实环境中的定性实验。第7页图5显示,真实深度图几乎无法分辨地面上的手机、电线和低矮物体,而语义图能够明确标出这些危险区域。没有语义地图的policy表现得像"推土机",不断踢动和踩踏物体;完整SemLoco则会缩短步幅、轻微侧移,并在后续摆腿中提高足端高度。
不过,真实实验没有给出大规模定量成功率或碰撞率统计,这一点是论文实验上的明显不足。
十一、这篇文章的真正创新在哪里
从算法组件来看,SemLoco的每一个模块都不算全新:Raibert落足点、局部网格搜索、语义栅格地图、RL关节控制、课程学习,这些都已有大量工作。
它真正有价值的地方是系统层面的连接方式:
\[\text{开放词汇视觉语义} \rightarrow \text{语义可通行性地图} \rightarrow \text{足端级候选点筛选} \rightarrow \text{RL低层跟踪}\]它没有把语义只用于高层路径规划,也没有要求神经网络从头隐式学习语义与落足之间的关系,而是构造了一个显式、可解释、容易训练的语义落足规划器。
因此,这篇文章更准确地说是一种"语义约束下的落足点修正与跟踪框架",而不是一个端到端视觉语言落足点生成模型。
十二、与您当前语义落足点项目的关系
这篇文章与您正在做的方向非常接近,而且可能是目前最直接的相关工作之一,因为它明确将语义信息应用到了四足机器人的落足点级控制,而不仅是机身路径或速度层面。
但它与您的目标仍有几个关键区别。
第一,它的输入不是自然语言指令,而是语义分割后的fragility map。语义模型负责识别物体,控制器最终只看到"这里危险程度是多少",并不知道用户具体说了什么。例如,"不要踩红色区域""踩在蓝色圆圈上""避开手机但可以踩纸张"这类指令,SemLoco当前框架无法直接处理。
第二,它不是由VLM、VLN或VLA直接预测落足点。落足点由Raibert启发式和局部离散搜索显式计算,神经网络只负责关节控制。
第三,它的语义表达比较单一。所有语义最终被压缩成fragility cost,本质上只有"越高越不能踩"这一种偏好。您的任务中可能需要多种语义关系,例如必须踩、禁止踩、优先踩、绕过、跨过、左脚踩、右脚踩等,这些都需要更丰富的条件表示。
第四,它非常适合作为您的teacher或baseline。具体来说,可以直接借鉴其:
\[\text{Raibert名义点} + \text{语义代价局部搜索}\]作为传统规划基线,生成语义安全落足点;然后采集这些落足点和机器人执行轨迹,用于训练您计划中的VLN/VLA模型。您的模型可以进一步学习:
\[\text{图像+自然语言+机器人状态} \rightarrow \text{多足目标落足点}\]从而替代SemLoco中的语义地图、人工代价和局部搜索过程。
十三、论文的局限性
作者在结论中也承认了几个问题。
首先,极端不对称落足会产生未被补偿的角动量,导致机身偏航漂移,甚至使关节接近运动学奇异位置。这说明当前落足搜索主要考虑局部安全性,没有充分考虑全身动态可行性。
其次,真实机器人很难完全复现仿真中的足端轨迹和摆腿高度,仍然存在明显sim-to-real gap。
第三,仿真中的真实物体被简化成方块等几何体,物体边界与真实环境差别较大。语义图虽然解决了"能不能识别"的问题,却没有完全解决"边界有多准确"的问题。
第四,局部搜索代价比较手工化。特别是:
\[w_y \gg w_x^+ > w_x^-\]这类权重是人工设定的运动学偏好,并不能保证对所有步态、速度和地形都成立。
第五,虽然论文声称进行pixel-wise foothold safety inference,但实际落足点仍然是在一个离散局部网格中搜索,精度受到5厘米地图分辨率和搜索步长限制。
第六,真实实验以定性展示为主,缺少足够规模的真实碰撞率、成功率、感知误差和系统延迟统计。
十四、如何定位这篇文章
我认为可以把SemLoco概括为:
一个使用语义地图修正Raibert落足点,并通过两阶段强化学习训练四足机器人跟踪安全落足点的语义感知locomotion框架。
它的重要性不在于提出了一种全新的低层控制算法,而在于明确证明了:仅靠高程图无法处理室内低矮敏感物体,语义信息必须进入足端级决策,而不能只停留在高层导航。
对您的研究来说,这篇文章一方面构成了非常直接的相关工作,说明"语义作用于落足点"已经有人做过;另一方面,它也清楚留下了您的创新空间:自然语言条件、VLM/VLN/VLA直接生成、多足联合建模、足端身份条件、动态可行性约束,以及从单一fragility cost扩展到开放词汇的语义交互。