夜雨聆风学习资料网

ARTICLE · 1136854

K1 源码精读:弹簧脚趾,如何让仿真人形少耗能?

K1 源码精读:弹簧脚趾,如何让仿真人形少耗能?

给 ROBOTIS K1 加上被动弹簧式脚趾,再用人类步态模仿和学来的关节放松,在 MuJoCo 里走和跑。仓库昨天新建,只做了仿真。

K1 源码精读:弹簧脚趾,如何让仿真人形少耗能?

一句话概括 Takeyuki-K 给开源人形 K1 加了一对被动弹簧式脚趾,用人类步态模仿和学来的关节放松,在 MuJoCo 里把走和跑放进电机能给出的力矩范围。这篇对照的是仓库 README、步态报告,以及 Duarte 与 Watanabe 2016 年的公开步态数据。

论文|Human gait database for biomechanics and motor control research 作者 / 机构|Marcos Duarte、Renato Naville Watanabe,巴西 ABC 联邦大学 论文地址|https://doi.org/10.6084/m9.figshare.12937828[1]代码地址|https://github.com/Takeyuki-K/k1-mp-ecowalk-public[2]阅读基线|步态数据 2016 年论文与 Figshare;仓库创建于 2026-10-06,阅读于 2026-10-07

图注:仓库里的三路对比是 media/comparison_3way.gif,公众号封面需要静态图,所以这里用一张只标仓库名的临时封面。动画本身没有改成另一篇论文的架构图。

阅读说明 本文区分三类信息:论文报告、源码确认、作者分析。仓库写明全部是 MuJoCo 仿真,没有上真机。文中的速度和刹车距离都来自仓库报告,不是本文实测。

01 / 先看结论

  • 解决了什么: 开源人形 K1 的脚是平的。人走路时脚趾会弯,蹬地的最后一段力靠这个弯出来。仿真里如果脚趾是死的,步态要么硬顶电机,要么看起来不像人。
  • 关键改变是什么: 脚趾做成被动弹簧,不另加一个主动电机。参考轨迹来自人类步态,策略再学一层「该放松的时候放松」。
  • 使用边界是什么: 只在 MuJoCo 里验证。仓库写明与 ROBOTIS 没有从属或背书关系。v5 的跑动速度到 4.9 m/s,是仿真里电机力矩-速度包络内的数。

适合谁读? 想改开源人形脚部、又暂时没有真机的人。

如果只看一处源码: 先看 k1_mp_gait55/REPORT_GAIT55.md,再顺着 README 里的 v5 与 v5.5 入口看步态切换。三路对比动画在 media/comparison_3way.gif:ROBOTIS 的 walk_default、加上脚趾和模仿、再加上放松。

02 / 问题背景

K1 是 ROBOTIS 的开源人形。公开的步行策略能走,脚和地面的接触却是一整块脚掌。人的步态不是这样。Duarte 与 Watanabe 2016 年把 42 个健康人的地面反作用力和关节运动放成数据库,脚趾在蹬伸末期是参与发力的。仿真里把这段省掉,电机就得在不该发力的角度上硬补。

现有做法通常有两条。一条是直接重放厂家步态,稳,但脚的形状改不了。另一条是上真机调参,K1 的使用者不一定有机器。这个仓库走第三条:先在仿真里把脚趾变成弹簧,再让策略模仿人的轨迹,并且允许关节在该松的时候被反向驱动。

能不能在不给脚趾加电机的前提下,让仿真里的 K1 用更接近人的方式走和跑,同时力矩还留在电机模型的包络里?

03 / 方法拆解

主线是:人类步态数据 → 参考轨迹 → 带弹簧脚趾的 K1 模型 → 模仿学习加放松 → MuJoCo 里走、跑、转弯、刹车。

设计一是被动弹簧脚趾,仓库称为 MP 关节。它不是一个新的舵机。脚趾弯曲靠弹簧和地面反力,电机不直接驱动这一节。README 写,实现由 Takeyuki-K 定方向,代码在 Claude 协助下生成。这是作者自己的说明,不是第三方审计。

设计二是模仿之后再学放松。参考轨迹来自 Duarte 与 Watanabe 的数据,许可证是 CC BY 4.0。CMU 的动捕文件另作署名。三路对比把「只放厂家步态」「加上脚趾和模仿」「再加上放松」分开。放松的意思是:关节可以在冲击下被反向驱动,不必全程顶住力矩上限。

仓库没有把步态数据库的公式重写一遍。需要记住的三个量是:参考轨迹的关节角,来自人类数据;弹簧脚趾的形变,由接触力决定;电机力矩,被限制在 K1 的力矩-速度包络里。超速时关节仍可能被冲击反向驱动,README 把这句话写在 v5 的说明里。

04 / 源码对照

阅读范围是 2026-10-07 能克隆到的公开仓库,创建时间是 2026-10-06。调用链从 README 进报告,再进步态目录:

README.md  → k1_mp_gait55/REPORT_GAIT55.md  → 步态与放松策略  → MuJoCo 仿真对比

