一只黄色的小鸭子,从屏幕左边一扭一扭地走到右边,在桌沿停住,歪了一下脑袋。
八月中旬的一个深夜,我本来只是窝在椅子里漫无目的地刷外网的硬件社区,手指划到这段视频时停住了,然后又倒回去看了三遍。
它叫 Microduck(duck.fandcode.com),是 Pollen Robotics 和开源社区一起折腾出来的微型双足机器鸭,那阵子在外网的硬件圈子里火得一塌糊涂。二十来厘米高,圆脑袋底下踩着两只扁扁的脚掌,走起路来笨手笨脚的,又透着一股说不清的机灵。从大学起就没少跟舵机、开发板和 3D 打印机打交道的我,几乎是条件反射地冒出一个念头:我也想在书桌上养一只。
可惜它只在外网社区里流转,国内买不到现成的整机。想领一只回家,只能顺着开源图纸和物料清单,从零开始自己攒。
8 月 13 日:轮滑鞋
那天晚上我在备忘录里新建了一页,像模像样地写下标题,开始盘算这只鸭子的“落户计划”。
第一个跳出来的念头,居然不是它的步态怎么调,而是给它加点好玩的配件。看它迈小碎步的样子,我突发奇想:要是用 3D 打印机给它做一双迷你轮滑鞋套在脚上,让它在书桌的木纹上滑过去,该有多滑稽。念头一钻进脑子就收不住了。一颗真螺丝都还没摸到,我已经在笔记里写下“做一点小配件,3D 打印出来轮滑鞋”,顺手又琢磨起要不要把从采购到组装的过程拍下来,剪成几期连载视频。
后半页就彻底成了头脑风暴。我对着项目页面估算这一整套要花多少钱:十几颗串行总线舵机、主控板、传感器、电池,再加上打印耗材,还有大概率要交的“学费”。算着算着又飘远了:国内像我这样眼馋又买不到套件的人应该不少吧,要是把走通的流程整理成好上手的教程,甚至配一套零件包,好像也挺有意思?
(现在翻回去看那页上的数字,与其说是物料核算,不如说是一个深夜上头的工科生对着屏幕画的一张草图。)
8 月 16 日:仓库
真正让我冷静下来,是三天后的那个周末。
我老老实实打开 GitHub,把 pollen-robotics/microduck_rl 克隆到本地。比起备忘录里天马行空的轮滑鞋,仓库的目录结构诚实得多,也冷静得多。这是一个基于 MuJoCo 物理引擎和强化学习的训练仓库,一只双足鸭子从“三维模型”到“能站稳走两步”中间的每道工序,都明明白白摊在那儿:导出机器人的 URDF 和 XML 描述文件,配强化学习的奖励函数和观测空间,在仿真里摔倒、爬起、再摔倒成千上万次,等策略慢慢收敛,最后把训练好的 ONNX 权重部署到实机上,做 Sim-to-Real 的迁移。
我盯着那些环境依赖和仿真配置看了很久。滚轮往下滑,划过一排排关节限位参数和控制频率设置,前几天那种“买齐零件、拧紧螺丝就能走”的轻快想象,像肥皂泡一样,悄没声儿地破了。视频里那几秒憨态可掬的摇摆后面,原来压着这么多控制理论、机械公差和调参的硬骨头。
那天关掉终端,我没急着去下单那一堆舵机,也没把那页写满奇思妙想的笔记删掉。
先放在八月
我一直有点隐隐的执念,觉得只有从第一颗螺丝拧到最后一行代码、风风光光跑通的项目,才配写进博客。可翻着这页停在八月中旬的笔记,我又觉得这一段也挺值得留下的:深夜被一个新奇玩意儿点着,兴冲冲写下一堆改装点子,三天后翻完源码,才看清它真正有多重。折腾的日子里,这样的时刻其实比跑通的时刻多得多。
那只还没被打印出来的鸭子,连同它那双只存在于备忘录里的轮滑鞋,就先在八月的笔记里待着吧。等手头的事告一段落,书桌腾出一块空地,打印机的热床重新热起来,我们再见。