如果你正在做人形机器人的双足行走,这篇文章想解决的不是“怎么把 walking 调得更漂亮”,而是当它一迈步就飘、切支撑就乱、走几分钟后突然崩时,你应该先看什么、按什么顺序测、哪些地方先怀疑、哪些地方先不要乱改。对实机来说,walking 更像一次整机压力测试。真正放大问题的,通常不是少了某个更聪明的步态算法,而是接触切换、状态估计、执行器带宽、热降额、电源波动和保护逻辑在同一个闭环里一起出错。
这篇适合谁
- 你已经有下肢平台或整机样机,站立和基础关节控制没问题,但一进入迈步就不稳定。
- 你想把“能走几步的视频”推进到“能重复、能排错、能回归”的工程状态。
- 你现在最需要的不是完整 walking 教程,而是一条更稳的排障入口。
先别急着改的几件事
先别急着调步态,先确认接触信号是不是可信
很多人看到迈步不稳,第一反应就是改步长、步频、摆脚高度。但只要支撑脚判断本身不稳,后面所有参数都可能是在追着假问题跑。脚跟先落、脚尖轻扫地、落脚后几帧抖动,都会把“现在到底谁在支撑”这件事搞错。
先别把仿真当实机等价,先核对模型、rigging、时钟和接触观测
仿真能走,只能说明你在那套模型假设里能走。像 MuJoCo Menagerie 的 Unitree H1 模型更适合做结构和接口基线,不适合直接当动力学真值。Isaac Lab 也反复强调,joint order、初始姿态、action scale、decimation、contact sensor schema 只要有一项没对齐,行为就会异常。
先别追花哨全身动作,先把支撑相判断和恢复链路跑通
早期 walking 调试里,上半身更像扰动源,不像能力源。手臂摆动、躯干大幅补偿、头部动作这些东西都可能把本来就脆弱的下半身闭环拖乱。先把支撑相切换、提前落脚、补一步、减速和保护停机这些链路跑顺,再谈更自然的全身动作。
先别把摔倒都归给控制器,先看热、电、延迟和饱和
很多摔倒和“控制器不够先进”关系不大,而是母线电压下滑、关节温度上来后降额、驱动延迟变大、关节接近饱和、保护位频繁触发。要是不把这些信号一起看,你很容易把硬件退化误诊成步态策略错误。
测试梯子才是 walking 的主线
更稳的 walking 不是一上来整机全开,而是沿着一架测试梯子往上爬。前面的每一级都在回答一个更具体的问题:你的状态读得准不准,支撑脚判断稳不稳,摆脚能不能按时抬起来,低速短步能不能重复,退化时能不能可预测地收住。后面所有内容,包括信号检查、故障判断、恢复策略和验收,都应该服务于这条主线。
第 1 级:先把任务边界写死,别空谈“稳定走路”
先把地面、速度、转向范围、连续运行时间、允许扰动和失败后的保护动作写清楚。比如“环氧地坪,0.25 到 0.45 m/s,允许原地转向,不追楼梯,连续运行 6 分钟,轻微侧推后允许补一步恢复,失败后进入保护停机”。这一级的目标不是让机器人走起来,而是把后面所有测试限制在一个可解释的边界里。边界没写死,后面每一次失败都可能变成无穷无尽的口头争论。
第 2 级:把传感、执行器和时钟基线打牢
开始迈步前,先单独确认 IMU 偏置和姿态变化是否稳定,关键关节编码器零位能否重复复现,足底接触信号会不会受轻碰和线缆拖拽干扰,驱动器在低电量和热机状态下的带宽与扭矩上限变化有多大,控制线程、IMU、编码器和接触判断是不是共用同一时间基准。像 Unitree SDK2 这种底层接口包的价值,不只是能发命令,而是能提醒你先把 low-level 状态读全、把 high-level motion service 关干净、把控制回路边界说清楚。第 2 级没打牢,后面所有 walking 调试都会掺着基础设施噪声。
walking 先看哪些信号
别一出问题就先盯着某个步态参数。更有用的第一屏日志,应该至少同时包含这些量:IMU 姿态和角速度,用来判断机体有没有提前失衡;base velocity,用来看速度估计是不是在切支撑时突然跳;joint position 和 velocity,用来看零位、跟踪和相位是否一致;foot contact force,用来确认落脚时序和支撑切换;target vs actual,用来看命令和执行之间有没有明显脱节;母线电压和温度,用来判断是不是低电或热机退化;保护位、限流状态和饱和标志,用来看控制器是不是已经在“带病运行”。没有这组信号,walking 排障基本只能靠猜。
第 3 级:先把“支撑脚是谁”判断稳
这一级的目标不是迈出多漂亮的一步,而是让支撑相切换变得可解释。常见现象是脚刚碰地就突然重心飘掉,或者单脚支撑时 base velocity 和姿态误差一起跳。日志里要重点看 foot contact force、落脚前后几十毫秒的 target vs actual、IMU 角速度、base velocity,以及接触置信度有没有在几个周期里来回翻转。第一反应不要去改全局增益,也不要马上重写整套步态参数,先确认是不是脚跟先触地、接触迟滞太弱、时钟不同步,或者估计器还把失效的脚当可信支撑脚。
先怀疑什么,先不改什么
walking 一出问题,最该先怀疑的通常不是“这套步态思路不行”,而是更基础的五件事。第一,接触误判,尤其是脚尖扫地、脚跟先落或轻微打滑时的假切换。第二,时钟不同步,IMU、编码器、接触判断和控制线程只要错几毫秒,切支撑附近的日志就会看起来像随机故障。第三,零位或 rigging 错,Isaac Lab 文档反复强调 joint mismatch 会直接带来异常行为。第四,执行器限流或热降额,走一会儿才崩往往先查这里。第五,地面摩擦估计偏差,仿真里能过的动作到了实机可能立刻变成打滑。对应地,第一轮排障时先不改全局增益,先不大幅重写整套步态参数,也先不要急着加更复杂的上半身补偿。先把问题压回到可观测、可复现、可定位的层面。
第 4 级:哪一层出问题先查哪一层
当第 3 级能把支撑相切换跑得相对稳定后,再往上看分层问题。上层异常,先看速度和转向输入是不是过激,尤其是停走切换和指令阶跃。中层异常,先看步长、步宽、相位和落脚点是不是超出当前平台的安全窗口。下层异常,先看躯干姿态、摆脚轨迹和关节跟踪有没有饱和或明显滞后。BLF 这类框架把 contacts、estimators、IK、floating base estimator 分开,不是为了显得模块多,而是为了让你失败时能知道先去查哪一层,而不是把所有问题都扔给 walking controller。
第 5 级:把仿真当成暴露假设破裂点的地方
仿真不是用来证明“已经会走”,而是用来暴露“哪些假设一破就走不了”。第一类对照是模型和 rigging 对齐,确认关节表、初始姿态、限位和执行器映射是不是和实机一致。第二类对照是摩擦、延迟和接触误判敏感性,看摩擦下调、延迟上升、接触噪声增加后,最先坏掉的是切支撑、摆脚还是姿态环。第三类对照是扰动、热和电带来的退化,看轻推、低电、热机后的行为是平滑降级还是突然模式崩溃。MuJoCo Menagerie 适合做模型和接口基线,Isaac Lab 更适合做 contact sensor、扰动和部署链路对照,但两者都不能替代实机日志。
第 6 级:恢复策略先求可预测退化
先别急着改复杂恢复策略,先确认系统能不能可预测地退化。恢复优先级最好写死。第一优先级是先找支撑面,比如提前落脚、缩步、把支撑面积找回来。第二优先级是允许补一步,不要死守原参考轨迹。第三优先级是主动降速,尤其在接触可疑、母线电压下滑、温度过高或关节开始限流时。第四优先级才是保护停机、保护下蹲或人工接管。真正有工程价值的 walking,不是“永远不失误”,而是失误后能按同一套顺序收住,而不是每次倒法都不一样。
第 7 级:按梯子式测试,不要一上来整机全开
- 单关节和关节组跟踪,目标是确认限流、延迟、零位和温升基线。主要看 joint pos/vel、target vs actual、保护位和温度。没过这一关,不要碰整机步态。
- 吊架或减重下的原地重心转移和单脚承重,目标是确认支撑相切换和 base 姿态是否可解释。主要看 IMU、base velocity、foot contact force。没过这一关,不要碰连续迈步。
- 固定频率原地踏步,目标是确认摆脚抬起、落脚时序和接触迟滞。主要看 foot contact force、摆脚 target vs actual、IMU 角速度。没过这一关,不要碰速度提升。
- 低速短步直行,目标是验证短时间重复性。主要看 base velocity、姿态误差、关节饱和和母线电压。没过这一关,不要碰转向和扰动恢复。
- 停走切换、原地转向、轻推恢复,目标是看上层命令变化和恢复链路会不会打架。没过这一关,不要碰复杂场景。
- 低电量与热机测试,目标是确认系统只是性能退化,而不是模式崩溃。没过这一关,不要宣称 walking 已经稳定。
- 最后再上更复杂地面和视觉引导,把它们当附加变量,而不是基础 walking 的替代品。
测试梯子每一级的过关标准
每一级都要有明确的 pass / fail、观察窗口、停机条件和进入下一步的前提。单关节和关节组跟踪,至少在完整观察窗口内没有异常限流、没有明显 target vs actual 漂移、温升可解释,才算 pass。吊架或减重的重心转移和单脚承重,要求支撑相切换重复可复现,IMU 和 base velocity 在切换时不出现不可解释的尖峰,否则 fail。原地踏步阶段,要能连续若干周期不出现脚尖连续扫地、接触抖动或姿态误差累积,且停机条件要写死,比如接触连续翻转、角速度超阈值、单关节饱和持续超过设定窗口就停。低速短步直行阶段,进入下一步的前提不是“看起来像走起来了”,而是同一套参数重复多次结果一致。停走切换、转向和轻推恢复阶段,要求失败模式可预测,恢复优先级按预设触发,而不是每次靠运气。低电和热机阶段,如果表现从“能走”变成“直接崩”,就说明前面的梯子其实没真的爬稳。
walking 测试梯子速查表
| 级别 | 测试内容 | 这一层主要回答什么 | 至少该盯的信号 | 没过时先别做什么 |
|---|---|---|---|---|
| 1 | 单关节和关节组跟踪 | 限流、延迟、零位、温升基线是否清楚 | joint pos/vel、target vs actual、保护位、温度 | 先别上整机 walking |
| 2 | 吊架或减重下的原地重心转移和单脚承重 | 支撑相切换和 base 姿态是否可解释 | IMU、base velocity、foot contact force | 先别上连续迈步 |
| 3 | 固定频率原地踏步 | 摆脚抬起、落脚时序和接触迟滞是否稳定 | foot contact force、摆脚 target vs actual、IMU 角速度 | 先别急着提速度 |
| 4 | 低速短步直行 | 同一套参数能不能短时间重复复现 | base velocity、姿态误差、关节饱和、母线电压 | 先别碰转向和扰动恢复 |
| 5 | 停走切换、原地转向、轻推恢复 | 上层命令变化和恢复链路会不会打架 | IMU、base velocity、target vs actual、恢复触发顺序 | 先别碰复杂场景演示 |
| 6 | 低电量与热机测试 | 系统是在平滑退化,还是直接模式崩溃 | 母线电压、温度、限流状态、target vs actual | 先别宣称 walking 已稳定 |
| 7 | 更复杂地面和视觉引导 | 附加变量会不会把基础 walking 再次拖垮 | 接触切换、姿态误差、恢复链、任务成功率 | 先别把高级场景当基础能力证明 |
如果你现在在现场排障,不知道今天该停在哪一级,这张表应该比继续改一轮 gait 参数更有用。先看你卡在哪一层,再决定日志该怎么补、测试该怎么收、下一篇文章该接哪篇。
最容易翻车的地方,改成 4 张 failure signature 卡片
卡 1:足底接触误判
先看到什么: 机器人刚落脚就突然重心飞掉,或者明明没绊到也像被抽走支撑一样侧倒。
日志怎么确认: 重点看 foot contact force、IMU 角速度、base velocity,以及落脚前后几十毫秒的接触置信度有没有连续翻转。常见确认方式是看到脚跟先触地或脚尖轻扫地,但接触状态被过早切成“稳定支撑”。
第一动作不要改什么: 先不要改全局增益,也不要马上放大步宽或重写落脚规划。先查接触迟滞、时间同步、估计器是否还在信错脚。
卡 2:脚尖扫地 / 抬脚失败
先看到什么: 机器人迈步时像轻轻绊了一下,摆脚抬不起来,或者抬起来了但明显慢半拍。
日志怎么确认: 看摆脚 target vs actual、joint vel、膝踝关节有没有接近饱和,结合母线电压、温度和限流状态看是不是低电或热机后响应变慢。如果 base 姿态本身已经先漂了,也要回头看是不是支撑相错误把摆脚预算吃掉。
第一动作不要改什么: 先不要直接把摆脚高度和步长一把拉大,也不要急着加复杂地形感知。先确认执行器余量、抬脚时序和零位有没有问题。
卡 3:走一会儿才崩
先看到什么: 冷机前几十秒没事,过一会儿开始拖步、切支撑变慢、姿态误差变大,最后突然倒。
日志怎么确认: 把温度、母线电压、限流状态、关节饱和和 target vs actual 叠在一起看。常见模式是温度上来后带宽下降,或电压掉下去后同样命令再也抬不起脚。第 1 分钟和第 8 分钟看起来像两台不同的机器人。
第一动作不要改什么: 先不要把这类问题直接归给 walking controller,也不要只在冷机状态继续调参数。先把热机和低电回归纳入固定流程。
卡 4:上半身动作拖死下半身
先看到什么: 下半身单独测试还行,一加手臂摆动、躯干补偿或头部动作,步态就开始飘,转向和恢复尤其容易失控。
日志怎么确认: 看上半身动作引入后,IMU 姿态误差、base velocity 波动和下肢 target vs actual 是否同步恶化。如果下肢接触和执行器本来稳定,问题多半是额外自由度把原本脆弱的闭环推过了边界。
第一动作不要改什么: 先不要为了“更像人”继续叠更复杂的全身控制。先冻结部分上肢自由度,把 walking 基线重新压回简单场景。
现场 first-look 决策表:看到哪种症状,先压回哪一层
| 现场先看到的症状 | 第一怀疑层 | 先拉哪几路信号确认 | 今天先别做什么 |
|---|---|---|---|
| 一落脚就飘,像突然被抽走支撑 | 接触层 / 时序层 | foot contact force、接触置信度翻转、IMU 角速度、落脚前后 target vs actual | 先别急着改步长、步频和全局增益 |
| 摆脚抬不起来,偶发轻绊或脚尖扫地 | 执行层 / 支撑相判断 | 摆脚 target vs actual、joint vel、膝踝关节饱和、母线电压、温度 | 先别一把把摆脚高度和步长同时拉大 |
| 冷机能走,几分钟后开始拖步、切支撑变慢 | 热 / 电退化层 | 温度、限流状态、母线电压、关节饱和、target vs actual | 先别只在冷机状态继续调 walking 参数 |
| 停走切换、原地转向或轻推后最容易崩 | 上层命令 / 恢复链 | 速度输入阶跃、恢复触发顺序、IMU、base velocity、提前落脚或补一步触发记录 | 先别继续往复杂场景和更快速度上压 |
| 一加手臂摆动或躯干补偿就明显变差 | 自由度耦合 / 余量边界 | IMU 姿态误差、base velocity 波动、上肢动作引入后的下肢 target vs actual | 先别为了“更像人”再叠更复杂的全身动作 |
这张表的作用不是替代完整日志复盘,而是帮你在现场先把问题压回正确层级。先抓对第一怀疑层,比再盲调一轮 gait 参数值钱得多。
仿真、吊架、台架、短步和连续行走,各自到底证明了什么
walking 现场最常见的误判之一,不是参数没调对,而是把上一阶段的通过,误当成了下一阶段已经被证明。仿真能走,不等于实机支撑切换可信;吊架下能迈,不等于自由站立的恢复链已经成立;低速短步重复得不错,也不等于连续运行、热机和低电下仍然稳。真正能帮团队少走弯路的,不是把阶段叫得更完整,而是把每一层到底只证明了什么、还没证明什么写死。
| 当前通过的是哪一层 | 它真正只证明了什么 | 它还没有证明什么 | 进下一层前至少先稳住哪些信号 | 今天先别急着宣称什么 |
|---|---|---|---|---|
| 仿真里能走 | 模型、关节表、基础 observation / action 链至少能闭起来,当前假设下策略或控制器不会立刻发散 | 实机 rigging、接触观测、时钟同步、摩擦偏差、热 / 电退化都还没被证明 | joint order、初始姿态、action scale、contact schema、target vs actual 的基本对齐关系 | 先别说“walking 已经跑通,只差上机” |
| 吊架 / 减重下能迈步 | 摆脚时序、基础相位推进、部分支撑切换在降风险条件下可工作 | 自由站立时的重心管理、真实恢复链、落脚失真后的收口能力还没被证明 | IMU、base velocity、foot contact force、摆脚 target vs actual 在切支撑附近不能乱跳 | 先别说“已经具备自由 walking 能力” |
| 台架 / 单关节 / 关节组跟踪稳定 | 执行器余量、零位、延迟、温升和限流基线至少可解释 | 接触切换、浮动基姿态稳定、整机耦合和落脚误差传播还没被证明 | joint pos/vel、target vs actual、温度、母线电压、保护位和限流状态 | 先别把“驱动没问题”说成“整机 walking 只差调 gait” |
| 低速短步能重复 | 同一套参数在简单边界内已有初步重复性,支撑切换和基础姿态环开始可复现 | 停走切换、原地转向、轻推恢复、热机 / 低电连续退化还没被证明 | IMU、base velocity、foot contact force、姿态误差、关节饱和、母线电压 | 先别说“复杂场景只要再调一点” |
| 连续行走 5–10 分钟也能收住 | 热 / 电退化、恢复顺序、固定回归序列和运行时日志开始形成工程闭环 | 更复杂地面、视觉引导、多自由度上半身动作、真实任务负载还没被证明 | 温度、限流状态、母线电压、恢复触发顺序、失败后定位是否仍可压回固定责任层 | 先别把“基础 walking 稳了”说成“整机动态能力成熟” |
这张表真正想压住的是阶段误报。团队只要把上一层的通过,过早包装成下一层的能力,后面的排障就会越来越像在追幻觉。更稳的做法是:每过一层,只拿到那一层该拿的结论,然后明确写出下一层前还没被证明的东西。
工程验收 / 回归检查清单
- 同一套参数,冷启动连续 10 次,行为是否基本一致,而不是一次成功一次失败。
- 满电和低电时,系统是否只是性能退化,而不是直接从“能走”掉到“完全失稳”。
- 连续运行 5 到 10 分钟后,关键关节温度、限流状态、姿态误差和接触切换是否仍然可解释。
- 轻推、轻微打滑和不同地面摩擦下,系统是否进入预设恢复顺序,而不是随机倒法。
- 失败时,日志能不能明确指向接触误判、姿态误差累积、关节饱和、母线波动或保护触发点,而不是只留下“又摔了”。
- 测试梯子里每一级的 pass / fail 记录、观察窗口和停机条件是否真的被执行,而不是凭感觉跳级。
什么时候今天就不该继续测 walking
- 接触层还在乱翻: 如果同一只脚在落脚前后几十毫秒里反复从“可信支撑”跳回“可疑接触”,今天先别继续提速度,也别继续加步数。
- 状态层已经失真: 如果 base velocity、IMU 姿态或足底接触三者里有一项在切支撑附近经常突然跳变,而你还说不清是谁先坏,今天先停在日志和同步层,不要继续调 gait。
- 执行层开始退化: 如果 target vs actual 在热机或低电后明显拉开,或者关节已经频繁限流、饱和、降额,今天先别把问题继续推给控制器。
- 恢复链没有写死: 如果系统现在遇到失衡时到底是补一步、减速、提前落脚还是保护停机都还靠临场反应,今天先别继续做整机 walking 演示。
- 回归序列还不固定: 如果你每次测试都在换地面、换速度、换参数,结果又没有固定观察窗口,今天先别再追“这次看起来好一点”。
这 5 条里只要中了 2 条,今天更值得做的就不是“再试一次”,而是把 walking 压回接触、状态、执行或恢复链的更低一层。真正靠谱的 walking 进度,不是多跑了几趟,而是你知道今天为什么该停在这里。
最小 walking bring-up 验收清单
- 状态层: 你能说清楚 IMU、base velocity、足底接触和关节状态在切支撑前后各自由谁提供、延迟多大、失真时先坏哪一项。
- 执行层: 你已经在冷机、热机、低电三种状态下看过 target vs actual,不会只拿冷机理想状态当 walking 能力。
- 接触层: 你能复现并解释脚跟先落、脚尖轻扫、轻微打滑时的接触判断,不会把假接触直接喂给上层。
- 保护层: 你已经写死减速、补一步、提前落脚、保护停机的触发顺序,而不是摔了以后再猜系统刚才想做什么。
- 回归层: 你有固定的低速短步、停走切换、轻推恢复、低电和热机回归序列,不靠临场发挥选测试。
- 定位层: 每次失败后,你都能把问题先压回接触误判、状态跳变、执行器退化、母线波动或恢复链失序其中一类,而不是统一归因成“walking 还不稳”。
如果这 6 条里还有 2 条以上答不上来,就先别继续追速度、观感和复杂地形。那时候你缺的不是更大胆的步态参数,而是更硬的 bring-up 边界。
每次摔倒后,最小回放包里必须先留住什么
walking 现场另一个高频假进展,是“又跑一遍看看能不能复现”,结果下一次测试把上一次真正值钱的证据冲没了。真正让团队进步更快的,不是当天多试几趟,而是每次失败后都能留下一份最小回放包,让后来的人不用靠口头回忆猜刚才到底发生了什么。
| 这次失败后最少先留什么 | 为什么现在就得留 | 不留最容易发生什么误判 | 今天先别怎么复盘 |
|---|---|---|---|
| 失败前后 10–15 秒的统一时间轴日志 | 先把接触翻转、姿态漂移、执行滞后和保护触发放回同一时间坐标里 | 大家各看各的曲线,最后谁也说不清是谁先坏 | 先别只截一张局部曲线就下结论 |
| 当次测试的速度、步长、转向和模式切换命令 | 很多“控制器突然不稳”其实只是输入边界和上一轮不一样 | 把输入阶跃错当底层故障,或者把模式切换错当接触问题 | 先别只说“参数差不多”和“就按平时那样测” |
| 母线电压、温度、限流和饱和状态 | 要先分清这是 walking 策略问题,还是热 / 电退化把平台拖垮 | 冷机调出来的结果被误当成全天都成立的能力 | 先别只看姿态和脚底,不看执行器现实约束 |
| 一段正侧后至少两视角视频,或屏幕录像 + 状态面板 | 很多脚尖扫地、落脚拖沓、上身补偿过猛,只看曲线不够直观 | 把可见的动作失真误讲成抽象“系统偶发不稳” | 先别只保留剪成 3 秒的成功片段 |
| 地面、鞋底 / 足底、负载、线缆拖拽和吊架条件记录 | 现场边界一变,接触和恢复链就可能完全换问题 | 把场地或挂载变化误判成算法随机性 | 先别把“今天场地也差不多”当作等价条件 |
| 本次改了哪 1–2 个变量,以及没改什么 | 只有这样,下次回放才知道失败是新变量带来的,还是旧问题没收住 | 一次改太多后,连偶然成功都无法复用 | 先别一口气同时改 gait、接触迟滞、保护阈值和上身补偿 |
这张表真正想压住的,不是“复盘不够认真”,而是证据蒸发。walking 调试最怕的不是一次摔,而是摔完以后只剩下印象,没有能复跑、能对照、能交接的最小证据包。
执行建议
- 先把 IMU、base velocity、joint pos/vel、foot contact force、target vs actual、母线电压、温度、保护位和限流状态统一进同一套日志。
- 把低电量 walking 和热机后的 walking 固定纳入回归,不要只测冷机理想状态。
- 如果现在还在频繁摔,先降复杂度,再提速度。先收住接触切换、恢复优先级和测试梯子,再谈更自然的全身动作和更快的 walking。
一轮 walking 调试里,今天到底只该改哪一层变量
walking 现场第三种高频假进展,不是没测,而是一次把 gait、接触迟滞、保护阈值、上身补偿和速度边界一起动了。这样哪怕偶尔走成一次,你也不知道到底是哪一刀起作用。更稳的做法是,每一轮只让一种变量族拥有解释权,其余层先冻结。
| 现场现在最像哪种问题 | 今天只放开哪一层变量 | 这轮先冻结什么 | 为什么先这么锁 |
|---|---|---|---|
| 切支撑一乱就飘,先分不清是谁在支撑 | 接触判定阈值、迟滞、去抖窗口、时序对齐 | 步长、步频、摆臂、上身补偿、恢复策略 | 这时最缺的不是更大的动作自由度,而是先把“支撑脚是谁”这件事判准 |
| 摆脚抬不起来、脚尖扫地、偶发轻绊 | 摆脚轨迹高度、抬脚时序、单步 clearance 预算 | 接触迟滞、全局速度、转向、上层模式切换 | 先确认摆脚本身是不是够用,别把上层切换噪声一起混进来 |
| 冷机能走,热机或低电后开始拖步 | 热 / 电边界、限流阈值、降级触发条件、测试电量窗口 | gait 主参数、步态风格、上肢动作复杂度 | 先证明这是退化边界问题,不要在退化平台上误调 walking 主环 |
| 停走切换、原地转向、轻推恢复时最容易崩 | 恢复触发顺序、速度命令斜坡、模式切换守门条件 | 接触参数、摆脚几何、全局增益大改 | 这里首先要收的是命令链和恢复链,不是把所有底层参数再洗一遍 |
| 一加手臂摆动或躯干补偿就明显变差 | 自由度开放顺序、上身动作幅度、耦合预算 | 基础 walking 节奏、速度上限、复杂地形测试 | 先证明下半身基线能带住额外自由度,再谈“更像人”的动作 |
如果一轮测试里同时动了 3 类以上变量,这轮结果更适合记成scouting,不适合记成 validation。偶尔跑成一次也不要急着收工;先把变量数压回去,再做能复现的那一轮。
拿到回放包以后,20 分钟内先怎么开复盘
最小回放包留住以后,下一步也不要立刻开成长会。walking 摔倒复盘最容易变成每个模块负责人各自证明自己没错,最后讨论半天,只得到一句“综合问题”。更有效的做法,是先用 20 分钟把证据按时间线和责任层分出来:谁先偏、谁只是跟着坏、哪一层今天有资格改。
| 复盘时间段 | 这一段只回答什么 | 先看哪类证据 | 先不要让讨论跑去哪 |
|---|---|---|---|
| 0–3 分钟:先锁定失败窗口 | 确认真正的失稳起点,不把保护停机、倒地姿态或人工接管当根因 | 失败前后统一时间轴、IMU 角速度、base velocity、foot contact force、保护触发时间 | 先别按“最后看到什么坏了”直接定责 |
| 3–7 分钟:分出第一偏移量 | 判断最早偏离的是接触、状态估计、执行跟踪、命令输入,还是热 / 电边界 | 接触置信度翻转、target vs actual、速度命令阶跃、母线电压、温度和限流状态 | 先别让每个模块都各自解释一遍 |
| 7–12 分钟:确认变量纪律 | 确认本轮到底只改了哪 1–2 个变量,哪些条件必须视为不可比较 | 参数 diff、速度 / 步长 / 转向命令、地面和吊架条件、上身自由度开放记录 | 先别把 scouting 结果包装成 validation |
| 12–16 分钟:决定下一轮只放开哪一层 | 把下一轮测试压回一个变量族,让它真的有解释权 | 第一偏移层、上一次冻结项、回归序列、停机条件和观察窗口 | 先别同时改 gait、接触迟滞、恢复逻辑和上身补偿 |
| 16–20 分钟:写下停止条件 | 明确下一轮看到什么就停,不继续赌“也许再跑一次会好” | 接触连续翻转次数、角速度阈值、target vs actual 拉开窗口、限流 / 降额触发、恢复动作是否按顺序发生 | 先别把测试计划写成“再多试几次” |
这段复盘流程的重点,是把 walking 调试从“谁的模块背锅”拉回“下一轮谁有解释权”。如果 20 分钟后仍说不清第一偏移量和下一轮唯一变量族,就不要继续上机消耗时间;先把日志、时间同步或变量记录补齐。
读完这篇,下一步最该接哪几篇
- 先接《人形机器人状态估计怎么搭》,如果你现在最不确定的是 base velocity、姿态、接触和里程估计到底哪一层先漂。
- 再接《人形机器人全身控制系统怎么搭》,如果你已经能稳定读状态,但一到接触约束、任务优先级和力矩下发就开始打架。
- 补《人形机器人硬件瓶颈怎么定位》,如果你怀疑 walking 的根因根本不在 gait,而在执行器余量、母线压降、热降额和保护边界。
这三篇不是“延伸阅读凑链接”,而是 walking bring-up 最常见的三条真实分叉。先判断你卡在哪一层,再接下一篇,效率会高很多。
延伸阅读与参考来源
- Bipedal Locomotion Framework,适合参考 contacts、estimators、floating base estimator、IK 等模块拆分思路,以及近版本对运行时日志与可观测性的强化。
- MuJoCo Menagerie: Unitree H1,适合拿来做仿真模型、关节和场景假设的基线整理,但不应直接当最终动力学真值。
- Isaac Lab Showroom / H1 locomotion demo,适合做扰动、contact sensor、policy deployment 和场景化测试参照,尤其适合核对 rigging 与 observation schema。
- Unitree SDK2,适合参考实机接口、low-level / high-level 边界、状态读取链路和底层控制接入方式。
