4 秒一只,还没停
发布第九天,这只鸭子的销售曲线依然没有放缓的意思。
![]()
爱范儿算过一笔账:预购五天突破 1 万台,平均每 4 秒就卖出一台。官网也悄悄改了口——"圣诞节前发货"不再保证,新下的单子估计要等到明年春天;
GitHub 上,主仓库 star 数破了 5.5k,专门用来练动作的训练仓库 microduck_rl 也拿下 1.3k。更有意思的是国内玩家已经不等发货了:有人从官方源码反向拆出装配图、CAD 和完整电控方案,做成复刻仓库;还有人做了浏览器里就能把玩的 3D 模型预览器;
社区里最活跃的项目是"教鸭子新才艺":跳霹雳舞、学小狗奔跑、做倒立。官方顺势成立了 THE FLOCK 社区——照这个势头,它的产品路线图大概率要由玩家来写了。
前两篇把"七个器官"、50Hz 循环和说 Rust 的大脑过了一遍,今天兑现上篇文章的预告,进入"神经和肌肉":
每 20 毫秒,信号是怎么从传感器一路流到电机的?
第 3 课:神经和肌肉,20 毫秒接一次
先把结论放在这:鸭子每 20 毫秒完成一次完整的"条件反射"——61 个数字进去,14 个数字出来。它全部的"思考",就这么大点。
![]()
要点一:鸭子的世界观,只有 61 个数字。
这 61 个数分三段,对应三种"感觉":
前 6 个是"内耳":陀螺仪 3 个(我正在以多快的速度歪)+ 重力方向 3 个(我现在歪了多少)。人的前庭出问题会晕到站不住,鸭子同理;
中间 42 个是"本体感觉":14 个关节各自的位置、14 个关节各自的速度、上一拍发出的 14 个动作。就是你闭着眼也知道自己腿在哪的那种能力;
最后 13 个是"指令":你推手柄给的速度(3 个)、想让它看的方向(4 个)、身体姿态(6 个)。
值得注意:走路这件事,摄像头、激光雷达、麦克风——一个都不参与。在鸭子的"运动世界"里,只有这 61 个数,再无他物。
要点二:全部"本能",装在 9 个小文件里。
仓库里有个 policies/ 目录,躺着 9 个 ONNX 模型:走路、站立、坐下起立、低头叼东西、左踢、右踢、轮滑、轮滑蹲、前滚翻。
每个文件都签着同一份契约:61 进,14 出,没有例外。
这些本能不是人一行行写出来的,是在 MuJoCo 仿真里用强化学习"摔"出来的。那走路和站立之间怎么切换?不看心情,看指令的速度大小:低于 0.05,站立网络接管;一过线,走路网络上位。
要点三:15 个电机,为什么只听 14 个指挥?
细数会发现差一个:鸭子全身 15 个关节,策略输出却只有 14 个。
被除名的是嘴。道理不复杂:嘴不参与走路,它只是个夹爪,不配进"步态俱乐部"。源码里专门给这个被跳过的位置起了名字(MOUTH_INDEX),并注明:这个省略是刻意的,不是哪天被人遗忘的差一错误。
为什么在这种地方较真?因为 obs.rs 的开头写着一句狠话:"这是整个代码库里风险最高的代码。"61 个数字里任何一个放错位置,程序不报错、不崩溃——你只会得到一只看起来一切正常、走两步就摔的鸭子。症状像调参没调好,病根是索引错了一位。
所以这套代码的哲学是:所有校验在加载时做完,不留给走路的时候。文件宽度对不上?趁鸭子还站着就报出来,而不是等它跑到第 60 拍摔给你看。
课末彩蛋:想看它走你自己练出来的步态,不用改一行 Rust 代码。在配置文件 robotd.toml 里把 walk 指向你自己的 .onnx 文件,重启服务即可。练砸了也不心疼——删掉配置,官方策略原样回归。
小任务(10 分钟)
打开 GitHub 仓库,进 duck-control/src/obs.rs,看文件最顶上那张 61 格布局表——今天这篇文章说的,就是那张表;
去 policies/ 目录数一数那 9 个 .onnx,对着文件名猜各自的用途;
带走三句话:61 进 14 出;嘴不在名单上;校验在加载时。
三篇文章下来,群里的画风已经从"围观一只鸭"变成了"拆解一只鸭":有人追问 Rust 所有权和电机锁的关系,有人晒出自己打印的零件,还有人真的把训练仓库跑起来了。
下篇文章我们看它的"眼睛"——在那颗只有 1GB 内存的 RK3566 上,一个小小的检测模型是怎么认出球、脚和激光点的。零基础的朋友能听个明白,写代码的朋友能挖到细节,都欢迎进来。
卡住了别一个人耗着,群里喊一声,总有人接得住。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.