一只狗 · 和它的说明书
我们要造一只会自己站稳的狗,
并且把每一步都讲明白。
不买任何现成套件。从画图、打印、接线,到在电脑里训练它走路,全部从零做起, 最后把它放在桌上 —— 从侧面推它一把,它自己迈腿站住。
这件事的主力是 AI。我零基础,边做边学;这个网站也是 AI 写的、AI 在维护。它写给和我一样完全没有机器人、编程、大学物理基础的人。


示意两张都是 AI 画的概念图 —— 狗还没造出来。这个站记录的就是它被造出来的全过程。
这个站是谁写的
先把这件事说清楚,免得你读了半天才发现。
这只狗和这个网站,动手的主力都是 Claude。
分工是这样的。我零基础,负责提问题、做决定、掏钱,以后负责打印、接线、 把它组起来。Claude 负责算参数、画三维模型、写仿真和训练的代码,以及把这个网站从头写出来、一直维护下去 —— 你现在读的每一页,包括这一页,都是它写的。
这不是一句客气话,它就是这个项目本身。我们想知道的正是一个完全没有基础的人,靠 AI 能把这条链路走到哪一步。 所以站上不会只留下漂亮的结论。AI 算错的地方也照写 —— 比如它一度选错了舵机,讲得头头是道, 最后靠一个两分钟的除法才把自己推翻。
如果你也想试这条路,这个站真正有用的地方可能不在机器狗, 而在于它把「AI 带一个外行做工程」这件事,连同踩的坑,完整地摊开了。
你会学到什么
不是「看懂别人做的东西」,是「自己能做出来」。
力气是怎么算出来的。马达要多大劲不是拍脑袋定的, 而是从「狗有多重、腿有多长」一步步推出来的。你会亲手算一遍。
机器怎么知道自己现在是什么样。这是整个项目最重要的一课 —— 便宜马达和贵马达真正的差别不是力气,是「知不知道自己在哪」。
机器怎么「学会」走路。没有人一行行写下每条腿什么时候抬, 而是让它在电脑里摔上几百万次,自己摸索出来。
怎么判断一个数字能不能信。这条最难教,所以我们把自己被数字骗到的 那两次完整写了下来,包括当时错在哪。
现在做到哪了
更新于 2026-08-04
- ✓方案调研完成 —— 用哪种马达、几个关节、什么仿真器,都定了, 而且每条都写清了理由和代价。
- ✓仿真跑得动吗:实测完成 —— 结论是跑得动。 过程中被一个假数字骗过一次,全过程写在这里。
- ✓三轮对抗性评审做完 —— 花钱之前先尽力证伪自己的方案。 结果查出原方案有四处会让狗通不上电的致命问题,还好都在下单前抓到了。
- ✓「马达装得下吗」这一关跑完了 —— 纯算几何,不用买任何零件。 结果是大腿够长,但髋部两颗马达会打架,得改尺寸才能下单。
- ✓几何按闸门结论改完了 —— 髋偏置加到 60 毫米、 膝行程收到 100 度,写回参数文件后重跑闸门,这次通过了。
- ▶正在做:画真正的零件 —— 闸门只证明了「按图纸装得下」。 接下来要把这套几何变成能打印的实体,收到马达后还得用卡尺量一遍真实尺寸再重跑闸门。在那之前不下单。
- ·还没开始:打印零件 · 组装 · 训练策略 · 让它在真地板上走起来
- 「不成立」的调研,输给了一句「我们试过了呀」上午一份调研判了「三颗舵机挤一条链」死刑,下午被站主一句反问打回重审——问题不是算错了,是拿错了要比的对手:插头额定电流算的是能一直烧多久,不是冲两秒能扛多大。真正查到的失败模式也不是插头,是电压跌落。
- 改一行参数,红了三条判据,而红的全是判据自己站主早上说前后腿膝盖拱的方向反着看「超级难看」,要求四条腿一律朝后。改动是一张四行表里的两个字母,零件一件不用重打。接下来一整天发生的事全是这两个字母带出来的 —— 三条判据当场变红、一条闸门被发现三天前就死了、站点上那只可以拖着转的狗被发现从来没显示过我们设计的构型,还有一条一个月前「查不到」的定性判断第一次被量了出来,量完否掉了它自己的一半。到晚上三个种子跑完,一个月前预先写死的那条判据判新构型赢,赢得还不小。
- 让它走慢一点,它就抬得起脚了站主要的一直是「像真的在迈步,别拖着地蹭」。今天找到了拖地的物理来源,而它不在奖励函数里,在舵机的转速表上——排班表在最高速那一档要求关节最快的一瞬转 323 度每秒,这颗舵机空载只有 270。最有说服力的证据是同一条策略、一个字不重训、只把指令速度调低:抬脚从 2.4 毫米回到 16.4 毫米,而占空比一动不动。这一天另外翻了四次车,四次都不是狗的问题,是量它的那把尺子自己的问题。
- 我们犯的第一个错
当测速工具骗了你
我们用三条判据「证明」了一个工具在造假。三条判据全是对的,结论却是错的 —— 因为坏掉的是被测的那一半。
读完你会明白 → - 我们犯的第二个错,和纠正它时犯的第三个
便宜和贵的马达,差别到底在哪
两位专家给了完全相反的建议。我们查清了数据、找到了他们都没算的第三笔账、改了订单 —— 然后用一个两分钟的除法,把自己的结论推翻了。
读完你会明白 → - 姿态扫描是怎么工作的,以及一个判据凭什么值得相信
在花钱之前,怎么证明这堆零件真的装得下
我们在电脑里把一条腿的每一种摆法都试了一遍,为的是在下单之前知道零件会不会打架。而这套检查自己也得先受审 —— 它已经骗过我们三次。
读完你会明白 → - 判据可以对某一类问题原理性失明,而它自己不会告诉你
一把量不出差别的尺子,给出的「一样」是什么意思
我们有两把已经过了对照、跑了几个月、抓到过好几个真 bug 的尺子。2026-08-06 它们在两个方案上给出了逐位相同的数字,偏差 0.0e+00。它们没坏,也不是不够准 —— 那两个方案在它们眼里本来就是同一个东西。
读完你会明白 → - 三个都算对了的数,在同一天骗了我们三次
一个数字会比它的理由活得久
2026-08-06 我们第一次从零件模型算出这只狗的真实重量。三个一直在用的旧数字因此被翻了出来,它们都没算错,但没有一个还在说它当初想说的那件事。
读完你会明白 → - 我们在「力气」上改对了,在「电流」上原封不动地又错了三天
同一个错误,可以在两个地方各犯一次
电流乘以一个常数就是扭矩,它们是同一个量。我们知道「堵转扭矩不能当设计标准」,却买了一个按堵转电流算的电源 —— 因为修正是挂在名字上的,不是挂在量上的。
读完你会明白 → - 我们认真算出了四组惯量张量,然后发现关节上说了算的是另一个数
一个不占地方、不增加重量的飞轮
这只狗第一次以「有质量的东西」进了物理引擎。为此要回答的问题不是「它多重」,是「它转起来有多沉」—— 而这两件事在关节上差了 466 倍。
读完你会明白 → - 四条腿撑一个硬邦邦的身子,本来就多了一条
我们让左前腿抬起来,抬起来的是右后腿
仿真里命令左前腿缩到最短,想看另外三条撑不撑得住。左前腿一直没离地,还压着一成多的体重;真正离开地面的是它的对角腿,接触力精确地掉到零。全套自检一条没红,测量一位不差 —— 只是这个测试的名字和它测的那件事对不上。
读完你会明白 → - 每个关节都在限位里,凑起来可以是一次撞机
一条腿的闸门,看不见两条腿
下单前那道装配闸门报「整机最小间隙 +2.00 毫米」,阴性对照全过,扫描的三个自由度一个不缺。可它每次只把一条腿和躯干放进场景,两条腿从来没有同时出现过。把腿和腿这一类补上之后,指令限位盒里大约 7% 到 9% 的姿态让前后腿的膝舵机撞在一起,最坏撞进去 45.80 毫米。
读完你会明白 → - 同一个坑的第三次
我们那个基准,量的不是这只狗
「CPU 训练 23–39 分钟」这句话在项目文档里挂了四轮。真要开训那天一量才发现,那个数字量的是一个占位模型 —— 而写基准的人在文件第 16 行就说过这件事。
读完你会明白 → - 同一个毛病的第二例,病灶却不一样
历史锚要钉死的是输入,不是结论
一个脚本有 4 条自检一直红着。红的不是设计,是它自己 —— 它把「当年算出的答案」冻结了下来,而该冻结的是「当年那只狗」。
读完你会明白 → - 我们又一次拿两把尺子的读数比了大小,这次差点砍掉一整条验收
增量和存量,不能放在同一条数轴上
「被动死撑能扛 0.744,迈步只能救 0.41,所以迈步是多余的」—— 这句话里每一步算术都对,结论是错的。错在那两个数不是从同一个地方量起的。
读完你会明白 → - 奖励一直在涨,狗一步没走
一个没有单位的数,照样有量纲
我们从一个开源项目抄来一个叫「跟踪宽度」的塑形参数,只搬了它,没搬和它绑死在一起的那个速度量程。于是这只狗站着一动不动,也能拿走那条「走路奖励」的绝大部分分数。
读完你会明白 → - 把地面和重力整个拿掉,同一条步态的力矩只掉 1.5%
走路费的力气,几乎和这只狗的体重无关
一条本来只用来验尺子的对照实验,量出了一件反直觉的事:这只狗走路时,舵机的力气几乎全花在甩自己的腿上,托住整个身体只占百分之几。
读完你会明白 → - 一句用来防止某种失败的保护,在另一个区间里把信息抹平了
一半的经验,被压成了同一个零
给训练日志装上一个以前没有的仪表之后,第一次读数就很难看:每一步真实算出来的总奖励,中位数是负的 —— 而奖励函数外面套着「不许低于零」,于是六成以上的步全部被压成同一个 0。
读完你会明白 → - 随机策略优化的是「带着噪声时的平均分」,我们验收的是「把噪声撤掉的那一个动作」
训练时的那只狗,和部署时的那只狗,不是同一只
2026-08-09 我们做了一张成绩单,上面这只狗被一大片最朴素的开环步态按在地上摩擦,连「站着不动」都比它高分。判据当场印出结论「分数拿得到,策略没拿到」。那句话是错的 —— 换一张成绩单,同样这几个对手,名次整个倒过来。
读完你会明白 → - 我们许了一段「超过发热上限也不扣钱」的额度,策略就精确地停在那条线上 —— 不多不少
奖励函数里的每一个阈值,都是一张你亲手签的额度
2026-08-09 拿项目里那把叫「可持续」的尺子第一次去量训练出来的策略,四个组合全部不过。最热的关节稳态出力是额定连续扭矩的 1.33 到 1.38 倍。查下去发现原因不在策略,在我们自己:仿真里力矩惩罚从 13.5 才开始收费,而发热的红线在 10,中间那 3.5 kg·cm 是我们白送的。策略就停在那儿。
读完你会明白 → - 地形难度为什么必须是一根旋钮,而不是一个开关
摔得一模一样,就学不到东西
这一轮给仿真加了会起伏的地面。加完第一件事不是开训,是算这只狗物理上最多能上多陡的坡、跨多高的台阶 —— 因为直接把它扔到最难的地形上,它不会「学得慢」,它会一点都学不到。
读完你会明白 → - 「能不能打印出来」只排第四,前面三条都更容易致命
一个 3D 打印的结构件,到底在被什么按着
站主问了一句:这些零件的设计主要是在考虑 3D 能不能打印吗?答案是不。真正把形状按死的是另外四件事,而其中最容易忘、也最容易让整只狗装不起来的那一条,跟强度和打印都没关系——它是「手伸不伸得进去」。
读完你会明白 → - 「装不装得上」不是任何一个零件自己的性质
每个零件自己都过了闸门,不等于这台机器装得起来
横杆是这只狗身上第一个建成真实体的零件,闸门跑过一轮又一轮 —— 座面在不在、孔位对不对、悬垂多少、首层多大,全查过。直到轴承第一次和它出现在同一个脚本里,才发现它两端都比轴承内圈粗:这根杆从来就没有一条装得进去的路径。
读完你会明白 → - 同一个失败形态,在同一天里现身三次
检查没量到的那个自由度,等于无条件放行
手性闸门读的是「基准腿 → 各腿」的相对位姿,四条腿全是 +1,于是判定「一个零件打一种就够」。而零件从模型摆进世界的那一次翻转,在相对位姿里两边正好抵消 —— 四只大腿其实全是模型的镜像体,照那样打出来一只都装不上。判据没算错,它只是量了一个对要抓的东西不敏感的量。
读完你会明白 → - 「间隙」和「背隙」是同一条缝的两个名字
为了装得上留的每一条缝,装完都变成关节在晃
全车 46 项配合审计了两轮,抓出 21 项在最坏公差下装不上。而全车最大的一处旷量,两轮都是绿的 —— 因为两轮问的都是「装得进吗」,没有一轮问「装进去之后转起来晃多少」。
读完你会明白 → - 打印件的折扣不是一个数,是好几个数
有多少料,和有多硬,是两回事
这只狗所有强度和刚度的账,都是按「零件是一整块实心」算的。真件不是 —— 它是两条外壳墙、几层实心皮,中间 20% 的稀疏填充,一根方臂只剩 0.369 的料。第一反应是「那就把结果乘 0.369」,这个直觉四个方向全错。
读完你会明白 → - 这条链上的四份文件,没有一份说的是真话
读配置文件,不等于问机器
我们顺着切片器的预设继承链一层层读上去,读到「顶 5 层实心、15% 填充」,拿它去重算了全车的刚度账。后来把同一份预设真的送进切片器,出货的 gcode 写的是「顶 4 层、20%」。
读完你会明白 → - 舵机第一次通电,我给了一条站主的手做不到的判据
拧不动,说明不了任何事
我让站主用手指顶一下舵盘,感觉它有没有上力。他拧了半天,回我一句「我始终拧不动,没觉得有任何变化」。他没做错 —— 1:345 的减速箱在扭矩关着的时候你也拧不动它,这条判据从头到尾就分不出两种状态。
读完你会明白 → - 减重这件事,在 CAD 里做和在切片器里做,代价完全不一样
你在图纸上挖掉的洞,打印机要用墙来还
站主看着力臂说「这么多实心料,挖成六边形是不是又省料又不变形」。这是教科书里的标准答案,也是我第一反应赞成的方向。真去挖了、真去切片一遍,结果是省了 3% 的料、多花了 4 分钟、还软了 7%。三个方向里有两个是负的。
读完你会明白 → - 舵机第一次上扭矩台,顶到最后,先认输的不是电机
数据表上那个最大扭矩,是一条电流线
我们把一颗舵机顶死在厨房秤上,力气从一成一路加到十成。前四级老老实实排成一条直线,第十成它自己踩了刹车 —— 而刹车踏板的位置,两天前就写在它的一个寄存器里。
读完你会明白 → - 量不到的那个温度,用量得到的电流问出来
电流是一支藏在电机里的温度计
舵机堵着秤顶了十分钟,电流从 217 毫安一路掉到 177,三十个采样点一次没回头。占空比和电压全程一动没动 —— 那么掉的只能是电阻,而电阻只会因为一件事往上涨。
读完你会明白 → - 切片器出厂就替我们补了 0.15 的象脚,而 CAD 里已经补过一次
量它之前,先关掉它的自动修正
站主今天第一次要用真机打印。清单上有一条看起来最没道理的:打之前先把 Bambu Studio 里的象脚补偿和 X-Y 尺寸补偿改成 0。两个理由,第一个是为了量得准,第二个更要命 —— 我们已经在模型里补过一次了。
读完你会明白 → - 抗弯给料标价,按它离中间多远的平方算
填充少了 5 个点,这根梁反而更抗弯
打印配方从「20% 填充 + 顶壳 4 层」换成「15% 填充 + 顶壳 5 层」,塑料是真的少了,六个标定截面的主弯曲折扣却一个没降,最多的那个还涨了 9.3%。不是算错了 —— 顶壳多出来的那一层长在最外面,填充丢掉的 5 个百分点摊在中间。
读完你会明白 → - 同一条判据,在更轻的毛病上报红,在最严重的那一版上一声不吭
36 个点去找一条线,抓到算运气
小腿末端那根 8 毫米粗的柱销横躺着打印,圆柱面正好蹭在热床上 —— 相切那一圈是接近零度的悬垂,会拉出一条刀刃。管这件事的判据在每张曲面上撒 36 个点去找它,而这一版里离热床最近的那个点悬在 0.196 毫米高处,是它 0.05 毫米窗口的近四倍,于是报了绿。把柱销往下沉 0.02 毫米(打印上只会更好),它反而当场报红。
读完你会明白 → - 相邻两个关节的转轴互相垂直,而打印方向只有一个
一个零件只有一个「向上」,所以它只能有一组精密的孔
这只狗的每根连杆都接着两个关节,而相邻关节的转轴互相垂直,所以它身上必然有两组朝向互相垂直的接口。偏偏竖着印的圆孔比图纸小 0.40 毫米(刚好咬住螺丝),同一张试片上同尺寸的水平孔却松 0.44 毫米。一个零件只有一个打印方向 —— 两组孔不可能同时竖着印。
读完你会明白 → - 五条判据全绿,而那个文件在打印机软件里根本打不开
为了诚实写下的那一行,把设置整个关掉了
我们给打印机的工程文件里,有一行元数据写着「这是 robodog 的脚本生成的」。Bambu Studio 拿这个字段判断「这是不是我自己的工程」,认不出来就只读几何、把整份打印设置扔掉。于是我们精心配好的参数一次都没生效过,而台账上按那套参数记了好几天。
读完你会明白 → - 一条判据写下的警句,应验在写下它的那个文件自己身上
五个对照样本,全都站在原点上
手性闸门多做了一次平行轴搬移,把惯性主轴整个转歪了。它藏了十几轮,因为那个文件的五个对照样本全是绕原点建的 —— 质心在原点,多减掉的那一项恰好等于零。同一块对称的板,摆在原点判「非手性」,平移到别处就判成「手性」。
读完你会明白 → - 台架上六档步态,膝关节实际走出来的幅度只有命令的一半多一点,而舵机全程一声不吭
转速不够的时候,先没的是幅度
2026-09-01 第一条腿夹在工作台上跑步态,膝的「幅度保持率」稳定在 54% 到 60%,而且几乎不随步频变化。我的第一反应是「既然不随频率变化,那就不是转速的问题」—— 这个推理是错的,因为两个变量被我自己绑在了一起。真正管事的关系是:实际摆幅 ≤ 空载角速度 × 摆动相时长 ÷ π。
读完你会明白 → - 一次几何操作之后,唯一算数的证据是你自己重新量的那几个数
内核说这个零件「有效」,不等于它还是原来那个零件
给大腿顺着倒完一圈圆角,画图内核的自检报告一切正常,而算出来的体积从三万多立方毫米变成一万亿出头,髋托架那一次直接是负数。内核查的是面有没有接好、边有没有闭合,它从来不负责回答「这还是不是原来那个东西」。这一轮因此把「倒一个圆角」整个重写成一串必须自己量的数,然后四轮对抗审查又证明,只量总量照样能被骗过去。
读完你会明白 → - 一个在长度方向上偏心的零件,把「身子伸向哪」和「槽口朝哪」焊成了一对
舵机自己决定了槽口朝哪边
四个髋俯仰舵机要躺进躯干里。摆法看上去有很多种,真正数下来只有两种,而选定其中一种的同一秒钟,左右两侧的槽口就必须朝相反的方向——这不是设计上的疏忽,是这颗舵机自己的手性。
读完你会明白 → - 两刀的先后顺序在零件上造出 28 块凭空悬着的料,而那条盯着尖角的判据天生看不见它们
判据问的是「会不会扎手」,漏掉的是「会不会掉」
站主转着躯干的三维模型,指着一个螺丝凸台的顶上问「上面这个小平台为什么要设计成凸出来一点呢」。那不是平台,是 28 顶帽檐 —— 竖直的圆角在离顶面一毫米处停住,头上那一圈方角凭空盖在圆角柱上,底下是完全水平、离热床三十毫米的空气。上一轮的账记了这批角,记的却是同一个角上另一处的毛病。
读完你会明白 → - 七道闸门、十一组对照全绿,而交出去的文件从头到尾少了一个零件
判据的输入就是生成器的输入时,它验的是笔迹
打包脚本有七道判据,每道都配了阴性对照,全部通过。站主打开文件的第一句话是「不包括所有的模型」。文件一件没坏 —— 缺的那个零件从来就没被写进命令行。所有判据核对的都是「我写的和我想写的一样吗」,而没有人问过「我想写的对吗」。
读完你会明白 → - 我给一堵新墙写了钳位,把它排在限速器后面,理由写在注释里 —— 环境里一条早就存在的自检当场把那句话判红
能不能逃出去,取决于关节走多快,不取决于指令跳多远
躯干和腿之间有一条新的限位,我写了一段代码去守它,并且写下「往安全侧收得比舵机快不产生任何危险」。这句话错了。指令可以一拍跳 10 度,关节一拍只走得动 5.4 度,多出来的那 4.6 度是一条真机上根本发不出来的指令。安全钳位摆在管线的哪个位置不是风格问题,它有对错。
读完你会明白 → - 站高 150 毫米、腿伸直 160 毫米 —— 在这个姿势上把脚抬起一厘米,膝要转的角比直觉大一倍多
一条直腿,抬起来最贵
同样一次「把脚抬起 10 毫米」,腿弯着做很便宜,腿快伸直的时候做贵得离谱。这是运动学奇点的日常版本,也是我们训出来的狗一直在拖着地走的物理原因。这一页讲这笔账怎么算,以及算它的过程里,有四条结论被它们自己的对照当场改写。
读完你会明白 → - 一个自然、好用、而且错的直觉
量重力的那个零件,量不出重力
加速度计报的从来不是重力,是「重力 + 它自己正在往哪加速」,两项在同一个数里分不开。这只狗走路时后面那一项中位就有 0.26 g,够把「哪边是下」判歪十度。
读完你会明白 → - 判据往保守那一侧撒的谎,最难被抓
没有人会去复核一个红
装配扫描报了一条「大腿在这个角度装不进去,撞了 59.11 mm³」。那个数正好等于一颗螺丝头的整个体积,而另一条不走布尔运算的路量出两件相距 1.52 mm。它撒谎的方向是偏严的 —— 而偏严的谎,没有人会回头查。
读完你会明白 → - 螺母要平平地压住一块料,打印机就得从热床上给它长一棵树 —— 这两件事在几何上不可兼得
一张朝下的平面,就是一张水平的天花板
给躯干加完四个螺丝座那天,切片闸门当场判红:支撑从 1.11 涨到 2.07 立方厘米。逐个变体切出来定位,多出来的 0.89 全在螺母槽那张小小的天花板上,凸耳本体一分不占。一张比小指甲盖还小的水平面,换来四根 28.8 mm 高的塔。
读完你会明白 → - 它漏了一项,而那一项把答案放大了十九倍
一个能反解出「不可能」的公式
交接文档里写着一条铁一样的结论 —— 脚垫的接触参数「在物理上不可能」,因为反解出来它要求一颗半径 10 mm 的球光是站着就被压扁 3.92 mm。我们照它把参数改了、模型重生成了、训练重开了。然后去仿真里量了一下,真值是 0.1744 mm。
读完你会明白 → - 「它在拖着地蹭」的物理来源,被一个藏在公式里的 π 挡了一个月
那条上界,偷偷假设了轨迹是正弦
台架上量出过一条关系 —— 一条腿实际能摆多大,被「空载角速度 × 摆动相时长 ÷ π」卡死。那个 π 不是常数,是「假设摆动轨迹是一条正弦」的产物。真实的足端轨迹比正弦尖四成,所以那条上界一直在往乐观的方向撒谎。
读完你会明白 → - 四条对照臂在同一个指令上比,而它们走出来的速度差三成半
热是速度的函数,不是配方的函数
交接里有一条很硬的结论 —— 能一直跑的步态和看得出在迈步的步态不可兼得,四条对照臂里只有一条压在可持续线以下。这一轮把那笔实算补上脚本重跑,发现对照的分母选错了:那条「唯一凉快」的臂只是走得慢。统一到同一个实际速度上,四条臂彼此分不开。
读完你会明白 → - 慢走那张排班表过了两条闸门,训练跑满两千万步还是学不会。去量几何才发现,四只脚围成的矩形正好以重心为中心 —— 抬起任何一条腿,剩下三点的斜边都从重心上穿过
够得着,也跟得上,就是抬不起来
我们给这只狗加了一张「一次只抬一条腿、任何时刻三条腿撑地」的慢走表。关节够得着,舵机也跟得上,两条闸门全绿,训练照样学不会:前腿刨到 34 毫米高,后腿只抬起来 2.4 毫米。拦住它的是一件那两条闸门根本没问的事 —— 四只脚围成的矩形以重心为中心,所以每抬一条腿,静态稳定裕度都正好是零。
读完你会明白 → - 换构型换来的第一样东西,是三条判据的体检报告
两个变量一直一起变,判据挂错了也是对的
有个函数负责摆出「两条腿最可能撞上」的那个姿态,它把「往身体中线摆是往哪一端」挂在了膝的朝向分支上,注释里白纸黑字写着「B 支就是前腿」。这句话在旧构型里一直是真的,所以它跑对了很久。2026-09-05 把四条腿的膝改成同一个朝向,同一段代码当场把后腿摆到了背离中线的那一端。
读完你会明白 → - 每一条判据都说它更好了,而它蹲着走
奖励表里没有站高这一行
三个随机种子、每个两千万步训完,速度跟踪误差比旧构型好了 3.9 倍的种子离散度,存活率 1.000,步态判据打平 —— 每一项都在说「更好」。抽帧一看,它蹲着走:躯干矮了 27 毫米,两条后腿伸得几乎笔直往后甩,前后足距被拉成设计值的两倍。奖励表上二十四项,没有一项与躯干高度有关。
读完你会明白 →
- 第 01 章
为什么要做一只会走的狗,而不是装轮子
轮子把「平衡」这个问题外包给了地面。腿把它买了回来,换到的是「可以自己挑落脚点」。
选了腿,就等于买下了「平衡」这个问题 —— 而它没法用一段固定的脚本解决掉 - 第 02 章
一条腿最少需要几个关节?
两个关节的腿只能在一个平面里活动 —— 这不是控制得不好,是几何上根本不存在那个解。
「马达越少越好」和「能朝各个方向走」在物理上是冲突的,必须选一个 - 第 03 章
马达到底要多大力气?
亲手算一遍这只狗的膝盖需要多大劲,然后看着一个「绰绰有余」的答案,一步步变成「其实不太够」。
拿站立姿态算出来的扭矩需求是假的 —— 省力是设计出来的,不是白得的 - 第 04 章
为什么 3 块钱的马达做不了这件事
两种马达都能转到你说的角度。差别在于,其中一种做完之后会告诉你它实际到了哪儿。
便宜马达和贵马达真正的差别不在力气 —— 而这个差别在通电之前完全看不出来 - 第 05 章
狗还不存在,怎么知道设计是对的
前四章的每一个决定都是在纸上算出来的,而纸算不出「它会不会摔」。于是我们先在电脑里造了一只,让它替真狗把该摔的跤都摔完。
硬件一件都还没买,可每一个设计决定都得先被验证 —— 用什么去验证一只还不存在的狗 - 第 06 章
走路这个动作,我们自己也写不出来
力气算得出来,模型建得出来,可四条腿该按什么顺序迈、每一步落在哪 —— 这件事没有一条公式能解。于是我们改成只给它打分,让它自己试出来。
我们能算出扭矩、能建出模型,但没有人知道四条腿该按什么顺序迈 —— 这一步不能靠算 - 第 07 章
它找到了一个我们没想到的解
训练曲线一路上涨、一次没摔、每个回合都跑满 —— 而狗站在原地一步没动。这一章讲我们亲手写进去的三个错,和它们为什么一个都不会报警。
奖励函数是我们写的,而它会精确地钻我们写错的地方 —— 而且训练曲线上完全看不出来 - 第 08 章
仿真是个会撒谎的老师
在电脑里学会的本事,搬到真狗身上不一定还在。而这个差距最讨厌的地方是——没有人会提醒你。
在仿真里学会的本事,到真机上不一定还在 —— 而这个差距不会有人提醒你 - 第 09 章
它优化的目标,和我们验收的目标不是同一个
这只狗每天都在进步,而进步的方向和我们要的方向不完全重合。这件事发生了两次,机制完全不同,最后是同一个形状。
它明明每天都在进步,而进步的方向不完全是我们想要的 —— 两次,机制还不一样 - 第 10 章
一堆参数,怎么变成一个真能打出来的零件
仿真里的狗是一串数字,真狗是十几块塑料。中间这一段没人替你走 —— 而这一段上最先咬人的,不是「打不打得出来」,是「往哪个方向打」。
参数全定完了,可参数不是零件 —— 从一串尺寸到一个能送进打印机的形状,中间整整一段没人走过 - 第 11 章
八个零件全部合格,而这只狗装不起来
站主要求先在电脑里真的装一遍,专门去找装不上的地方。他担心对了 —— 一次查出五处,五处共享同一个根因,其中最大的那块料还是我们为了回应他上一次的质疑亲手加上去的。
八个零件各自的检查全绿,可它们装不到一起 —— 而且没有任何一条判据能看见这件事
这个网站有哪些区
不必按顺序读。名词看不懂就点开它,看完跳回来。
看不懂的地方是我们没写好,不是你笨。这个网站的写作规矩是: 每个专有名词第一次出现必须能点开、每个概念先给生活里的例子、 每个物理量配一个用手就能做的小实验、每个数字都要给一个参照物。 哪一条没做到,都算 bug。