热度还在继续
距离发布刚过去三天,这只鸭子的声量不减反增。
几个新角度,帮你理解它火得有多离谱:
同一周,北京在办第二届机器人奥运会,人形机器人们在跑道上冲刺、格斗、踢腿,视频刷屏全网。而大洋彼岸,全球科技圈讨论最多的机器人,却是一只只会摇摇摆摆走路、卖 399 美元的鸭子;
拉个价格参照:波士顿动力的机器狗 Spot 起价 7.5 万美元,大学实验室常用的同尺寸研究机器人普遍一两万欧元起。这只鸭子把入门价砍掉了两个数量级;
国内科技媒体这几天也开始跟进刷屏,讨论焦点已经从"好可爱"转向"这玩意儿的软件栈是真的能学"。
我们想在热闹之外,把"能学"两个字落到实处。上篇文章讲了四个知识点:七个器官、恢复路径、50Hz 循环、意图与安全层。今天往深处走一步,回答一个更根本的问题:
这 6.5 万行代码,是用什么语言写的?为什么?
第 2 课:鸭子的大脑,说的是 Rust
先说答案:不是 Python,也不是 C++,而是一门 2015 年才发布 1.0 的年轻语言--Rust。
为什么?三个理由,每一个都和"走路"这件事生死相关。
理由一:鸭子不能"卡顿"。
AI 时代大家默认机器人该用 Python 写。但 Python 有个致命伤:它靠"垃圾回收器"自动清理内存,而回收的时机不可预测--程序可能在你毫无防备时被暂停几毫秒甚至几十毫秒。
普通软件卡一下无所谓。但鸭子的控制循环 20 毫秒一帧,任何一次随机停顿都意味着传感器数据过期、指令迟到,后果就是重心失衡、摔倒在地。Rust 没有 garbage collector:每一块内存何时释放,在编译时就确定好了,运行耗时完全可预测。对硬实时系统,这是决定性的一票。
理由二:编译器当安检员,规则变成物理定律。
还记得上节课的第四个知识点吗--"谁都不能直接命令电机"。在代码里,这条规则是怎么落实的?
不是靠文档约定,不是靠代码评审,而是靠 Rust 独有的所有权机制:电机总线的"钥匙"被安全层独占持有,项目里任何其他代码想绕过安全层去碰电机,程序根本编译不过。
注意这和"程序员自觉遵守规范"的区别:前者是纪律,后者是物理定律。纪律会松,定律不会。
理由三:消灭"十亿美元的错误"。
空指针的发明人自己把它称为"十亿美元的错误"--无数软件崩溃的根源。机器人软件里一个没处理的空值,可能就是一次意外断电或失控。Rust 从语言层面取消了这个坑:函数可能失败就必须显式声明,调用者必须处理,否则--还是编译不过。
课末彩蛋:这 19 个代码模块像一盒乐高,全部装在一个"Cargo 工作区"里,一条命令就能构建整个项目。上节课的"七个器官",就是从这盒乐高里挑出来的七个。
课后小任务(10 分钟)
打开 GitHub 仓库
pollen-robotics/microduck,找到根目录的Cargo.toml文件,看一眼members列表--那就是鸭子的整盒乐高;记住今天的三个理由:没有垃圾回收、所有权锁死电机、强制处理失败。
我们攒的共学群,走的是"业余时间、步步为营"的节奏。群里有人提问、有人补充、有人凌晨还在翻代码--这种氛围,一个人对着屏幕是学不出来的。
下篇文章会进入它的"神经和肌肉"。不管你是零基础的好奇党,还是写代码的老手,进来一起聊。碰上卡点,群里总能凑出答案。
热门跟贴