人形,太人形的:从具身智能到 LoopString 的三个世界
人形,太人形的
——一篇献给自由精神的机器人长文,兼 LoopString 计划开题文稿
机器人最值得像人的地方,未必是它的脸;最需要理解的世界,也未必先出现在远方。它可能就在手指与一根绳子之间。
本文从一个看似朴素的问题开始:什么是人形机器人?随后沿着身体、知识与物理实验的线索,走向一个具体项目:让机器人挑战世界冠军级的悠悠球自由花式表演。我们将这项研究命名为 LoopString。Loop 是回旋,也是循环;String 是绳索,也是字符串。一个名字,同时牵住物理世界的线与数字世界的语言。
这篇文章的起点,来自 Mehrdad H. M. Farimani(下文简称 MF)的文章 What Is a Humanoid Robot, and at What Point Does It Stop Being One?。他的可贵之处,是把“像不像人”转化为“类人形态究竟贡献了什么”。本文保留这一问题意识,结合机器人学教材、控制与仿真文献,进一步提出我们的理解与实验方案。对 MF 的启发,谨致谢意。[1]
这里所说的世界冠军级,是项目愿景,需要由指定赛制、公开任务和独立评估逐步定义。本文是一份开题文稿:文献中已经成立的结果、由物理模型推出的判断、我们准备检验的设计假设,承担不同的证据责任。我们希望它既能让公众读懂,也能让同行据此指出下一次实验应该怎样做。
导读:从人的轮廓,走向可检验的问题
全文分为六篇。第一篇讨论 humanoid 的边界;第二篇借波普尔的三个世界澄清身体、体验与知识的关系;第三篇给出图书馆与机器人学的理论地图;第四篇从悠悠球的力学进入 MuJoCo 和柔性体仿真;第五篇提出 LoopString 的控制、数据与硬件路线;第六篇给出评测、里程碑和启动方法。
公众读者可以先读第一、二篇与终章,再回到感兴趣的技术部分。准备动手的读者,可以把第三、四篇当作学习路线,把第五、六篇当作实验设计的初稿。公式不承担装饰性的权威:每一个式子,都应回答一个实际问题——哪里能到达,什么力矩足够,哪种状态看不见,什么结果才算成功。
精准与否,就在成败之间。这句话在机器人领域尤其具体:坐标系少转换一次,机械臂便会朝错误的方向运动;把指令发送频率当成控制带宽,设计便可能在第一次快速接触时暴露问题;把“会模拟”误认为“已验证”,一个漂亮的训练曲线就可能离现实很远。
准确不是热爱的反面。它是让热爱能够进入现实的方式。
第一篇 人形的价值:让每一项相似承担理由
1. 尼采的手术刀,为什么可以借给机器人学
1878 年,尼采出版《人性的,太人性的》。借用这部作品的标题,并不是要把机器人学变成尼采思想的注脚,而是借用一种提问的勇气:那些看似天然、崇高、无需说明的形式,是否也有可以追问的来历?[2]
今天,我们把两条腿、两只手、一颗头和十根手指投射到机器上,再围绕这副轮廓讲述家庭助手、工厂工人和通用机器人的未来。人形具有极强的叙事力量。即使观众不懂减速器、状态估计和全身控制,也能立刻认出:“它像我们。”
但认出轮廓,不等于认出能力。人形可能是适应环境的好办法,也可能成为遮蔽工程问题的捷径。肩膀为什么在这里?手指为什么是这个数量?为什么必须站立?为什么需要一张脸?如果回答只是“因为人就是这样”,设计还没有完成。
人形,多少才算太人形了? 这个问题的目的,不是从机器身上删掉人的形状,而是让每一处相似都说明自己的用途。能从环境兼容、数据迁移、任务覆盖或交互效果中获得解释的相似,值得保留;只增加维护成本与错误期待的相似,值得重新设计。
这也是对工程创造力的解放。人类的骨骼、肌腱和皮肤是在演化过程中形成的,受生长、自愈、代谢和繁殖等条件约束。机器则受制造、公差、供电、散热、维修和成本约束。我们可以学习生物的解决方案,却不必连同它解决问题时承受的所有限制一起复制。
2. 先分清四个经常被混用的词
“人形”“拟人”“具身”和“通用”互有关联,却没有任何两个可以直接画等号。
人形,humanoid,首先描述整体身体组织与人的相似性。 躯干、肢体、头部以及相互的位置关系,构成通常语境中的形态依据。现实用法具有宽窄差异:研究机构、产业报告和公众报道,对轮式上半身机器人是否归入人形的处理并不完全相同。
拟人,anthropomorphic,范围更广。 一条机械臂可以是拟人机械臂,一张显示表情的屏幕也可以具有拟人交互特征,但它们不因此自动成为完整的人形机器人。拟人性还包括行为与语言风格,未必依赖完整的人类轮廓。
具身,embodied,强调智能系统与身体、环境的耦合。 一台轮式机器人、一只机械手、一条软体机械臂,都可以形成感知—行动闭环。是否有双腿,不是具身智能的唯一入口;是否拥有主观体验,也不是“具身”这个工程术语的同义定义。
通用,general-purpose,描述能力覆盖和迁移范围。 一副看起来完整的人形身体,可能只会执行极少数预编排动作;一台没有腿的移动操作机器人,却可能在多个任务上更可靠。通用性需要由任务分布、环境变化和适应成本来衡量。
这一组区别决定了文章的讨论边界:我们关心的是人形为何可能成为具身智能的有效载体,而不是把“长得像人”直接升级为“像人一样智能”,再把智能升级为意识。
3. 世界为什么给了人形一张入场券
MF 提出的第一条理由最为朴素:大量既有环境已经围绕人的身体尺度组织起来。门把手处于可触及的高度,楼梯踏面容纳脚掌,工具握柄适合手掌,台面、货架和车厢留下了人的工作空间。[1]
这里的“人”不是一个身高固定为 170 厘米的标准模型。现实中存在儿童、老人、不同身高与活动能力的人,也存在无障碍设计尚未充分覆盖的空间。工程上更准确的说法,是参考目标使用场景中的人体尺度分布、可达范围与交互习惯。
如果任务要求机器人进入大量已建成的空间,保持类人的高度、臂展和工具接口,就可能减少改造环境的代价。人形因此有一种系统层面的经济性:它把兼容成本的一部分集中承担在机器身上,换取跨环境的适用范围。
但成本也可以分配给环境。调整一座工位、增设夹具,或者把楼梯改成坡道,有时比维护复杂双足系统更划算。因此,比较人形与非人形方案时,不能只比较机器人本体价格;应比较机器人、环境改造、运行维护与人工介入的总成本。
轮子在平坦地面通常更节能,固定机械臂在重复工序上往往更快、更稳。双足的优势是离散落脚、跨越一定障碍和调整支撑位置的潜力,而不是在任何地形中都优越。楼梯、梯子和狭窄通道也各有约束:会走楼梯的机器人,不因此自动会爬梯子。
同样,“双脚是同体型下最小且最稳定的占地方案”过于绝对。稳定性取决于重心、支撑区域、摩擦、惯量、控制能力和允许的动态运动。双足可以占据较小的站立空间,却可能需要迈步才能应对扰动。我们应该比较任务中的可行支撑策略,而不是只比较宣传图中的脚印。
4. 人类数据为何宝贵,又为何不能直接下载进机器人
第二条理由来自学习。人类积累了大量操作经验:握住杯子、拧开瓶盖、穿针引线、整理线缆。视频、动作捕捉与遥操作能够把其中一部分转化为机器可用的数据。身体越相似,某些运动映射就越直接。
但相似不会消除具身差异。人的手腕可以快速调整,机器人的关节可能有明显减速器摩擦;人手能靠皮肤形变获得稳定接触,硬质夹爪却会滑脱;人的视线可以主动避开遮挡,固定摄像头可能只能看见背面。
视频通常记录了“事情怎样发生”,却没有完整记录关节力矩、接触压力、材料参数和失败边界。看到高手把悠悠球抛起来,不等于知道绳子当时的张力,也不等于获得机器手需要发送的指令。
因此,学习人类数据至少包含三个不同问题:识别任务意图,恢复物体与身体的运动,再求解本机器能执行的动作。第三步是动作重定向,需要服从机器的关节限位、速度、力矩和碰撞条件。直接复制人的关节角,只在很强的前提下才有意义。
人形的真实优势,是可能降低这段“翻译”的难度。它不是把互联网视频变成现成控制程序的许可证。一个明确的研究问题是:在同样的数据量、训练预算和测试任务上,类人构型是否比其他构型具有更高的学习效率?这可以通过实验回答。
5. 复杂性必须挣回自己的成本
第三条理由,是任务覆盖可能证明复杂性的合理。搬运一个零件,未必值得动用一台复杂机器;搬运、找工具、装配、整理现场的完整流程,则可能改变成本结构。系统的价值有时存在于任务之间的连接处。
可是,人体能完成广泛任务,并不能推出已经造出的所有人形机器人也拥有同样能力。人体是演化出的参照,不是“我们已经建造的最强通用机器”。如果引用人的能力来论证人形方案,必须承认论证仍跨着身体实现、感知、控制和学习的鸿沟。
复杂性还有可靠性的账。假设一条流程含有一百次关键操作,每次成功概率都是 99%,并且暂按独立事件估算,那么整条流程不出错的概率只有约 36.6%。这个计算并非真实系统的完整模型,却足以提醒我们:单动作的漂亮成功率,可能支撑不起连续工作。
通用机器人需要的因而不只是“会很多招”,还包括识别失败、恢复状态、请求协助与继续工作的能力。对 LoopString 来说,一个机器人会做二十个孤立花式,与它能稳定完成三分钟表演,是两种不同的技术成就。
可以用一个工作性的账本思考构型价值:任务覆盖带来的收益,减去机构、计算、维护、能耗和恢复成本。这个账本不必被包装成普适公式,因为权重随应用而变;它应当把设计争论拉回同一个场景,而不是让双方分别挑选最有利的展示视频。
6. 外观是一份需要兑现的承诺
第四条理由是交互。目光、手势、身体朝向与语音,使人能够利用熟悉的线索与机器协作。机器人转头看向某个工位,可以比手机弹窗更直接地传递行动意图。
MF 提醒我们,外观也抬高了期待:眼睛让人期待注意力,五指让人期待灵巧,一张脸让人期待社交理解。[1] 这些期待不总是准确,却会影响使用者怎样靠近机器、何时信任它,以及在什么情况下误解它。
可读性因此比逼真度更重要。注视方向可以明确显示系统当前关注的对象,灯光可以提示暂停或等待,动作提前量可以让人理解它准备伸手。但这些信号必须与系统状态一致,否则“自然”就可能变成误导。
这里也不能把所有期待都归结为“恐怖谷”。恐怖谷是一类关于近似人类外观与亲近感关系的假说,能力期待、动作可预测性和实际协作体验则是更广泛的问题。没有逼真皮肤的机器,同样可能因为夸大的表现承诺而失去信任。
对于 LoopString,表演性尤其值得认真看待。观众会从动作节奏中读出意图,甚至读出情绪。我们可以研究这种体验怎样产生,却不应把观众感受到的“有灵性”,直接当成机器人拥有内在感受的证据。
7. 身体可能参与形成智能
第五条理由更有研究意味:身体并非只负责执行已经完成的思考,它还影响系统能够获得什么经验、观察什么变化、学习什么规律。
Brooks 对直接感知—行动耦合的强调,以及 Varela、Thompson、Rosch 对具身认知的讨论,都推动我们重新理解身体与智能的关系。[3][4] 这里有多种并不完全一致的理论,不能简化为一句“只要有身体就有智能”。
身体会改变问题本身。柔软指尖可以通过形变分配接触力,弹性结构可以暂存能量,合适的机构可以让运动更容易稳定。某些困难由材料和结构承担后,控制器不必用更复杂的算法逐一补偿。这是形态参与计算的一个朴素理解。
但也不能把“身体”只理解为人类身体。四足、轮式、软体和水下机器人,都可能通过自身行动获得独特的可学习经验。人形只是其中一个有力候选,而不是具身智能唯一合法的形状。
关于人体演化,直立、手部操作、工具、社会协作与认知之间的关系同样复杂。我们可以说它们相互影响,却不宜把“直立解放双手,双手制造工具,工具产生智能”写成已经证明的单线因果链。
对工程而言,更有生产力的问题是:增加哪一种感知或动作能力,会扩大系统可学到的规律范围?一块触觉传感器、一个可回驱关节,或者一个主动改变视点的动作,有时比更像人的面部更重要。
8. 人形的边界,是讨论工具,不是自然界的国境线
MF 建议从完整系统及其功能价值出发理解人形:类人形态应实质性地促进环境兼容、人类数据学习、广泛物理任务和自然交互。[1] 这是一项有用的工作性主张,不是已经统一行业用法的强制标准。
一台轮式上半身机器人,在某些语境中仍会被称作轮式人形。称它为拟人化移动操作平台,也可能更准确地传达其能力边界。命名应帮助读者判断它能做什么,而不是承担排除异己的任务。
平行夹爪通常以一个开合自由度控制两根手指;“两根手指”不等于“两个主动自由度”。它在操作某些工具时受到限制,却可能在特定工序中更可靠。少几根手指,不必然意味着整体系统处于单一能力阶梯的低端。
机械臂也并非“不是具身系统”。带有传感、执行与反馈的机械臂,完全可以构成具身系统;它通常不被叫作完整人形,是因为其整体身体组织不同。把“完整人形”和“完整具身系统”分开,能避免概念上的误伤。
相应地,非人特征可以合理存在。机器人可以增加后置摄像头、激光雷达和不同的关节行程。Boston Dynamics 展示的电动 Atlas,包含不符合人体解剖约束的动作方式;它说明我们不必把机器人锁在人类关节的活动范围内。后空翻本身却不是“人类做不到”的动作,这一点也需要说清。
第一篇可以用一句话收束:当人形特征不再为目标任务贡献重要价值,“人形”就可能只剩外观描述;而一个真正有价值的机器人,并不因为离人的轮廓远了一点,就离智能远了一点。
第二篇 三个世界:让绳索、体验与知识各归其位
9. 波普尔谈的并不是物理、虚拟、元宇宙
波普尔在《客观知识》及 1978 年的 Tanner 讲座 Three Worlds 中,讨论了三个彼此联系的领域:物理对象与过程的世界,心理状态与主观经验的世界,以及思想的客观内容所构成的世界。[5][6]
世界一包括石头、星辰、植物、动物,也包括电磁辐射、纸张、服务器和机器人的电流。它不限于肉眼看得见的物体。物理实现意义上的数字计算,同样发生在这个世界。
世界二包括知觉、痛苦、愉快、意图、思考和体验。悠悠球选手感到绳子偏了,观众在节奏变化时紧张起来,研究者因为一次异常结果而困惑,这些都可以放在这一维度讨论。
世界三包括能够被公开讨论、批评和发展的思想内容:问题、理论、论证、数学关系和艺术作品等。它不仅是“正确知识”的集合,错误理论与尚未解决的问题也能成为其中的对象。
这是一套哲学立场,不是机器人学实验已经证明的自然分类。本文借它帮助分清问题:我们究竟在谈材料的运动、人的体验,还是一种可以交流和检验的解释?这种区分,比把所有东西统称为“信息”更有用。
10. 一本书为什么可以同时与两个世界有关
图书馆中的一本书,作为纸张和油墨属于世界一;它陈述的定理与论证,作为可理解的内容属于世界三。读者读懂它、为之惊讶或提出异议,则涉及世界二。载体、内容和理解行为,不能混成同一件事。
代码也一样。硬盘上的电荷状态、内存中的位模式、处理器的开关,都有物理实现;程序作为可以被解释、修改、证明或批评的规则结构,则可以从世界三的角度讨论。不能因为一段代码叫作“数字”,就宣布它离开了物理世界。
神经网络权重也需要这样的谨慎。一个权重文件并不自动等于可理解的科学理论。它可以承载经过训练获得的功能结构,但其中哪些规律被保留、怎样在新场景中失效,还需要实验分析。把不可读的参数称作“客观知识”,必须说明是在何种意义上使用这个词。
波普尔强调思想产物具有相对自主性:我们创造一个问题系统后,其中可能产生最初没有想到的后果。自然数的概念可以由人提出,关于数的某些关系却不是想怎样规定就怎样规定。工程模型也会出现这种经验:写下假设之后,它们共同推出的限制,可能反过来否定我们最喜欢的设计。[5]
11. LoopString 的双关,应当落实为方法
Loop 的第一重含义,是球体的回旋与重复动作;第二重含义,是控制循环。传感器得到观测,估计器更新状态,策略选择动作,执行器施加作用,新的世界状态又返回传感器。闭环使系统能够纠正偏差,而不是只播放一段漂亮的轨迹。
String 的第一重含义,是有直径、质量、摩擦和弹性的绳索;第二重含义,是代码中的字符串,是规则、记录与交流的符号载体。实际机器人计算还使用浮点数组、张量和消息结构,它们不全是字符串。名称是一种有意选择的隐喻,而不是数据类型的技术断言。
项目因此可以被理解为三种工作彼此往返:在世界一中观察并操控;从世界二中的手感、意图与审美获得线索;把这些线索尽可能转化为世界三中可共享的模型、数据和问题,再接受物理实验的纠正。
这不是把人的全部体验“上传”到机器,也不是把三个世界熔成一个万能概念。冠军说“这个地方手要松一点”,我们需要追问的是:降低刚度?减小握力?允许更大位移?延迟提拉?一句身体语言,可能对应几个完全不同的控制量。
真正的桥梁,就建在这些翻译工作里。把“感觉不对”变成可定位的残差,把“顺手”变成可比较的动作条件,把“好看”变成愿意交给他人评价的作品,同时承认仍有未被形式化的部分。
12. 具身的视点,不等于已经证明的主观体验
机器人可以拥有以自身为中心的坐标系,可以估计“物体在我左侧”,也可以根据自身动作预测接触。这是功能性、几何性和控制意义上的自身参照。它不能单凭措辞就升级为现象学意义上的第一人称体验。
反过来,我们也不能凭“它由电路构成”就证明一切机器永远不可能有体验。人工意识与主观经验仍有深刻争议,当前没有一种普遍接受、足以解决所有案例的判定方法。LoopString 的任务成功或失败,都不能单独裁决这场争论。
因此,本文使用“理解物理世界”时,优先采用可操作的含义:系统能否预测行动后果、利用反馈纠正误差、在材料或初始条件变化时维持任务,并识别自己不知道什么。这不是意识的完整定义,而是一个工程研究可以承担的目标。
冠军级表现若实现,将说明某种体系能够获得很高的物理操作能力。它既不自动证明机器人有快乐与紧张,也不自动证明人类学习中的体验毫无作用。关于能力的证据,应首先用于回答能力的问题。
这样澄清并不会让项目失去诗意。我们仍可以认真讨论人为什么愿意为一根绳子练习多年,为什么一次准确落绳会令人欣喜。只是人的热爱与机器的性能,需要被分别尊重。
13. 从“我相信它会成功”,到“什么会使我改变看法”
波普尔对本项目更直接的启发,是可受批评的研究态度。一个方案不能通过不断改换成功定义来保护自己。若每次失败都被解释为“只是还不够智能”,那么无论发生什么,原来的主张都不会受到检验。
我们需要提前说清:什么样的实验会削弱对某条路线的信心?如果高维绳索模型在指定任务中没有优于低维模型,却显著增加延迟,就应缩小它的使用范围;如果触觉输入没有带来稳定收益,就应检查传感方式、任务设计和解释,而不是只保留成功视频。
失败也不是一个单纯的否定词。一次失败可能揭示模型漏掉了滑移,可能揭示相机时间戳漂移,也可能揭示当前硬件无法提供必要的末端加速度。将这三种失败分开,研究才能积累。
LoopString 的循环,不应只是控制器每两毫秒运行一次的循环,也应是提出问题、设计实验、承认误差、修改解释的循环。 前者让机器人不轻易失手,后者让项目不轻易自欺。
第三篇 从图书馆到工作台:建立能用的理论地图
14. 去图书馆,带着问题去
启动机器人项目,容易陷入一种热闹的失序:今天看一个灵巧手演示,明天装一个仿真环境,后天换一种强化学习算法。每件事都与目标有关,合起来却未必形成一条能验证的路线。
图书馆的价值,在于帮助我们重新建立依赖关系。逆运动学依赖位姿表示,动力学依赖质量与惯量,反馈控制依赖状态可观测性;柔性体仿真又把材料模型、离散化与接触处理接在一起。知道这些知识怎样彼此约束,比记住更多名词重要。
书也并非天然比论文正确。教材可能滞后,经典方法可能不适用于新任务。它的优势是组织性:读者可以看到一个方法是在什么假设下提出的,前面需要哪些概念,后面能够推出哪些结果。论文则帮助我们看到这些边界正在怎样被推进。
检索时可以把“人形机器人、仿人机器人、双足机器人、机器人学、多体动力学、柔性体操控”作为起点,再按当前问题增加“接触动力学、阻抗控制、弹性杆、系统辨识、状态估计”等词。中英文配合检索,能减少译名差异造成的遗漏。
中图分类号 TP242 可以作为机器人相关图书的入口,必要时扩大到 TP24 所在的自动化技术及设备类目。它们是检索线索,不是保证每一本相关书都在那里的一张地图。具体索书号、版本与馆藏状态,应以本馆目录为准;力学、控制和计算机图形学的相关书,往往分散在其他架位。
不妨为每本候选书记录六项信息:准确书名、作者或编者、译者、版次、ISBN、与你的问题相关的目录。尤其不要把重印年份当作原著出版年份,也不要仅凭书名为作者补写一本书实际上没有讨论的内容。
15. 五本书,分别打开哪扇门
John J. Craig 的《机器人学导论》,适合建立机构学与刚体动力学基础。正运动学、逆运动学、雅可比矩阵、动力学和控制,是阅读机器人论文时会反复返回的词汇。它的价值不是保证某一种建模约定永远最好,而是训练读者把机构图变成可计算的关系。[7]
Kevin M. Lynch 与 Frank C. Park 的《现代机器人学:机构、规划与控制》,提供以旋量、李群与李代数组织刚体运动的语言。其英文原著 Modern Robotics: Mechanics, Planning, and Control 配有作者公开的课程、视频和代码,适合把读书与动手安排在同一天。[8]
梶田秀司编著的《人形机器人》,适合建立双足运动与全身运动的基本认识。国内可检索 2024 年出版的原书第 2 版中译本,ISBN 为 9787111757207。倒立摆近似、零矩点及相关步态控制,是理解它时值得抓住的主线。相关英文著作 Introduction to Humanoid Robotics 亦可作为交叉阅读材料,但不要把不同版本的目录与页码混引。[9]
张智军等的《人形机器人原理与实践》,ISBN 为 9787111792161。出版社公开目录显示,它不仅介绍数学基础、驱动与传感器,也用较大篇幅讨论情感特征、情感计算、多模态表达、人机交互及系统实践。它适合帮助读者认识人形系统的交互与集成维度,不应被想当然地描述为一本主要讲全身动力学控制的专著。[10]
左国玉、张伟的《人形机器人技术基础与应用》,ISBN 为 9787111772705。出版社目录覆盖运动学与动力学、行走控制、学习控制、导航、感知、机构设计和运动控制实践。其中有关模型预测控制、全身控制、强化学习环境配置的内容,有助于把基础理论连接到现代实验流程。[11]
这五本书不是必须从第一页依次读完的通关任务。对 LoopString,更合理的顺序是先理解坐标、雅可比、动力学与控制,再学习人形全身约束,同时沿着柔性体问题补充专门论文。遇到一项不会的技术,就返回相应章节,而不是等“学完机器人学”才开始第一次实验。
16. 一张任务导向的阅读表
| 眼前的问题 | 应掌握的概念 | 推荐入口 | 读完后的最小产物 |
|---|---|---|---|
| 球在相机中,手在机器人中,怎样对齐? | 位姿、坐标变换、标定 | Craig;Lynch 与 Park | 一份注明方向与单位的坐标图 |
| 手能到达那里,但能否按时到达? | 雅可比、奇异性、速度与加速度约束 | 两本基础教材 | 一段带限速的末端轨迹 |
| 一次提拉需要多少关节力矩? | 逆动力学、传动、外力映射 | Craig;动力学章节 | 力矩预算及其误差范围 |
| 手臂运动会不会破坏站立? | 质心、角动量、接触约束、全身控制 | 梶田;左国玉、张伟 | 全身运动约束的检查结果 |
| 绳子为什么不像仿真里那样动? | 弹性、弯曲、扭转、接触与系统辨识 | DER;DLO 文献 | 对照实物的参数辨识实验 |
| 能运行的控制器为什么不可靠? | 时延、带宽、估计误差、饱和 | 控制教材与实验日志 | 延迟分布和失败分类 |
表格最后一列很重要。阅读要留下能被检验的产物。只记下一串定义,未必改变项目;画出坐标系并发现两台相机用了相反的外参方向,却可能直接避免一次错误控制。
17. 位姿:从“它在那里”到可计算的空间关系
刚体在三维空间中的位姿,可以用齐次变换矩阵表示:
其中 是旋转矩阵, 是位置向量。这里的矩阵并非只是把数字排整齐,而是让旋转、平移与坐标变换可以用统一规则组合。[8]
假设 表示把 B 坐标系中的坐标转换到 A 坐标系,那么相机、机器人基座和球体之间的变换,就必须按相同约定书写。常见错误不是不懂矩阵乘法,而是不同程序模块对下标方向理解不同。
对 LoopString,至少要清楚区分世界、机器人基座、末端、相机和球体坐标系。绳索则需要描述中心线以及必要的局部方向。坐标系的版本与标定时间,应与数据一起保存,因为一次相机轻微移动就可能使旧外参失效。
还要区分配置坐标与速度坐标。例如浮动刚体的姿态若用四元数存储,其配置参数有四个数,但旋转速度只有三个自由度。MuJoCo 的 qpos 与 qvel 因此不一定等长。把它们逐元素相加,可能在最基础的运动表示上就犯错。
18. 雅可比:手的动作,怎样变成关节的动作
设关节变量为 ,末端的空间速度为 。在指定坐标与速度约定下,有:
雅可比矩阵 告诉我们,关节的小变化怎样组合成末端的运动。它依赖姿态,所以同一台机械臂在不同位置的操作能力并不相同。
一只手可能能够静止地抵达某个位置,却无法在该位置快速横向移动。接近奇异位形时,某个末端方向的速度可能需要极大的关节速度。对悠悠球来说,“工作空间覆盖表演区域”只是第一层检查,“可用动态工作空间”才更接近实际需求。
在相容的力与速度约定下,末端力旋量 与关节力矩的映射为:
这来自功率关系的一致性。它提醒我们:末端承受同样大小的绳索拉力,在不同手臂姿态下,会让各个关节承担不同负载。所谓“轻轻一拉”,对一台伸直手臂、接近限位的机器人,未必轻松。
19. 动力学:质量不会服从愿望
含有浮动基座和接触的机器人,可以概括地写成:
这里 是广义速度, 是质量矩阵, 汇集重力、科氏与其他相应项, 选择受驱动的关节, 是接触力。具体模型还可能包括额外外力、摩擦和执行器动力学。[7][8]
机械臂装在地面上时,基座约束替我们承担了一部分问题;把同样的手臂放到双足机器人上,反作用就会影响整机。双脚和地面的接触必须提供可行的力与力矩,身体才能完成手部动作。
因此,从桌面双臂迁移到人形平台,不只是换一份 URDF 文件。基座可动、接触可变、角动量会重新分配,手部精度与身体平衡也可能相互竞争。全身控制需要把这些目标放在同一个约束体系里。
力矩峰值、持续力矩与热限制也不能混为一谈。短时能够做到的快速动作,未必能够重复三分钟。研究表演机器人,热状态应该像电池电量一样成为实验记录的一部分,而不是等电机降额后才追问原因。
20. ZMP 很重要,但它不会替机器人解决所有平衡问题
零矩点,ZMP,是经典双足控制的重要概念。在特定平面接触与受力条件下,可以讨论地面合力矩水平分量为零的位置,并将其与支撑区域联系起来。[9]
在质心高度近似固定、忽略相应角动量变化等假设下,线性倒立摆模型给出一个常见关系:
其中 是质心水平位置, 是固定高度, 是相应的支撑作用位置。它把复杂身体运动压缩为一个可规划的模型,因此非常有用。
但 ZMP 位于支撑多边形内部,并不是对所有运动、所有摩擦条件和所有时刻的“不摔倒证明”。滑移、力矩饱和、关节限位、未来状态不可恢复,以及腾空或多接触情况,都需要额外分析。现代方法还会讨论捕获点、质心动力学、接触力可行域与模型预测控制。
对 LoopString,最务实的启示是逐层增加难度:先让可靠基座承受手臂动作,再研究站立时的上肢操作,最后才讨论移动中的表演。没有必要把悠悠球控制、动态行走和全身平衡同时设成第一周的未知数。
21. 柔顺性:准确并不总意味着更硬
现实中的接触没有 CAD 模型那样完美。物体略有偏差,绳子会滑动,抓握点会改变。如果控制器坚持每个瞬间都严格追踪几何轨迹,误差可能转化为危险的接触力和高频振荡。
阻抗控制关注运动与受力之间的动态关系。一个简化的目标关系可以写为:
这里 表示相对于目标的位移偏差, 分别表达希望呈现的惯性、阻尼和刚度。实际实现必须考虑机构、传感、离散时间和执行器能力;这个式子不是复制到位置接口上就能生效的魔法。[23]
回驱性是另一件事:外力是否容易通过输出端反过来驱动传动与电机。它与减速比、摩擦和结构有关;软件控制可以改善交互行为,却不能凭空抹掉机械摩擦与传动损失。力控、阻抗控制、柔软材料与机械回驱性互有联系,但不是同义词。
这也说明“每根手指至少两个主动自由度”不应被写成所有人形机器人的最低标准。欠驱动手可以利用机械耦合与柔顺性适应接触;某些任务只需简单夹具,另一些任务则需要复杂的手内操作。自由度分配应由任务决定,再通过实验检验。
把“手要松一点”翻译成刚度、阻尼与接触条件,是我们从阅读走向实践的一次小型跨越。它比再加一句“机器需要灵巧”更接近工程。
第四篇 一根绳子的物理:先建模,再相信动画
22. 悠悠球不是一个统一的力学任务
竞技悠悠球包含不同组别与器材机制。通常所说的 1A 是单球线上花式,动作可以利用双手构造绳形;2A 以双手回旋为核心;3A 涉及双球线上花式;4A 是离绳玩法;5A 则使用配重端。具体比赛规则应查阅赛事当年的官方说明。[21]
响应式与非响应式悠悠球也有重要区别。响应式器材可以通过适当提拉等方式回收;许多现代非响应式器材需要特定的 bind 操作,改变绳子进入间隙的方式,才能有效回收。两种机制不能用同一套未经说明的控制假设处理。
这意味着项目最初列出的“睡眠—登月弹射—自由花式”,并非自然连成的一条技能阶梯。“登月弹射”通常与响应式回旋玩法有关,而现代 1A 自由花式往往使用另一类器材与回收方式。器材、动作和评价之间的关系,应在设计开始时讲清楚。
本文建议以 1A 风格、单球、双手参与的线上花式作为主线,把周期回旋或登月弹射放在单独的响应式实验支线。这样既保留原设想的研究价值,也避免在里程碑中悄悄切换物理任务。
23. 14,300 RPM,首先是一个需要说明来源的数
RPM 是每分钟转数。若某次旋转速度为 14,300 RPM,则频率约为 238.3 Hz,角速度约为 1,498 rad/s。这个换算可以确定,但它不证明任意竞技悠悠球、任意投掷或任何机器人都能达到这个转速。
在项目最初构想中,这个数字用来表达高速特征。正式研究应将它列为待实测的转速示例或候选测试区间,而不是把它当作所有动作的默认工况,更不能从它直接推出控制器“必须超过 500 Hz”。
为了理解数量级,可以假设某个球体绕自转轴的转动惯量为 。在上述角速度下,转动动能为:
这只是给定参数下的示意估算。它立即提出两个实验问题:真实球体的转动惯量是多少?人的投掷与机器人的投掷能向球体注入多少能量?这两项应测量或辨识,而不是用外形照片猜定。
在绳子绷紧、无滑移且处于特定绕轴展开阶段时,可以建立局部关系 。有效卷绕半径、绳厚和卷绕层数都会影响它。进入轴承自由旋转阶段后,不能继续把球体自转速度与绳端平动速度简单锁死。
正是在这种模式切换处,“一个悠悠球”变成了几个互相衔接的动力学问题。比起记住某个惊人的转速,知道一个公式何时失效更重要。
能量从哪里来:睡眠不是永动机
上面算出的是球体在某一转速下储存的转动动能。问题随之而来:这些能量从哪里来,又到哪里去?
在投掷阶段,手在很短的时间内做功,把平动与转动能量注入球体;由于有效卷绕半径很小,同样的手部速度可以转化为很高的自转速度。这也是悠悠球“四两拨千斤”的来源:能量的主要储存形式是转动,而不是平动。
进入睡眠后,轴承摩擦与空气阻力持续耗散能量,转速缓慢下降。真实比赛器材可以睡眠数分钟,但没有任何一场表演靠“一次投掷”撑到最后。
选手维持表演的方式,是在正确的时机向系统补充能量:当球体处于摆动的特定相位时,手部做一个小幅的提拉或回送,就像推秋千要在正确的时刻用力。这个机制在控制文献中被称为参数激励或能量泵浦,也是基于能量的稳定控制所利用的结构。[22]
对 LoopString 的启示很直接:能量应当作为状态的一部分被估计与管理。困难动作消耗能量,简单动作可以恢复能量;一个三分钟的编排,本质上是一张能量预算表。只追踪几何轨迹而忽略能量收支的控制器,会在表演后半段遇到无法解释的失败。
24. 自转频率、视觉帧率和控制带宽不是同一个东西
球体每秒旋转两百多圈,不意味着控制器必须对每一圈都作出新的动作。如果控制目标是球心轨迹和自转轴姿态,可以利用模型与传感器估计这些较慢变化的量;若要逐帧恢复表面标记的旋转相位,则需要另行考虑采样与混叠。
200 fps 的相机每 5 毫秒获得一帧。假设球心移动速度是每秒 5 米,它在两帧之间就会移动约 25 毫米。曝光时间造成的运动模糊、图像传输、推理和同步误差,还会继续增加估计的不确定性。
奈奎斯特采样定理适用于明确的带限信号条件,不能被一句“采样率大于两倍”直接转化为机器人性能保证。接触突变不是一个干净的单频正弦信号,视觉中的遮挡和混叠也不能仅靠提高控制线程频率解决。
同样,每秒发送五百条指令,只说明发送节奏,不说明电机输出能以这个带宽准确变化。内部伺服更新、通信周期、传感延迟和机构弹性,共同决定闭环性能。把命令频率、测量频率、策略频率和有效控制带宽分别记录,是项目最基本的工程纪律。
25. 绳子能拉,不能推
先考虑最简单的模型:不可伸长、无质量、没有绕障碍的单段绳索。设两端距离为 ,绳长为 ,间隙变量 ,张力为 。可以写出单边约束的示意条件:
距离小于绳长时,绳子松弛,张力可以为零;绳子绷紧时,张力开始约束运动。这种“有时约束、有时不约束”的结构,已经足以让控制比普通刚性连杆复杂。
真实绳索还会伸长、弯曲、扭转,张力沿材料传播;突然拉紧时的作用也与柔性、接触和耗散有关。此时上述理想互补关系只是理解的起点,不应拿来代替完整材料模型。
悠悠球表演利用的正是这种切换:某个瞬间松开几何束缚,让球或绳圈形成预期路径,下一瞬间再利用张力接住并重新组织运动。控制器必须判断的不只是“现在在哪里”,还有“接下来哪一种约束会生效”。
26. 绳圈的变化:复杂不等于已经证明混沌
花式中绳段会交叉、绕过手指、落入球体间隙并发生自接触。机器人需要理解哪些接触可以滑动,哪些接触传递张力,哪些看似相近的绳形实际上会导致不同后果。
这里经常使用“拓扑变化”一词,但应谨慎。二维图像中的交叉,不一定是真实接触;开放绳索的某次形状变化,也不一定改变严格数学意义上的拓扑类型。工程上更适合先描述穿绕关系、接触图和动作模式的变化。
把悠悠球称为“混沌系统”,同样需要条件。在某些模型和参数区间,非线性、冲击与多次接触可能产生对初始条件的敏感性;但不是每一次睡眠、每一种回旋都已经证明具有混沌。若要提出严格的混沌主张,需要相应分析,而不能把“难预测”当作定义。
对开题最稳妥的表述是:LoopString 面对的是一个高速、部分可观测、包含柔性变形与接触切换的非线性系统。它可能在某些工况中表现出强烈的误差放大,因此必须研究闭环纠偏与恢复。
绳子也并非“无法建模”。任何模型都作近似,问题是模型在目标任务与时间尺度上够不够用。一根绳子迫使我们谦逊,不是因为它超出数学,而是因为它会很快检验我们选用的数学是否合适。
27. MuJoCo:为什么适合做第一间实验室
MuJoCo 的名字来自 Multi-Joint dynamics with Contact,由 Todorov 等人于 2012 年提出。[13] 其设计强调多关节系统、广义坐标、接触与控制研究。官方文档提供了建模、动力学计算、约束和 Python 接口的详细说明。[12]
它的价值不只是能把模型显示出来。一个可控的仿真环境允许我们改变质量、惯量、阻尼、时步和控制输入,重复运行同一实验,并记录状态与受力。这使直觉可以转换成对照实验。
MuJoCo 对接触与约束采用具有正则化、软约束性质的建模与求解方法。这里的“软”不等于随便,也不意味着无需验证:solref、solimp 等参数影响约束响应,过硬的响应与不合适的时步仍可能制造数值问题。
凸优化有助于求解特定约束模型,但不能推出整个含接触系统在任何情形下都全局光滑可微,更不能保证模拟出来的摩擦等同于真实摩擦。我们使用一个引擎,应同时阅读它选择了哪些近似。
MuJoCo 也不是“只能模拟刚体”的软件。其 tendon、柔性结构表示以及 cable/elasticity 相关功能,为不同程度的绳索近似提供了入口;具体接口需要查对应版本文档。承认这些能力,才能准确讨论它们对于特定悠悠球任务的局限。
28. 第一次上手:从受阻尼转子到最小悠悠球
最好的第一段程序,不是装进整个人形机器人和一根会打结的绳子。先取悠悠球问题中最容易理解的一小块:固定轴上的自由旋转与黏性耗散。
设转动惯量为 ,黏性阻尼为 ,没有驱动力矩,则:
这个模型故意不包含绳索、轴承细节和自由落体。它的目标是确认单位、惯量轴、阻尼和积分设置能够与已知答案对齐。下面的 Python 示例只依赖 MuJoCo 和标准库,可以直接运行:
import math
import mujoco
INERTIA = 3.0e-5 # kg m^2, around the local z axis
DAMPING = 3.0e-7 # N m s / rad, illustrative viscous damping
OMEGA_0 = 200.0 # rad/s, illustrative initial speed
DURATION = 2.0 # seconds
for dt in (0.001, 0.0005):
xml = f"""
<mujoco model="loopstring_rotor_baseline">
<option timestep="{dt}" gravity="0 0 0"
integrator="implicitfast"/>
<worldbody>
<body name="rotor">
<inertial pos="0 0 0" mass="0.064"
diaginertia="1.8e-5 1.8e-5 {INERTIA}"/>
<joint name="spin" type="hinge" axis="0 0 1"
damping="{DAMPING}"/>
<geom type="cylinder" size="0.028 0.01"
contype="0" conaffinity="0"/>
</body>
</worldbody>
</mujoco>
"""
model = mujoco.MjModel.from_xml_string(xml)
data = mujoco.MjData(model)
joint_id = mujoco.mj_name2id(
model, mujoco.mjtObj.mjOBJ_JOINT, "spin"
)
velocity_id = model.jnt_dofadr[joint_id]
data.qvel[velocity_id] = OMEGA_0
mujoco.mj_forward(model, data)
for _ in range(round(DURATION / dt)):
mujoco.mj_step(model, data)
expected = OMEGA_0 * math.exp(-DAMPING * data.time / INERTIA)
measured = float(data.qvel[velocity_id])
relative_error = abs(measured - expected) / abs(expected)
print(f"MuJoCo={mujoco.__version__}, dt={dt:g}, "
f"omega={measured:.8f}, expected={expected:.8f}, "
f"relative_error={relative_error:.3e}")
assert math.isfinite(measured)
assert relative_error < 1.0e-3
这段代码中的参数是教学示例,几何外观与惯量是显式设置的,不代表某款商品的测量结果。比较两个时步的输出,能够检查离散化误差;进一步把阻尼设为零,可以观察模型是否按预期保持角速度。
接下来才逐项增加复杂性:加入确定的输入力矩,比较角动量变化;允许球体平移,检查重力;加入理想长度约束,观察张力;加入绕线和释放模式,检查能量收支;最后再替换为具有空间形状的绳索模型。
这种工作看似朴素,却可以提前发现许多“高层算法失败”:质量单位错了,转轴方向错了,模型的惯量不满足几何预期,或者默认阻尼吞掉了不该消失的能量。程序跑起来,只是世界三获得了一个世界一的载体;与已知答案一致,才开始构成证据。
第二步:一个包含模式切换的最小悠悠球
现在加入真正的结构。下面这个模型故意做到最小:一根理想绳(无质量、不可伸长、单段直线)、一个竖直滑动关节、一个受阻尼的自转关节。它不包含摆动、绳的质量与弹性、陀螺进动与自接触,却包含悠悠球最重要的一种结构——绕线阶段的约束,在绳子放完的瞬间被释放。
import mujoco
R_EFF = 2.0e-3 # m, effective winding radius
STRING_LENGTH = 1.0 # m, total string length
SPIN_DAMPING = 1.0e-6 # N m s / rad, illustrative bearing loss
xml = f"""
<mujoco model="loopstring_minimal_yoyo">
<option timestep="0.0001" gravity="0 0 -9.81" integrator="implicitfast"/>
<worldbody>
<body name="hand" pos="0 0 1.0">
<geom type="sphere" size="0.02" contype="0" conaffinity="0"/>
<site name="finger" pos="0 0 0" size="0.004"/>
</body>
<body name="yoyo" pos="0 0 1.0">
<joint name="yoyo_z" type="slide" axis="0 0 1"/>
<joint name="yoyo_spin" type="hinge" axis="0 1 0"
damping="{SPIN_DAMPING}"/>
<geom type="cylinder" size="0.028 0.01"
quat="0.70710678 0.70710678 0 0"
contype="0" conaffinity="0"/>
<site name="axle" pos="0 0 0" size="0.004"/>
</body>
</worldbody>
<tendon>
<spatial name="string" limited="true"
range="0 {STRING_LENGTH}" width="0.001">
<site site="finger"/>
<site site="axle"/>
</spatial>
</tendon>
<equality>
<joint name="winding" joint1="yoyo_z" joint2="yoyo_spin"
polycoef="0 {-R_EFF} 0 0 0" solref="0.0005 1"/>
</equality>
</mujoco>
"""
model = mujoco.MjModel.from_xml_string(xml)
data = mujoco.MjData(model)
z_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_JOINT, "yoyo_z")
spin_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_JOINT, "yoyo_spin")
z_qadr, spin_qadr = model.jnt_qposadr[z_id], model.jnt_qposadr[spin_id]
z_vadr, spin_vadr = model.jnt_dofadr[z_id], model.jnt_dofadr[spin_id]
eq_id = mujoco.mj_name2id(model, mujoco.mjtObj.mjOBJ_EQUALITY, "winding")
data.qvel[z_vadr] = -1.0 # m/s, released downward
data.qvel[spin_vadr] = 1.0 / R_EFF # rad/s, consistent unwinding
mujoco.mj_forward(model, data)
RPM = 60.0 / (2.0 * 3.141592653589793)
max_violation, switch_time, omega_at_switch = 0.0, None, None
for _ in range(200_000):
mujoco.mj_step(model, data)
if switch_time is None:
violation = abs(data.qpos[z_qadr] + R_EFF * data.qpos[spin_qadr])
max_violation = max(max_violation, violation)
d = -data.qpos[z_qadr]
if d >= 0.999 * STRING_LENGTH:
switch_time = data.time
omega_at_switch = data.qvel[spin_vadr]
data.eq_active[eq_id] = 0 # release winding, enter sleep
elif data.time >= switch_time + 8.0:
break
print(f"winding: max violation {max_violation:.2e} m")
print(f"switch: t={switch_time:.3f}s, omega={omega_at_switch:.1f}rad/s "
f"({omega_at_switch * RPM:.0f}rpm)")
print(f"sleep: d={-data.qpos[z_qadr]:.4f}m, "
f"omega={data.qvel[spin_vadr]:.1f}rad/s "
f"({data.qvel[spin_vadr] * RPM:.0f}rpm)")
模型里有三个关键设计。腱索从手指连到轴心,长度上限为绳长;它只能拉、不能推,正好对应单边约束。等式约束把下滑距离与自转角度锁在一起,模拟绕线阶段的几何关系。模式切换发生在下滑距离达到绳长时:释放等式约束,让球体进入自由自转的睡眠阶段,由腱索承担支撑。
实测输出如下(MuJoCo 3.12.0):
winding: max violation 8.04e-04 m
switch: t=0.976s, omega=522.8rad/s (4992rpm)
sleep: d=1.0000m, omega=345.4rad/s (3299rpm)
切换时刻的自转角度约为 499.3 rad,与理论值 rad 相符。睡眠 8 秒后,绳长保持在 1.0000 m,转速衰减约 34%。
这里有一个值得记住的教训。如果把绕线等式的 solref 保持默认值(时间常数 0.02 s),约束在这个质量比下会严重失效——最大违反量可达半米,球体几乎在自由下落,而模型表面上仍然“跑得通”。把时间常数收紧到 0.0005 s 后,违反量降到毫米级。软约束不等于精确约束;任何约束模型都必须检查它的违反量,而不是只看动画是否流畅。 这正是“精准与否,就在成败之间”的最小案例。
这个模型仍然只是骨架。它没有绳的质量与弹性,没有摆动与陀螺进动,没有绳与手指的摩擦,也没有 bind 这样的回收机制。它证明的不是“我们已经会模拟悠悠球”,而是一条可行的工作路径:先让每一层假设可见,再逐层增加物理。
29. 离散弹性杆:给“一根绳子”一套可计算的骨架
当绳子必须弯曲、扭转、拉伸并发生自接触时,MuJoCo 的刚体加腱索近似会逐渐吃力。图形学与计算力学给出了一条更合适的路:把绳索看成细长弹性杆。
连续杆模型把绳子分为两种形变:中心线的弯曲与拉伸,以及截面绕中心线的扭转。离散弹性杆(Discrete Elastic Rods, DER)在离散顶点上定义这些能量。对相邻顶点构成的一段,拉伸能可以写成类似:
其中 是该段的边向量, 是原长, 是拉伸刚度。弯曲能则与离散曲率 相关,扭转能取决于材料标架相对于参考标架的转角。[14]
DER 的关键技巧,是采用 Bishop 标架表示参考方向。Bishop 标架通过平行传输沿中心线推进,不含多余的自旋,因此可以避免某些角度参数化中的奇异。材料标架相对 Bishop 标架的偏离,用每点一个标量转角描述。这样一来,绳索的弯曲与扭转可以分开处理,又保留它们的耦合。
Bergou 等人 2008 年的工作还把材料标架当作准静态处理,只让中心线动态演化。这个假设利用了扭转波在杆中通常远快于弯曲波的事实,从而在不放弃弯曲—扭转耦合的同时降低刚性。[14]
对 LoopString,DER 的意义在于三点:它给出可微的能量形式,适合参数辨识与最优控制;它能够表达打结、扭转与自接触这些花式的核心现象;它可以通过流形投影与刚体系统耦合,使绳子与机械手、球体在同一仿真中交互。
DER 也不是免费的。绳段越短,计算与接触检测成本越高;快速拉紧可能引入刚性;自接触处理需要可靠的碰撞检测与摩擦模型。它是一条有明确适用条件的路线,而不是“模拟绳子”的终点。
30. 物质点法:让大变形与自接触各有一个位置
另一条路线来自物质点法(Material Point Method, MPM)。它把连续体离散为携带质量的粒子,粒子与背景网格交换动量,从而同时获得拉格朗日方法便于追踪材料历史与欧拉方法便于处理大变形的优点。[15]
MPM 对绳索的吸引力,在于自接触、拓扑变化和大变形不必依赖逐段精确的网格连接。粒子可以在网格中穿过并重新接触,这使它适合研究打结与复杂缠绕。
Genesis 等新一代物理引擎把 MPM 与刚体、流体等求解器放在同一平台中。DLO-Lab 在此之上增加了 ROD 材料与 Rod/ParameterizedRod 形态,用可微物理对盘绕、聚拢、提升、分离、弹弓、解结、绕柱与包裹等任务进行基准评测。[16]
MPM 的代价同样真实。时间步、网格分辨率、粒子数量与接触参数共同决定成本;高速冲击与薄结构会放大数值难度;材料参数的辨识也不能靠界面上的默认值。对悠悠球,MPM 更适合研究球体与绳圈碰撞、复杂绳形与解结,而 DER 可能更适合高频控制与参数扫描。
两条路线不必对立。一个务实的组合是:用 DER 或简化混合模型承担控制回路中的快速预测,用 MPM 或更精细的模型离线校准接触与绳形;把两种模型的分歧本身,作为下一轮实验要回答的问题。
31. Sim-to-Real:把“为什么不像”拆成可测量的条目
“仿真与真实有差距”是一句没有信息量的话。有用的版本,是把差距分解为具体条目,并给出观测与辨识方法。下面这张表是 LoopString 的第一版检查清单。
| 差距条目 | 物理来源 | 典型表现 | 可行的辨识方法 |
|---|---|---|---|
| 绳子耗散 | 材料黏弹性、空气阻力 | 睡眠时间与回弹幅度不符 | 自由下落与自由摆动的时间序列拟合 |
| 轴承摩擦 | 滚珠润滑、预紧、污染 | 自转衰减曲线不同 | 固定轴上自由旋转的衰减测量 |
| 接触与摩擦 | 绳—轴、绳—手、绳—绳 | bind 成功率、滑移距离异常 | 受控拉绳与回收实验 |
| 驱动动力学 | 电机摩擦、齿隙、电流限、发热 | 高速指令跟踪误差、降额 | 实机正弦扫频与阶跃响应 |
| 时延与同步 | 曝光、传输、推理、总线 | 相位滞后、重复性差 | 往返时延测量与时间戳核对 |
| 几何与惯量 | 加工公差、配重、装配 | 自转轴进动、摆动频率偏移 | 称重、摆测与转动惯量辨识 |
这张表的价值,在于把“调参玄学”变成可执行的实验。每一条差距,都对应一种测量;每一次测量,都应当留下原始数据与参数版本。
缩小差距的常用方法有三类。域随机化在训练中扰动摩擦、质量、时延与噪声,让策略在参数分布上更稳健,代价是可能牺牲峰值精度。在线残差学习让模型负责主要动态,让学习模块修正剩余误差,适合参数慢变但结构已知的情形。Real2Sim 参数辨识则用真实数据反过来修正仿真,把“仿真到现实”变成双向的循环。
三者都需要同一个纪律:记录参数来源。一个从商品页面抄来的质量、一个从自由下落拟合出的阻尼、一个为了让视频好看而手调的比例,证据强度并不相同。项目报告中应把它们分开标注。
32. 决策相关保真度:仿真要多真才算够
仿真不必在一切方面复制世界,但必须在影响决策的方面足够可信。一个策略选择抓取点,对 5 毫米的抓取误差不敏感;一个高速抛掷,可能对 1 毫秒的时延与 1% 的能量误差都敏感。保真度需求应由任务敏感度决定。
可以用两个指标检查这种敏感度:参数敏感度,即关键性能对某一参数的变化有多敏感;策略敏感度,即参数扰动后所选动作改变多少。敏感度高的参数,必须优先辨识;敏感度低的参数,可以留出更大的不确定范围。
这也为停止仿真调试提供了标准:当参数不确定性对任务成功率的影响,已经小于重复实验的统计波动时,继续提升该参数的精度就不再是当务之急。
第五篇 LoopString:让机器人挑战世界冠军级悠悠球
33. 任务的正式定义:先把边界画出来
LoopString 的目标,是让机器人在公开规则下完成一段三分钟自由花式表演。为了让目标可检验,我们先给出一个工作性定义。
主赛道: 1A 风格、单球、允许双手参与线上花式的表演。机器人可以使用固定基座或人形平台;器材为符合常见竞技规格的悠悠球与绳索;评价由改编自赛事规则的评分表进行,包括难度、完成度、连续性与表现力。
支线赛道: 响应式器材的周期回旋与登月弹射,用于研究单向能量注入与节奏控制。它与主赛道共享感知与控制基础,但器材机制与动作结构不同,单独评测。
能力层级: M1 睡眠,让球体在绳端稳定自转并受控收回;M2 弹射与接取,完成一次可控的抛掷与回收;M3 自由花式,在音乐节奏中连续完成一组花式动作。
“世界冠军级”的诚实定位: 这是一个方向性目标,不是开题时已经成立的能力。近期可检验的表述是:在指定的动作集合与评分规则下,完成一套合格的连续表演,并由不了解系统的裁判独立评分。冠军级是后续迭代的方向,不能提前写进结论。
需要说明的是,竞技赛事的评分规则会随年份与组别调整,难度、完成度与表演呈现的权重并不固定。LoopString 的做法,是冻结一个公开版本的评分表,把它当作本项目内部的评测标准;当官方规则更新时,同时更新对照结果,而不是悄悄更换口径。这样,历史实验之间的可比性才能被保留。
34. 为什么是悠悠球:把难点集中到一个可观看的任务
悠悠球把几类困难压进同一根绳子里。速度:一次有力的投掷可以让球体获得极高的自转速度,手部必须在很短的时间窗口内完成加速、释放与回收。柔性:绳索的弯曲、扭转、拉伸与自接触,不能用刚体模型精确描述。接触切换:绳子只能拉、不能推,松弛与绷紧之间会突然改变系统自由度。部分可观测:绳子可能被手或球遮挡,快速自转使表面标记难以跟踪。长时程与艺术性:三分钟表演不仅要求单次成功,还要求衔接、节奏与观感。
这些难点并非玩具独有。工业线束装配、手术缝合线操控、织物处理,都涉及柔性线性物体在受限空间中的操作。悠悠球的不同之处,是它把这些难点压缩成一个边界清楚、可以录像、可以公开评分、可以反复重试的任务。
它也因此适合作为具身智能的展示型基准:观众不需要了解控制频率,也能看出动作是否流畅;研究者不需要依赖主观的“像不像”,也能定义成功与失败。
艺术性并不与工程对立。节奏、停顿与动作幅度,可以转化为时间对齐误差、速度剖面与工作空间覆盖率等可测量量;裁判的整体印象,也可以通过多裁判评分与一致性分析进入评测。我们无法把审美完全还原为数字,却可以把不可还原的部分明确标注为“由人评价”,而不是假装它不存在。这正是 LoopString 与纯任务型基准的区别:它不仅要求完成,还要求值得观看。
35. 相关工作:我们不是第一批碰悠悠球的人
机器人控制悠悠球并不是空白。Kojima 与 Iwase 在 2011 年研究了“重力拉”动作:利用能量稳定控制与脉冲 Luenberger 观测器,仅凭力传感估计状态,并建立了考虑绳厚的悠悠球模型。[22] 该工作说明,即使在无视觉条件下,也可以通过力感与模型实现基本动作。
Miyakawa、Nemoto 与 Iwase 随后分析了机械臂的抛掷动作:建立包含竖直、水平、旋转与摆动的四自由度悠悠球模型,通过自由下落对比辨识转动惯量与黏性摩擦,并给出成功抛掷所需的释放角度与速度窗口。[26] 更早的工作包括 Jin 与 Zacksenhouse 的振荡神经控制、Hashimoto 等人的视觉反馈、Žlajpah 等人的简化模型,以及 Mombaur 在 HRP-2 上实现的上下运动。
柔性线性物体的学习与仿真也在快速推进。DLO-Lab 提供了可微的柔性体操作基准;MovingCables 提供了线缆运动分割的数据与方法。[16][24] 这些工作与悠悠球共享绳索动力学,但任务结构不同。
因此,LoopString 的定位不是“第一个会玩悠悠球的机器人”,而是:把研究目标从单次基本动作推进到长时程、高速、包含绳形拓扑变化与表演评价的完整流程,并给出可复现的仿真、辨识与评测协议。 这一目标是否成立,仍要靠后续实验检验。
36. 命名:Loop 与 String 各自的两副面孔
Loop 的第一副面孔是控制循环:感知、估计、决策、执行、反馈。第二副面孔是动作循环:睡眠、回旋、回收,一次次重复中积累稳定与节奏。
String 的第一副面孔是物理绳索:有直径、质量、弯曲刚度与摩擦。第二副面孔是符号序列:程序、参数、日志与评分规则。一次成功的花式,既需要绳子在物理世界正确运动,也需要代码在数字世界正确表达。
项目的全部工作,就是在两副面孔之间往返:把物理现象写成可计算的形式,再把计算结果送回物理世界检验。命名因此不是修辞,而是对研究结构的提醒。
37. 混合控制架构:让模型负责可解释的部分,让学习负责剩余的部分
LoopString 不采用单一方法。我们建议一个分层架构,各层承担不同时间尺度与不同性质的决策。
感知层(≥200 Hz): 高速相机与可选的事件相机,负责球体位姿、自转相位与绳形估计。绳段分割可借鉴 MovingCables 的方法;球体自转相位可通过标记、纹理或事件流估计。状态估计器输出带不确定性的球体状态、绳形与手部状态。[24]
技能层(5–10 Hz): 负责动作序列与节奏对齐。输入是当前绳形、剩余时间与音乐节拍,输出是下一个动作目标与时间窗口。它处理的是“接下来做什么”,而不是每个关节怎样动。
策略层(20–50 Hz): 使用扩散策略或类似的动作分块生成器,在给定目标与状态下生成一段连续动作。扩散策略在多种操作任务中展示了多模态与高维动作空间上的优势,其“预测一段动作、滚动执行”的形式适合花式动作的衔接。[17]
执行层(500–1000 Hz): 关节阻抗与力矩控制。对于睡眠与回旋等物理结构清楚的动作,可以使用基于能量的稳定控制或物理模型前馈;学习模块负责残差修正。[22][23]
物理模型: 混合动力学模型,显式区分缠绕、自由旋转、松弛与绷紧等模式,并在模式切换处检查能量与动量的一致性。模式切换的检测本身,是状态估计的一部分。
| 层级 | 典型频率 | 输入 | 输出 | 主要风险 |
|---|---|---|---|---|
| 感知 | ≥200 Hz | 图像、事件、关节状态 | 球体与绳形估计 | 遮挡、混叠、时延 |
| 技能 | 5–10 Hz | 绳形、节拍、剩余时间 | 动作目标 | 错误衔接、超时 |
| 策略 | 20–50 Hz | 状态与动作目标 | 动作分块 | 分布外状态 |
| 执行 | 500–1000 Hz | 关节目标与接触反馈 | 力矩或位置指令 | 饱和、发热、振荡 |
这张表同时是一张质疑表。任何一层如果无法在指定频率与延迟内提供可用的输出,架构就必须调整,而不是用更复杂的上层模型掩盖下层缺口。
38. 数据策略:从冠军的手,到机器人的关节
悠悠球操控的公开数据远少于抓取与装配。项目需要自建数据,并明确每一份数据的来源与用途。
冠军级冷启动数据。 与高水平选手合作,使用动作捕捉记录手部轨迹,用高速相机记录球体与绳形,并用加装惯性测量单元(IMU)的仪器化悠悠球记录自转与加速度。低成本双臂遥操作平台也展示了以人类演示采集精细操作数据的可行路径。[18] 目标不是复制选手的关节角,而是提取动作的时间结构、能量注入时机与绳形目标。
仿真增强数据。 在 DER 与 MPM 模型上批量生成动作与结果,随机化绳索、轴承与接触参数。仿真数据的价值在于覆盖真实实验难以穷举的失败区域,其可信度必须通过辨识与对照实验标定。
真实机器人数据。 从 M1 开始逐级收集,包括成功与失败。失败数据尤其重要:一次掉球、一次缠绳、一次接取偏晚,都是策略改进与失败分类的原料。
视觉数据。 利用 MovingCables 等公开数据预训练绳段分割,再用自有数据微调。[24] 视觉模型输出的是概率与不确定性,状态估计器需要把它们与动力学预测融合,而不是把单帧结果当作真值。
数据策略的核心原则是分层负责:冠军数据回答“动作应该是什么样”,仿真数据回答“参数变化时会发生什么”,真实机器人数据回答“我们的系统实际能做到什么”。三者不能互相替代。
39. 硬件路线:从能跑通流程,到能跑出速度
第一阶段:SO-ARM100(LeRobot)。 低成本开源机械臂,适合搭建感知—策略—执行的完整流程。它的速度、刚度与精度不足以完成冠军级动作,但足以验证坐标系、标定、时延测量、数据记录与基础抓取释放。[19] 在这一阶段追求高速花式,只会把硬件极限误判为算法问题。
第二阶段:高性能机械臂或人形平台。 Unitree G1 一类的人形平台提供更高力矩与全身控制接口,可以研究上肢高速动作对平衡的影响。[20] 具体型号、自由度配置与接口能力,应以采购时的官方资料为准。平台选择的核心指标是:末端速度与加速度、关节力矩带宽、控制接口频率、是否支持力矩级指令、以及安全限制。
器材与传感。 竞技悠悠球、符合规则的绳索、可更换轴承;球体加装轻量 IMU 与视觉标记;工作区布置多台高速相机与补光。仪器化设计必须避免明显改变球体的质量分布,否则测得的动力学不再代表比赛器材。
诚实的预期。 现有平台很可能无法在所有动作上达到人类冠军的速度与精度。项目的一个合法结果,是精确指出哪一类动作在什么硬件条件下成为瓶颈,并把瓶颈写成下一代的采购与设计需求。
40. 评测协议:让成功可以被别人复现
任务集。 固定一组基础动作与一套自由花式编排。基础动作用于诊断,编排用于综合评价。任务集与评分表在实验前公开,避免事后挑选有利动作。
指标。 成功率与连续表演时长;轨迹重现度(可用动态时间规整等方法比较);节奏误差(动作关键点与音乐节拍的时间偏差);能量效率(电池与热状态下的可持续性);恢复能力(出错后能否继续)。每项指标都应给出不确定度。
失败分类。 掉球、缠绳、碰撞、接取时机错误、状态估计丢失、执行器饱和、超时。失败分类先于策略改进:不同的失败需要不同的修正,混在一起只会得到“还需要更多训练”这类无效结论。
可复现性。 固定随机种子,发布仿真配置、辨识参数与评分脚本;硬件实验记录固件版本、标定时间与热状态。对无法公开的器材细节,至少说明其对结果的可能影响。
统计纪律。 预注册成功标准;报告置信区间;对关键结论进行多种子或多次实验验证。一次精彩的录像可以作为展示,不能作为性能证据。
第六篇 从开题到第一次实验
41. 第一周动手清单
在进入正式里程碑之前,第一周可以完成一组小而具体的动作。它们不依赖昂贵设备,却足以让项目从“想法”变成“记录”。
- 运行本文两段代码:安装
mujoco,确认输出与文中记录一致;把时间步、阻尼与初始转速各改动一次,观察结果怎样变化。 - 测量手边的悠悠球:质量、直径、轴径、绳长;用自由下落或单摆实验估计转动惯量与耗散,并把原始数据保存下来。
- 拍一次睡眠:用支持慢动作的手机或相机拍下投掷、睡眠与回收,估算自转衰减与动作时间尺度。
- 画一张信号链图:相机、机械臂、绳索、评分标准各在什么坐标系与什么频率上工作,用一张纸画清楚。
- 去一次图书馆:在 TP242 附近抽出一本教材,浏览目录,找出与你任务最相关的两章,做一页笔记。
- 写一页预注册:第一个要回答的问题、成功标准、失败分类。哪怕它会被修改,先写下当时的标准。
这六件事的共同点,是它们都留下可以复查的痕迹。项目最怕的不是起步慢,而是每一步都无法回看。
42. 里程碑:三个可以被检验的阶段
M1 睡眠。 球体在绳端稳定自转,持续不少于 10 秒,并在指定测试条件下以不低于 80% 的成功率受控收回。测试需要记录自转衰减曲线,并与辨识后的模型对比。收回失败、缠绳与异常进动,分别计入失败分类。
M2 弹射与接取。 完成一次可控的抛掷与回收,连续成功不少于 5 次,轨迹重现度高于 92%。指标包括释放时刻、释放姿态、接取位置误差与单次能量收支。轨迹重现度使用预注册的测试集与距离度量,避免事后挑选。
M3 自由花式。 完成一段三分钟、无中断、与音乐同步的表演,感知与执行闭环的实测频率不低于 200 Hz,并由不了解系统内部状态的裁判按公开评分表评分。这里的 200 Hz 指从测量到动作生效的闭环速率,而不是指令发送频率。
每个阶段都附带四项材料:预注册的成功标准、原始数据记录、失败分类结果、可复现的配置与脚本。没有这四项材料,视频只能算演示。
43. 风险清单:什么情况下应该重新设计
| 风险 | 触发信号 | 缓解措施 | 重新设计的条件 |
|---|---|---|---|
| 末端速度不足 | M2 释放窗口无法覆盖 | 降低器材速度要求、换平台 | 目标动作在硬件极限外且无法降速 |
| 绳形感知失败 | 遮挡时估计频繁丢失 | 多视角、事件相机、动力学预测 | 关键动作中感知不可用超过阈值 |
| 仿真保真不足 | 同参数下实机偏差持续偏大 | Real2Sim 辨识循环 | 关键参数无法在合理时间内收敛 |
| 长时程误差累积 | M3 前 30 秒后失败率骤升 | 技能层重规划与恢复策略 | 恢复策略无法把失败率降回目标 |
| 热与能量限制 | 连续运行后力矩降额 | 任务调度、热模型、间歇 | 表演时长在安全约束下不可达 |
| 评测主观性 | 裁判分歧大 | 公开评分表、多裁判、盲评 | 评分不可稳定复现 |
| 安全事件 | 球体飞出工作区 | 围栏、急停、力矩限制 | 安全边界与任务目标冲突 |
这张表的用途,是在热情高涨时提前约定退路。触发信号出现时,团队应当对照预先写下的条件作出决定,而不是在沉没成本中继续加码。
44. 技术溢出:从表演到生产
悠悠球不是唯一目标。线束装配、手术缝合线操控与织物处理,共享同一组技术要素:柔性线性物体的形状估计、接触切换下的控制、部分可观测环境中的状态推断、以及长时程任务中的失败恢复。LoopString 把这些要素放进一个高速、可视化、可重复的测试场景中。
它也有传播价值。一个公众能看懂、研究者能复现、失败能明确分类的具身智能基准,可以补充现有评测中“看得见的难度”。这不是要取代其他基准,而是提供一种面向真实物理交互的公开考试。
45. 终章:我在,与那根绳子
回到 Miura 的话:“人们常称我为‘天才’。但事实上,我曾经连让悠悠球转起来都做不到。我能完成极其高难度的花式,这意味着任何人也都能做到。”[25]
这句话里有一条完整的循环:个人的体验与坚持(世界二),凝结为可传授的动作与文化(世界三),再落到每一次真实的投掷与接取(世界一)。机器人的循环里,没有证据表明存在同样的体验;但它同样可以在世界一与世界三之间往返,通过测量、模型与实验,把一根绳子控制得越来越好。
这正是项目要诚实面对的地方。能力与体验是两个问题。LoopString 可以在能力一侧给出越来越好的答案:更稳的睡眠、更准的接取、更流畅的表演。它不能据此宣布机器拥有了人的感受,也不因此否定这种感受在人类学习中的作用。把两个问题混在一起,既得不到可靠的工程结论,也得不到诚实的哲学结论。
“我在”不是一项性能指标,也不是本文的结论。它是一个人在提问、练习、失败与重来中确认的东西。LoopString 能做的,是把绳子控制好,把实验记录好,把失败分类好;然后把“感到”的问题,留给仍然愿意追问的人。
从一根绳子开始,逼近物理智能的边界;同时保留对边界的敬畏。这既是项目的方法,也是它愿意接受的限度。如果这篇文章能让一位读者走进图书馆,或者打开一个仿真环境,那么它就已经完成了作为第一块基石的任务。
参考文献
[1] Farimani, M. H. M. What Is a Humanoid Robot, and at What Point Does It Stop Being One? 2026. 原文标题与链接以作者发布页面为准。
[2] 尼采. 《人性的,太人性的》. 杨恒达译. 中国人民大学出版社, 2005. 副标题“一本献给自由精灵的书”.
[3] Brooks, R. A. "Intelligence without Representation." Artificial Intelligence, 47(1–3), 1991.
[4] Varela, F. J., Thompson, E., Rosch, E. The Embodied Mind: Cognitive Science and Human Experience. MIT Press, 1991.
[5] Popper, K. "Three Worlds." The Tanner Lecture on Human Values, University of Michigan, April 7, 1978.
[6] Popper, K. Objective Knowledge: An Evolutionary Approach. Oxford University Press, 1972.
[7] Craig, J. J. Introduction to Robotics: Mechanics and Control. 中译《机器人学导论》.
[8] Lynch, K. M., Park, F. C. Modern Robotics: Mechanics, Planning, and Control. Cambridge University Press, 2017. 中译《现代机器人学:机构、规划与控制》.
[9] 梶田秀司. 《人形机器人(原书第2版)》. 冷春涛, 曹旸, 曹其新译. 机械工业出版社, 2024. ISBN 9787111757207. 英文版: Kajita, S. et al. Introduction to Humanoid Robotics. Springer, 2014.
[10] 张智军等. 《人形机器人原理与实践》. 机械工业出版社, 2026. ISBN 9787111792161.
[11] 左国玉, 张伟. 《人形机器人技术基础与应用》. 机械工业出版社. ISBN 9787111772705.
[12] MuJoCo Documentation. Google DeepMind. https://mujoco.readthedocs.io/
[13] Todorov, E., Erez, T., Tassa, Y. "MuJoCo: A Physics Engine for Model-Based Control." IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2012.
[14] Bergou, M., Wardetzky, M., Robinson, S., Audoly, B., Grinspun, E. "Discrete Elastic Rods." ACM Transactions on Graphics (SIGGRAPH), 2008.
[15] Sulsky, D., Chen, Z., Schreyer, H. L. "A Particle Method for History-Dependent Materials." Computer Methods in Applied Mechanics and Engineering, 1994. 另见 Stomakhin, A. et al. "A Material Point Method for Snow Simulation." ACM Transactions on Graphics, 2013.
[16] Cao, J., Wang, Y., Xiong, Z., Lin, C., Chen, Z., Gan, C. "DLO-Lab: Benchmarking Deformable Linear Object Manipulations with Differentiable Physics." ICML, 2026. 代码基于 Genesis.
[17] Chi, C., Feng, S., Du, Y., Xu, Z., Cousineau, E., Burchfiel, B., Song, S. "Diffusion Policy: Visuomotor Policy Learning via Action Diffusion." RSS, 2023; IJRR, 2024.
[18] Zhao, T. et al. "Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware." RSS, 2023.
[19] LeRobot SO-ARM100. Hugging Face. 具体规格与价格以官方页面为准.
[20] Unitree G1. 宇树科技. 自由度配置与规格以官方发布为准.
[21] World Yo-Yo Contest 规则与组别说明. 以赛事当年官方文件为准.
[22] Kojima, S., Iwase, M. "Yo-yo Motion Control Based on Impulsive Luenberger Observer." 50th IEEE Conference on Decision and Control and European Control Conference (CDC-ECC), 2011.
[23] Hogan, N. "Impedance Control: An Approach to Manipulation." Journal of Dynamic Systems, Measurement, and Control, 1985.
[24] Holešovský, O., Škoviera, R., Hlaváč, V. "MovingCables: Moving Cable Segmentation Method and Dataset." IEEE Robotics and Automation Letters, 2024.
[25] Miura, H. 访谈. Still Genius Journal, 2024. 中译为本文作者自译.
[26] Miyakawa, H., Nemoto, T., Iwase, M. "Model-Based Analysis of Yo-yo Throwing Motion on Single-Link Manipulator." Journal of Robotics and Mechatronics, 2020.
致谢与说明
本文的论点起点来自 Mehrdad H. M. Farimani 的文章,对他的启发谨致谢意。感谢所有在开放文档、教材与论文中分享知识的研究者与工程师。
文中涉及的未来发布、商业产品与赛事规则,以相关机构当年公开信息为准;本文不构成对任何产品性能或投资价值的判断。教程代码为教学示例,运行结果取决于软件版本与本地环境。文中的错误由本文作者负责。
2026 年 9 月
建议引用格式
良之(2026年09月12日).《人形,太人形的:从具身智能到 LoopString 的三个世界》. 良之笔记 — Liang.World. 检索于 https://liang.world/post/humanoid-all-too-human-loopstring