SayTap: Language to Quadrupedal Locomotion
2026/8/4
来源:arxiv2306
Takeaway message: SayTap 的核心并不是让大语言模型直接输出关节角或电机力矩,而是把"四条腿何时接触地面"构成的足端接触序列,作为自然语言与低层运动控制器之间的中间接口。LLM 负责把"慢慢小跑""像地面很烫一样走""开心地跳起来"等语言转换成二值接触模式,强化学习控制器再根据该模式和速度指令输出关节目标,从而在 Unitree A1 上生成多种步态和具有一定"表现力"的动作。
文章想解决什么问题
这篇文章关注的是"语言如何真正作用到四足机器人的运动上"。在 SayTap 之前,LLM 在机器人中的典型用法通常是高层规划:例如决定先去哪里、调用哪个技能,或者编写一段由机器人 API 组成的代码。但对于四足机器人而言,真正的底层控制信号是几十乃至几百赫兹更新的关节角、力矩或足端轨迹。LLM 一方面不擅长直接理解这些连续动力学量,另一方面也不可能可靠地以如此高的频率闭环控制一个本质上不稳定的系统。
一种常见解决办法是提前准备若干高层技能,例如 trot()、bound()、turn_left(),让 LLM 选择技能。但这会把机器人的行为限制在工程师事先定义好的动作集合中:系统虽然容易实现,却缺乏表达能力。用户说"右前腿比其他腿动得更快""三条腿走,右后腿始终悬空",这类指令很难用固定步态 API 描述。
SayTap 的关键问题因此变成:能否找到一种表示,它既足够简单,让 LLM 能从语言中生成;又足够接近运动控制,使一个统一的低层控制器能够执行;同时还不能像离散步态名称那样限制动作空间。作者选中的接口就是足端接触模式。
核心洞见:用接触时序描述步态
四足机器人的步态,很大程度上由四条腿何时支撑、何时摆动决定。小跑、踱步和奔跳之间的核心区别,并不首先体现在某个关节应该转多少度,而在于四条腿的接触相位关系。
论文将一个完整的接触模式表示为 (4\times T) 的二值矩阵。四行依次对应左前腿 FL、右前腿 FR、左后腿 RL 和右后腿 RR;每一列对应一个控制时刻;数字 1 表示足端应当接触地面,0 表示足端应当离地。例如,对角腿同步交替接触对应 trot,同侧腿同步交替对应 pace,前腿和后腿成组交替则对应 bound。
这种表示有两个重要优点。第一,它对 LLM 十分直观,因为本质上只是按照文字规则生成由 0 和 1 组成的序列,而不是理解复杂的动力学公式。第二,它比"步态类别"更细粒度。LLM 不仅能输出 trot、pace、bound,还能修改某一条腿的频率、加入四脚同时离地的腾空阶段、让某条腿一直悬空,甚至在一个序列中先 bound 再 pace。
因此,SayTap 实际上建立了这样一条链路:
\[\text{自然语言} \rightarrow \text{期望速度和足端接触模板} \rightarrow \text{强化学习运动控制器} \rightarrow \text{关节目标位置}\]这里的 LLM 不是实时运动控制器,而更像一个语言条件下的步态编排器;真正维持平衡、生成关节运动并处理动力学约束的,是低层强化学习策略。
系统整体如何工作
论文第4页的图2给出了完整框架。训练阶段与测试阶段共享同一个低层 locomotion controller,但接触模式的来源不同。
训练时并不调用 LLM,而是使用一个随机接触模式生成器。生成器根据给定的步态类别,随机采样周期长度、支撑相比例和腿间相位,产生大量不同的接触模板。控制器不断面对这些随机模式,学习"当未来几步要求哪些腿接触地面时,我应该如何调整关节"。
测试时则由 GPT-4 根据用户指令输出速度和完整的接触模板。模板并不会一次性全部输入策略,而是通过一个循环滑动窗口,从当前时刻向前截取未来 (L_w) 个控制步的接触要求。论文中 (L_w=5),因此控制器每一步都能看到四条腿未来5个时刻的期望接触状态,即一个 (4\times5) 的局部接触计划。
这种设计相当于给予控制器一个非常短期的"接触预览"。只输入当前时刻的接触状态,策略可能来不及为下一次抬腿或落地做准备;输入未来若干步后,它可以提前调整机身和关节状态。但窗口仍然很短,因此控制器主要承担的是局部闭环执行,而不是长时域轨迹规划。
LLM 如何从语言生成接触模式
SayTap 并没有专门微调语言模型,也没有收集大量"语言—四足动作"配对数据,而是完全依赖 GPT-4 的提示学习能力。其 prompt 由四部分组成。
首先,系统告诉模型,它是一名"狗的足端接触模式专家",任务是根据输入给出速度和足端接触模式。其次,prompt 用自然语言定义了几种典型步态,例如 trot 是对角腿同时落地,pace 是同侧腿同步,bound 是前腿和后腿分组同步,并且具有较长腾空阶段。值得注意的是,作者还把 bounding 与"快乐的感觉"联系起来,这为处理情绪性、模糊性指令提供了语义桥梁。
第三部分严格规定输出格式。速度从 ({-1,-0.5,0,0.5,1},\mathrm{m/s}) 中选择,然后分别输出 FL、FR、RL、RR 的二进制序列。第四部分只给出三个示例:"慢速小跑""原地奔跳"和"快速向后踱步"。
尽管示例很少,LLM 仍然能够组合已有规则。例如,当输入"原地小跑,但右前腿频率是其他腿的两倍"时,它可以直接修改右前腿的二值序列;当输入"先 bound 再 pace"时,它可以延长模板并拼接两种模式。这正是作者认为接触序列比离散步态 API 更有表达力的原因。
不过,这里的"语言理解"并不是完全开放的物理推理。LLM 生成的仍然只是符号层面的接触要求,它并不知道这个要求在特定机器人上是否动态可行。可行性的学习和过滤主要由训练数据分布以及低层控制器承担。
低层强化学习控制器学什么
控制器被建模为一个 PPO 训练的前馈神经网络。它的输入包括机身角速度、机身坐标系下的重力方向、目标前向速度、当前关节位置和速度、上一时刻动作,以及滑动窗口中的期望接触模式。输出是 Unitree A1 的12个关节目标位置。
由于 A1 有12个关节,而接触窗口包含 (4\times5=20) 个二值量,论文中的总输入维度为65,输出维度为12。策略网络包含三层隐藏层,尺寸为 512、256 和128,激活函数为 ELU。
控制器要同时完成两类目标。第一类是传统速度跟踪,即让机器人沿机身前向达到目标速度,同时抑制横向速度和偏航角速度。第二类是接触模式跟踪,即在要求某只脚着地时实际产生接触,在要求它腾空时保持离地。
这里有一个值得注意的定位:接触模式并没有直接规定足端落在哪里,也没有规定摆动轨迹、足端高度或关节运动。因此,控制器必须自己找到一套满足接触时序、速度要求和平衡约束的具体动作。这使同一个接触模板原则上可能对应多种关节运动,而策略最终学到的是其中一种在训练环境中稳定、自然、可迁移的解。
奖励函数的设计思想
论文的奖励函数基于 legged-gym 的速度控制任务,但将足端接触误差加入核心目标。最关键的任务奖励包括前向速度跟踪、抑制横向速度、抑制偏航角速度,以及期望接触与实际接触之间的二值差异。
除此之外,作者加入动作变化率惩罚,避免关节目标在相邻控制周期之间剧烈变化;加入机身滚转、俯仰角速度以及竖直速度惩罚,以稳定机身;惩罚大腿和小腿等非足端部位撞击地面;并约束关节不要过度偏离默认姿态。这些项不只是让仿真动作看起来更自然,也被作者明确视为缩小 sim-to-real gap 的手段。
一个有趣的细节是,部分稳定性惩罚在 bounding 步态下被关闭。因为 bound 本身包含明显的机身起伏和腾空阶段,如果仍强行惩罚竖直速度和俯仰运动,控制器可能无法形成自然的奔跳动作。这说明虽然作者强调奖励"只关注接触时序",实际完整训练仍然需要根据步态调整部分正则项。
随机接触模式生成器为什么重要
训练阶段不能直接让 LLM 随意生成模式,因为大量随机二值序列在动力学上根本不可执行。例如,四条腿长时间同时腾空、某条腿以极高频率切换接触,或者支撑相位过短,都可能使机器人直接摔倒。
作者因此设计了带有领域知识的随机生成器。它只覆盖五类模式:BOUND、TROT、PACE、STAND STILL 和 STAND 3LEGS。对于前三类步态,生成器首先采样周期长度 (T),在论文中通常为24到28个控制步。由于控制频率为50 Hz,对应周期约0.48至0.56秒。随后采样每只脚一个周期内的接触比例,通常在0.5至0.7之间,再根据步态调整周期或支撑时间,并按照步态定义对各腿的序列进行相位偏移。
例如,pace 中左前腿和左后腿同相,右侧两腿与其反相;bound 中前腿同步、后腿同步,二者之间存在相位差。生成器并不是从严格的动力学可行域推导而来,而是作者先训练普通速度控制策略,观察其自然形成的步态参数范围,再据此人工确定采样区间。
这部分既是 SayTap 成功的关键,也是论文承认的主要限制:控制器最终能执行哪些语言动作,很大程度上取决于训练时随机生成器覆盖了哪些模式。LLM 的符号输出空间可以很大,但低层策略的实际能力边界仍由训练分布决定。
左右对称的 double-pass 技巧
作者还使用了一种 double-pass 对称技巧。策略首先对原始状态运行一次,随后将状态进行左右镜像,再运行同一个策略,然后把第二次输出重新镜像回来,最终将两次动作取平均。
其直觉是:如果把机器人的左腿和右腿互换,控制器的输出也应该相应互换。通过在推理中显式执行这种对称平均,可以减少策略因训练采样不均或网络拟合误差产生的左右偏差。作者认为这一技巧明显提升了动作的自然性,并有助于实机迁移。
它本质上不是学习一个额外模型,而是利用机器人结构中已知的对称先验,对同一策略进行两次前向计算。代价是推理量大约增加一倍,但对于规模较小的前馈控制网络,这一开销相对有限。
实验一:为什么接触模式比其他接口更合适
作者把接触模式与两种接口进行比较。第一种基线只让 LLM 输出速度和五个离散步态类别之一;第二种基线让 LLM 为每条腿输出一个正弦函数的频率、相位和阈值,再由这些参数生成接触序列。
离散步态类别容易理解,因此在普通的 trot、pace、bound 指令上表现尚可,但它无法表达组合和局部修改。例如"右前腿运动频率更高""右后腿始终离地""先 bound 再 pace",都不属于预定义类别。除非不断给 API 增加参数和新类别,否则表达能力始终受限。
正弦参数接口理论上具有较高自由度,但 LLM 很难从步态语言稳定地推导出频率、相位和阈值之间的数学关系。也就是说,这种表示对控制工程师可能很自然,对语言模型却不够自然。
相比之下,二值接触序列既保留了较高自由度,又不要求 LLM 进行复杂连续参数推理。论文在25类指令上,每个指令采样5次,接触模式接口的总体正确率比两个基线高约50%。在更复杂的第21至25类组合指令中,其优势尤其明显。
不过,作者对"正确"的判断主要依赖人工编写的规则检查器。这些检查器能判断输出是否满足指定相位关系或某条腿是否持续腾空,但并不等同于完整的动力学可行性评估。因此,这项实验主要证明"LLM 能否正确生成符号模式",而不是"每一个生成模式都能被机器人稳定执行"。
实验二:控制器能否同时跟踪速度和接触模式
仿真实验显示,策略可以在指令切换时同时调整速度和步态。例如从"慢速向前 bound"切换到"抬起右前腿",或者从"慢速向前 bound"切换到"快速向后 trot",机器人实际前向速度会逐步逼近新的目标,足端接触也会随之切换。
期望接触模式和实际接触模式并不完全一致,尤其在切换瞬间会出现偏差,但整体相位结构能够被保留。这说明策略并不是简单记忆某几种步态,而是确实利用输入的接触窗口进行条件控制。
作者随后将策略从 Isaac Gym 直接部署到 Unitree A1,没有进行实机微调。实机上能够实现 trot、pace、bound、三足站立以及若干组合模式。论文第2页的图1展示了从慢速小跑切换到与"去野餐的好消息"相关联的 bounding 动作,并比较了期望接触时序与实测时序。实测模式存在较多短暂接触和抖动,但总体节奏与期望模式一致。
模糊语言和"情绪动作"
SayTap 较有趣的一部分,是测试没有明确给出步态名称的语言。例如:
"好消息,我们周末要去野餐!"会被翻译成原地上下跳动; "后退,别伤害那只松鼠!"会生成慢速后退的 trot; "假装地面很烫"会生成快速 pace,并缩短足端接触时间; "假装左后腿瘸了"会让左后腿很少运动; "去抓树上的松鼠"会生成快速向前 bounding。
这并不意味着系统真正理解了情绪或场景的物理含义。其工作机制更接近:LLM 根据语言常识,把抽象语句联想到"开心跳跃""谨慎后退""快速抬脚"等运动意图,再将这种意图编码成接触序列和速度。低层控制器随后把符号模式具现化为运动。
因此,SayTap 展现的是一种早期的语言到运动风格映射。它不是视觉语言导航,也不会根据环境图像决定如何落足;语言主要调节步态、速度和身体表现。
这篇文章真正的贡献
这篇文章最重要的贡献并不是提出了新的 PPO 算法,也不是训练出了性能特别强的四足控制器,而是提出了一个合理的"语言—运动"接口设计原则:在 LLM 与机器人控制之间,中间表示既要对语言模型友好,也要对低层控制友好。
离散技能太粗,限制表达能力;关节角、力矩和动力学参数太底层,LLM 难以生成;足端接触模式位于二者之间。它保留了步态结构,又把复杂连续运动压缩成直观的符号时序。这种选择使系统能够在没有语言标注运动数据、没有训练语言条件策略的情况下,直接利用现成 LLM 的常识和 few-shot 能力。
从今天的视角看,SayTap 可以理解为一种较早的"LLM 生成结构化运动条件,运动策略负责执行"的分层系统。它没有让 LLM 侵入高频闭环控制,而是明确划分了语义规划和动力学执行的边界。这一点比"让 LLM 直接控制机器人"的表面叙事更值得关注。
局限性与对你当前研究的启发
论文最大的局限是,接触模式不等于落足点。它只回答每条腿"什么时候支撑、什么时候摆动",不回答"脚应该落在什么位置"。因此,SayTap 很适合控制步态、运动节奏和表现风格,却不能直接处理踏石、窄梁、禁落足区域或复杂地形中的语义落足约束。
第二,LLM 生成空间与控制器可执行空间之间存在错位。LLM 可以输出任意二值序列,但控制器只在五类随机模式附近训练。遇到训练分布外的模式时,系统没有显式可行性检查,也没有保证机器人能够实现。作者自己也指出,随机模式生成器需要领域知识和反复试验,并且随着步态种类增加,会面临样本平衡与训练效率问题。
第三,语言到动作的评估带有较强主观性。对于"开心""地面很烫"之类的指令,论文主要通过观察机器人动作是否符合人类预期来评价,没有建立严格的语言—运动语义指标。
对你正在研究的"VLN直接生成足式机器人目标落足点"而言,SayTap 最有价值的启发,是它证明了中间表示的选择决定了语言模型能够控制到什么粒度。SayTap 选择接触时序,所以能控制步态类型和相位;你的方案若选择足端相对偏移、三维落足点或图像中的落足像素,则可以进一步控制空间位置和语义约束。但相应地,你也必须解决 SayTap 没有解决的问题:输出的落足点是否动力学可行、是否与接触时序一致,以及低层控制器是否能稳定跟踪。
从这个角度看,SayTap 可以作为你的方案的一个直接前置工作:它完成了"语言→何时落脚",而你的目标是在此基础上进一步完成"语言与视觉→何时、在哪里落脚"。