十三个数字怎么让腿走起来:Jansen 连杆的几何

成长演进

具备清晰骨架、初步数学推导或工程验证,持续补充论据与实测。

ℹ数字花园

🌿 什么是数字花园与思想演进?

遵循 Maggie Appleton 与 Andy Matuschak 的常青笔记理念:这里不是按时间沉底的流水账,而是持续修剪打磨的知识生态。文章按成熟度经历:

  • 🌱 萌芽 (Seedling): 发散灵感、读书摘录、开放猜想
  • 🌿 演进 (Budding): 结构渐明、初步代码推导、积极修正
  • 🌳 常青 (Evergreen): 逻辑闭环、持久经得起检验的基石
  • 🔬 实验待证 (Speculative): 结合沙盒与仿真探针的理论探索
浏览全站数字花园与笔记全景 →

一条腿,一根曲柄#

Strandbeest 的腿叫 Jansen 连杆:曲柄加上七个运动刚体,用十个转动副连起来,只有一个自由度(据上面提到的论文的描述),转一圈曲柄,脚就走出一条封闭轨迹。它的 13 个长度是(单位未说明):

a=38.0, b=41.5, c=39.3, d=40.1, e=55.8, f=39.4, g=36.7, h=65.7, i=49.0, j=50.0, k=61.9, l=7.8, m=15.0a=38.0,\ b=41.5,\ c=39.3,\ d=40.1,\ e=55.8,\ f=39.4,\ g=36.7,\ h=65.7,\ i=49.0,\ j=50.0,\ k=61.9,\ l=7.8,\ m=15.0

其中 mm 是曲柄。这些数字我对照了 Wikipedia 的 Jansen’s linkage 条目,但该条目没有写出”哪根杆接哪两个关节”。拓扑来自一篇 arXiv 论文(2606.22129,关于 Jansen 连杆的耐久性多目标优化)。我没读全文;另外我独立做了一次暴力搜索,看哪种接法能产生”平底”的脚轨迹,这一种也在候选里。

用两圆交点求每个关节#

把固定铰 GG 放在原点,曲柄铰在 (a,l)(a, l),曲柄端点 CC 随角度 θ\theta 转动。其余关节都是”到两个已知点的距离已知”,于是每个都是两个圆的交点:

K=circ(G,b; C,j)L=circ(G,d; K,e)M=circ(G,c; C,k)N=circ(L,f; M,g)F=circ(M,i; N,h)\begin{aligned} K &= \mathrm{circ}(G,b;\ C,j) & L &= \mathrm{circ}(G,d;\ K,e) \\ M &= \mathrm{circ}(G,c;\ C,k) & N &= \mathrm{circ}(L,f;\ M,g) \\ F &= \mathrm{circ}(M,i;\ N,h) \end{aligned}

FF 是脚。两圆有两个交点,选哪个决定装配分支;我取的符号让脚始终是整条腿的最低点。代码里每个关节只是一条数据:

{ id: "K", centers: ["G", "C"], radii: ["b", "j"], side: 1 }

求解器按顺序走一遍就行,所以 GA 改的只是长度,拓扑不用动。

Jansen 连杆的脚轨迹
Jansen 连杆的脚轨迹

为什么是 D 形#

脚的轨迹有一段几乎是直线,落在地面上;回程抬起来,划一道弧。在我的实现里:

  • 着地段占一圈的约 43%
  • 抬腿高度约为轨迹宽度的三分之一(22.5 对 67.9)

着地段平,意味着脚踩着地的时候身体不会上下颠,这就是它走得稳的原因。我用一个测试把这件事钉住:脚轨迹必须有平的着地段,而且抬腿高度、连续性都在范围内。

证据等级:E2。 这三个数字后来和一份公开发表的实验台数据对过。Pop、Dolga 与 Pop 在 2014 年的 Applied Mechanics and Materials 上发表了他们自己做的小腿实验台轨迹(CCD 相机拍的足端轨迹),我把它数字化后和本仓库的解析运动学逐项比较:

文献(Pop 2014)本仓库的解析运动学相对误差
步幅57.1 mm57.081 mm0.033 %
抬腿高度22.5 mm22.457 mm0.191 %
占空比(着地段占比)0.430.4330.77 %
足端轨迹宽度约 65.55 mm(数字化得到)67.899 mm3.46 %

着地段的逐点距离在 0.00–0.54 mm 之间,低于那篇论文自身的数字化不确定度(±0.80 mm,300 dpi 栅格和线宽造成)。所以”脚轨迹是平的、抬腿约 22.5”不只是我自己算得自洽,它与一份公开文献相符——这就是 E2 的含义。文献出处:Applied Mechanics and Materials 658: 684–689。轨迹整体形状与该文献的数字化轨迹的归一化平均距离是 0.0295(轨迹宽度的 2.95 %)。

一条腿不够,要多条错开#

一条腿有半圈在空中,身体撑不住。Strandbeest 把很多条腿装在同一根曲轴上,相位错开。在代码里,nn 条腿就是同一条轨迹的 nn 个时间平移:

const feet = multiLegFeet(spec, evenPhases(8), 120);

8 条腿相位错开行走(示意)
8 条腿相位错开行走(示意)

图是示意:腿画成了髋到脚的直线,着地的脚(橙色)相对地面不动,身体在上面滑过去。我检查了一件事:12 条腿(每侧 6 条)时,每个时刻都至少有脚着地;支撑稳定的时间占比超过九成(这是风速目标里的硬约束)。只有 1 条腿时就不行——它半圈时间都在空中。

小结#

  • 13 个长度加一个拓扑,就是一条完整的腿;关节求解只要两圆交点。
  • D 形轨迹是连杆比例的结果,不是巧合;它与 2014 年公开发表的实验台轨迹相符(E2)。
  • 想自己拖着滑块玩,或者让它自己演化,代码在 strandbeest-evolution,也可以直接开在线演示(浏览器里跑,不需要装任何东西)。

下一篇:我用遗传算法从随机长度出发,看能不能重新演化出它。

文章概念网络

从章节进入正文概念。实线表示所属层级,虚线连接跨章节重复出现的概念,不代表因果关系。

21 / 21 个节点 · 正文标记术语与关键词概念

十三个数字怎么让腿走起来:Jansen 连杆的几何

十三个数字怎么让腿走起来:Jansen 连杆的几何

回到原文 ↗
BIBTEX

引用本文

@article{2026-10-04-strandbeest-leg-linkage,
  author  = {枫语},
  title   = {十三个数字怎么让腿走起来:Jansen 连杆的几何},
  journal = {枫语},
  year    = {2026},
  month   = {oct},
  url     = {https://meiluosi.github.io/posts/2026-10-04-strandbeest-leg-linkage/}
}
🌐

本篇知识星丛与滑动侧栈

十三个数字怎么让腿走起来:Jansen 连杆的几何 当前主轴

搜索

正在载入索引…