默认行为是仿真,不是真机。当前实验选择是 v5.5:走路和跑步时都能转弯,偏航角速度命令到 1 rad/s,还有原地转。跑步时有速度调节,条件写成 v·|ω| ≤ 3 m/s²,身体向弯内倾斜,测量倾斜约等于 atan(vω/g)。急刹从 4.5 m/s 到站定,用了 4.4 秒、6.2 米;对照是 5.9 秒、8.7 米。这些数在 README 的 v5.5 小节,并指向 k1_mp_gait55/REPORT_GAIT55.md。

另一条容易看错的是 v5 的 4.9 m/s。那是前脚掌跑、并且力矩留在模型包络内的仿真速度,不是街头测出来的。仓库把 “not tested on a real robot” 写在同一段。

参数同名不代表同一件事。4.9 m/s 是跑,1 rad/s 是转弯角速度,4.4 秒是一次刹车。三者都只在仿真报告里。

05 / 实验配置

  • 数据来源: Duarte 与 Watanabe 的人类步态数据库,外加 CMU 动捕。仓库把派生轨迹标成 CC BY 4.0。
  • 模型: ROBOTIS K1 的开源模型,加上作者做的弹簧脚趾。仿真器是 MuJoCo。
  • 对照: 三路。厂家 walk_default,MP 加模仿,MP 加模仿再加放松。
  • 优化对象: 模仿人类轨迹,以及关节放松。脚趾弹簧本身是被动的。
  • 硬件: 未在仓库说明里看到真机实验。软件版本以仓库当前 README 为准。
  • 主入口:README.md 与 k1_mp_gait55/REPORT_GAIT55.md。

最影响可比性的是:所有速度都在仿真和电机模型包络里。换一台真机,弹簧刚度和电机曲线都会变。

06 / 结果怎么看

论文报告

Duarte 与 Watanabe 的数据库本身不包含 K1。它提供的是 42 个健康人的步态。K1 上的数字不要写成这篇论文的结果。

仓库报告

v5:仿真中前脚掌跑到 4.9 m/s,力矩留在模型包络内。来源是 README 的 v5 小节。

v5.5:转弯、速度调节和急刹。4.5 m/s 刹停的对照是 4.4 秒 / 6.2 米对 5.9 秒 / 8.7 米。来源是 README 指向的 REPORT_GAIT55.md。

本文验证

验证状态:已检查 README 和报告入口,未运行 MuJoCo。

  • 已确认: 仓库公开、许可证分开写了、作者声明没有真机测试。
  • 未确认: 三路对比 GIF 里的功率曲线,我没有逐帧重算。
  • 与论文不同的条件: 步态数据是真人平面行走,K1 实验是仿真人形。

这些速度只说明仿真里的策略没有把电机模型打穿。不能据此说 K1 真机能跑到 4.9 m/s。

07 / 论文与代码

已对应: 人类步态作为参考轨迹。数据论文和 Figshare 的 DOI 写在 README 徽章里,仓库用的是派生轨迹,不是把原始实验室文件原样塞进训练。

实现补充: 被动弹簧脚趾、放松、走跑切换、转弯时的身体倾斜,都是仓库加上的,不在 2016 年那篇步态论文里。

配置选择: 三路对比是实验选择。厂家步态仍然留着,作为基线。这不是缺陷。

待核实: 弹簧刚度的具体数值、训练步数和学习率,README 开头没有展开。要下结论得进 k1_mp_gait55 目录里的配置,我这次没有把每个 yaml 都跑一遍。

08 / 复现路线

先看许可证。项目代码是 Apache-2.0,人类步态派生轨迹是 CC BY 4.0,引用时把 Duarte 与 Watanabe 写上。

最小样例是把 README 里的三路对比 GIF 和 REPORT_GAIT55.md 对上:有没有厂家基线、有没有 MP、有没有放松。成功标志是报告里的速度和刹车距离能在仿真日志里找到同名指标。

最容易踩的坑是把仿真速度当成真机速度。排查入口就是 README 里那句 “Simulation only, not tested on a real robot”。

09 / 判断

值得留下的是把脚趾做成被动弹簧,而不是再加一个电机。人的步态数据只负责参考,放松负责别让电机全程较劲。这个拆法在仿真里说得通。

限制也很明确。仓库没有真机,实现过程有模型辅助生成,作者已经写明。4.9 m/s 和刹车距离都还停在 MuJoCo。

值得接着看的是弹簧刚度换一组之后,放松策略还保不保得住那个力矩包络。

一句话:这个仓库把「脚趾弯一下」做成了仿真里的被动关节。能不能走到真 K1 上,仓库自己没有给证据。

参考资料

[1] 步态数据 Human gait database for biomechanics and motor control research https://doi.org/10.6084/m9.figshare.12937828[3]

[2] 代码 Takeyuki-K/k1-mp-ecowalk-public https://github.com/Takeyuki-K/k1-mp-ecowalk-public[4]

[3] 报告 k1_mp_gait55/REPORT_GAIT55.md 以 2026-10-07 阅读时仓库默认分支为准

[4] 对比 media/comparison_3way.gif � 2026-10-07 阅读时仓库默认分支为准

[4] 对比 media/comparison_3way.gif

引用链接

[1]https://doi.org/10.6084/m9.figshare.12937828

[2]https://github.com/Takeyuki-K/k1-mp-ecowalk-public

[3]https://doi.org/10.6084/m9.figshare.12937828

[4]https://github.com/Takeyuki-K/k1-mp-ecowalk-public

相关学习资料