Learn Robotics Programming — 全书拆解¶
30 秒导读: 这是一本「带你从零造一台机器人」的实战书—— 一块树莓派、两个电机、若干传感器,十七十八章之后,你手里是一台 会避障、会认路、会定位、会看脸、听得懂话的机器人。 它真正的价值不在某个零件,而在两条暗线: ① 「感知 → 思考 → 行动」这条回路怎么逐层闭环; ② 一套自建的 MQTT 服务架构,让硬件、行为、网页、语音全部说同一种消息语言。
本组文档是我们重写的完整拆解,十九章。读完不必看原书。
1. 先交代清楚:这是谁在什么时候写的¶
| 作者 | Danny Staple——英国机器人爱好者、orionrobots 主理人,Pi Wars 参赛者,序言作者 Kevin McAleer 称之为「有教学天赋的人」 |
| 版本 | Packt 第三版,2026 年 5 月(2018 年首版,2021 年二版) |
| 定位 | 面向「会一点 Python、想碰硬件」的 maker / 教育者 / 爱好者 |
| 硬件口径 | Raspberry Pi 4B + Inventor HAT Mini + 商用零件套件(2025–2026 年的市场快照,书里自己提醒型号会过时) |
两件影响阅读的事,先说在前面:
第一,这是一本「工程纪律」浓度极高的入门书。 别的入门书教你让电机转; 它先教你为什么代码不能住在机器人身上(Git + 自动部署)、 为什么硬件要包成服务(换零件不改行为)、为什么参数要进配置存储(调参不重新部署)。 这些「不性感」的章节占了全书近三分之一——它们恰恰是这本书区别于玩具教程的地方。
第二,AI 在本书是「工具」,不是「主角」。 人脸检测、语音的识别与合成, 用的是三个现成的模型——靠大量例子训练出来的「认图认声」机器,下载即用,本书不训练, 第 14、16 章展开。而定位、避障、循线这些核心智能,全是经典算法: 比例控制、PID、蒙特卡洛滤波,直接写出来的数学。书里明说,连「用 AI 循线」都 「当时没有更划算」——这份克制是可信度的来源。
2. 全书一条主线(读完这一节,你就懂了这本书)¶
这本书是一条从头贯到尾的推理链:每一步都是被上一步的缺陷逼出来的。 不看后面任何一章,只读这一节,你就能把这本书讲给别人听。
① 什么是机器人:一台自己拿主意的机器¶
机器人 = 根据传感器输入自主做决定的机器——它和遥控玩具的分界线是「自主」。 拆开看,一切机器人都是三个方块:感知(传感器)→ 思考(控制器)→ 行动(执行器), 行动的结果又被感知读到,转成一个圈——这个圈叫反馈回路,是「自动」二字的全部机制。 (第 01 章)
② 造一台,先要「想得清楚」:方块图 → 零件清单¶
动手之前先画两张图:硬件方块图(什么零件、怎么连)和软件方块图(代码分几块、谁调谁)。 原则是从「这台机器人要干什么」反推零件,再用一票硬条件(能跑 Python、有 Wi-Fi、 带摄像头接口、供电 3 安培……)过滤候选。在纸上犯的错,不用花钱。 (第 02 章)
③ 让机器人「离得开人」:无头化¶
机器人不可能拖着键盘跑。解法是把树莓派配成无头(headless)系统: 不接屏幕键盘,系统烧进 SD 卡时就把 Wi-Fi、主机名、SSH 密钥预置好; 开机后通过网络远程操作。这一步顺便逼出了一个更深的设定——机器人必须学会自主, 因为你根本来不及敲命令。(第 03 章)
④ 让心血「丢不了」:代码的三个保险¶
几周写的代码,一次断电就全没。三层防线:代码住电脑上、机器人只收副本; Git 记下每次改动、改坏了能回滚;部署写成幂等脚本,SD 卡报废也能一键重建。 (第 04 章)
⑤ 接通「行动」:先让轮子转,再把轮子包成服务¶
电机通电容易,书里却在这里踩了一脚刹车:直接调电机的代码,换个驱动板就得重写。 于是把电机包成一个 MQTT 服务——行为代码不再碰硬件,只发消息 (「左轮 80%、右轮 40%」)。从此硬件换不换、行为都不用重写; 手机、网页、语音,谁都能发同样的消息。(第 05、06 章)
⑥ 给人留接口:开机自启 + 手机网页¶
服务要开机自己跑(systemd),状态要用一颗 LED 喊出来(「我好了」); 控制界面不装 App、用网页,摇杆推一推,机器人满场跑。 再加一个「启动器」服务,网页上的按钮就能指挥所有行为。(第 07 章)
⑦ 闭环第一圈:从「看不见」到「会躲墙」¶
接上距离传感器,机器人第一次「感知世界」。第一代避障是开关式的 (近了就急转,术语叫 bang-bang);第二代把转向力度做成距离的连续函数 (比例控制)——动作平滑了,但引出了新的病:振荡。 这本书对待病症的方式值得注意:不藏,先让你看见(数据曲线),再留到后面治。(第 08、09 章)
⑧ 治「走了多少」的病:编码器 + 闭环控制¶
时间驱动的机器人永远走不直——电机有差异、地面会变、电池会旧。 编码器把「轮子转了多少」变成数字,再换算成毫米;然后请出控制工程的瑞士军刀 PID 控制器:目标速度 − 实测速度 = 误差,误差喂给控制器,输出新的电机功率。 于是「走一米停」「走直线」「转 90 度」从许愿变成可复现的动作。 (第 10、11 章)
⑨ 治「我在哪」的病:不计算位置,而是养活一堆猜测¶
蒙特卡洛定位的思路一反直觉:机器人不去「算」自己在哪,而是同时养活 几千个「我可能在这」的猜测,让编码器数据推着它们走、让场地边界当裁判打分, 按分数重新抽签——好猜测被复制,坏猜测被淘汰。几轮下来,猜测聚成一团的地方, 就是它最可能在的地方。(第 12 章)
⑩ 给猜测更多裁判:每个传感器都是一个「观测模型」¶
边界裁判太苛刻(非内即外),机器人不开到墙边系统就不收敛(猜测聚不成团)。 于是给距离传感器建一个概率场裁判:把墙抹成高斯模糊的山脊, 每个猜测按「假如我在这,传感器该看到什么」打分,两个裁判的分数相乘—— 收敛从几分钟缩到二十秒。 同样的思路用到运动上:编码器里程与 IMU 航向按 7:3 互补, 各补各的短板。(第 13、17 章)
⑪ 更高级的感官:摄像头、耳朵¶
摄像头给机器人「眼睛」:神经网络认脸、颜色管线认物,检测数据走老规矩—— MQTT;两个 PID 把「脸在画面左」变成云台的转动。循线是整条链的毕业考: 图像管线(在电脑上离线调好) + 三项俱全的 PID,机器人沿黑线自己跑完全程。 语音让机器人「听得懂、会说话」:唤醒词 + 限定词表(识别器只许输出的词清单)的本地识别, 命令表一查,发 MQTT——语音没有特权,只是又一种遥控器。(第 14、15、16 章)
⑫ 走出去:还债、入圈、再造一台¶
最后一章先还安全债(密码明文、通信裸奔),再给地图: 社区、竞赛、制造技能、ROS 2、机器学习。然后回到第 1、2 章的方法论—— 「为什么做 → 铅笔草图 → 方块图 → 选件」——启动你的下一台机器人。 方法没变,变的是你已经有了一整套工具箱。(第 18 章)
一句话收尾¶
这本书用十八章演示了一件事: 机器人智能 = 简单的部件 + 诚实的反馈 + 一层层把「感知」翻译成「决定」的管道。 没有魔法,每一步都有出处、有曲线、有排错清单。
3. 十九章地图¶
这张表不用记任何术语 —— 每章后面写的是「读完你能回答什么问题」。
| 章 | 读完你就能回答 |
|---|---|
| 01 机器人到底是什么 | 什么才算机器人?洗衣机为什么算、遥控车为什么不算? |
| 02 动手前的规划 | 从零造一台机器人,第一步干什么?怎么保证买的零件装得上? |
| 03 无头树莓派 | 不插屏幕键盘,怎么配置和远程控制一台树莓派? |
| 04 保护机器人代码 | SD 卡说坏就坏,怎么让几周的心血一次也不丢? |
| 05 组装底盘 | 塑料件、电线、电池,怎么不用焊枪装成一台能通电的车? |
| 06 让机器人动起来 | 为什么书里非要先把电机「包成服务」才许写行为? |
| 07 用手机开机器人 | 开机绿灯一亮、掏手机就开的「产品感」是怎么搭出来的? |
| 08 距离传感器 | 光学和超声波怎么选?64 个距离数怎么变成手机上的画面? |
| 09 自主避障 | 「见墙就躲」怎么写?为什么平滑的版本又会晃? |
| 10 舵机与云台 | 舵机和普通电机差在哪?脉冲宽度怎么变成角度? |
| 11 编码器与里程计 | 时间开车为什么必歪?「走一米、转 90°」靠什么变准? |
| 12 蒙特卡洛定位 | 机器人怎么在不知道自己位置的情况下,「猜」出自己位置? |
| 13 IMU 与朝向保持 | 陀螺、加速度计、罗盘各有什么用、各有什瞎? |
| 14 机器人视觉 | 不训练任何模型,怎么让机器人认脸、跟色块? |
| 15 循线 | 黑线在画面里怎么变成数字?PID 最后一块拼图(D)是干嘛的? |
| 16 语音 Agent | 离线语音命令怎么做?唤醒词和限定词表为什么必要? |
| 17 传感器融合 | 概率场是什么?多个传感器的话怎么「相乘」而不是各说各话? |
| 18 把路走下去 | 这台机器人还欠哪些安全债?下一步该学什么、下一台怎么开始? |
| 19 附录 | 零件怎么找替代品?满手命令怎么串成一条流水线? |
推荐顺序: 01 → 19 顺读即可,原书的顺序就是最好的学习曲线。 只想拿结论的:读本页第 2 节 + 09、12、17 三章。
4. 这本书覆盖什么、不覆盖什么¶
覆盖(而且讲得比多数材料清楚)——读完你能动手:
- 机器人三大件与反馈回路的完整图景(电机、传感器、控制器各有哪些、怎么选);
- 树莓派无头化、SSH 远程、Linux 服务管理的实操流程;
- 一套可复用的机器人软件架构:MQTT 服务层 + 行为层 + 手机网页 + 语音,全说一种消息语言;
- 控制工程入门三部曲:比例控制 → PI/PID → 抗积分饱和,每步都有曲线可看;
- 里程计(编码器 → 毫米)与运动学(转弯 = 两轮各走各的弧);
- 蒙特卡洛定位与传感器融合的动手实现(粒子、权重、重采样、概率场、互补滤波);
- 计算机视觉两条路线(神经网络模型 + 经典图像管线)与循线毕设;
- 本地语音命令(识别 + 合成 + 唤醒词 + 词表圈定);
- 贯穿全书的工程纪律:版本控制、幂等部署、配置存储、可视化调试、排错清单。
不覆盖(别指望在这本里找):
| 缺什么 | 说明 |
|---|---|
| ROS / ROS 2 | 全书刻意自建中间件(MQTT + systemd);ROS 只在最后一章作为「下一步」指路 |
| SLAM、地图构建、路径规划 | 定位止于「已知地图上的粒子滤波」;不建图、不规划 A* |
| 深度学习训练 | 三个 AI 模型全部下载即用;不训练、不微调、不讲网络结构进阶 |
| 实时系统与硬实时控制 | 循环靠 sleep,延迟和抖动没有定量分析 |
| 户外与竞赛环境 | 全程假设室内平地、家用 Wi-Fi、良好光照;电池续航只有采购约束没有设计 |
| 多机器人与通信安全 | 单机单机器人;安全在最后一章还了第一笔债(凭据外置),TLS/登录只给路线 |
5. 我们的判断¶
判断(我们的,不是书里的): 这本书在今天的价值排序是—— ① 软件架构与工程纪律(不过时)> ② 经典控制与定位算法的动手实现(不过时)> ③ 具体型号与界面代码(正在过期)。 型号会死(书里自己承认)、网页库版本会漂,但「把硬件包成服务、把参数赶出代码、 给每个行为留窃听口」这三件事,对任何年代的机器人都成立。 如果拿它当教材,引②,照抄①,别抄③里的任何型号。 如果错,会错在: 若 ROS 2 生态继续吞掉中低端教育机器人(把 MQTT 这类自建总线挤成异类), 那么①里「自建中间件」的做法会从「通用工程能力」贬值成「特定生态外的手艺」, 教学价值仍在、直接迁移性会打折。
判断(我们的,不是书里的): 全书最值得带走的一句话其实是第 03 章那句副产物: 「无头化逼你想清楚自主行为——因为你根本来不及敲命令。」 这句话解释了为什么这本书一半篇幅在搭基础设施: 机器人开发的每一步「不方便」,都是在把人的角色从「司机」往「设计师」推。 如果错,会错在: 对于纯软件背景、只关心算法的读者,基础设施的占比会显得臃肿—— 那是定位差异,不是书写错了;这本书的读者画像从来是「maker」,不是算法工程师。
判断(我们的,不是书里的): 它对「AI 的克制」值得单独一记—— 人脸、语音用现成模型(消费 AI),定位、循线坚持手写经典算法(理解原理), 并且明说神经网络循线「当时没有更划算」。在「什么都往模型里塞」的年代, 这种「按问题选工具」的冷静是稀缺品。 如果错,会错在: 小语言模型与端侧(直接在机器人本地运行的)视觉的性价比曲线正在快速变化—— 若 2026 之后端侧 SLM/视觉模型成本骤降,书中「经典算法更划算」的多个判例会逐个失效; 但「先理解经典、再消费模型」的学习顺序本身不会失效。
6. 许诺兑现表¶
这份拆解里每一处「第 N 章讲」,都在这里记一行、逐行核过。
| 许诺在哪 | 许诺了什么 | 应兑现在哪 | 核过了吗 |
|---|---|---|---|
| 本页 §2 ② | 方块图与选型过滤 | 02 全章 |
✓ |
| 本页 §2 ③ | 无头化逼出自主设定 | 03 §1、§7 |
✓ |
| 本页 §2 ④ | 三层防线与幂等重建 | 04 §2–5 |
✓ |
| 本页 §2 ⑤ | MQTT 服务层与换硬件不改行为 | 06 §6–8 |
✓ |
| 本页 §2 ⑥ | systemd、LED、launcher | 07 §3、4、8 |
✓ |
| 本页 §2 ⑦ | bang-bang 与比例控制、振荡伏笔 | 09 §5、6 |
✓ |
| 本页 §2 ⑧ | 编码器换算与 PID 到位 | 11 §3–7 |
✓ |
| 本页 §2 ⑨ | 粒子滤波的猜测循环 | 12 §2–9 |
✓ |
| 本页 §2 ⑩ | 概率场、相乘融合、互补滤波 | 17 §3–6 |
✓ |
| 本页 §2 ⑪ | 视觉、循线、语音三件套 | 14–16 |
✓ |
| 本页 §2 ⑫ | 安全债、社区、下一台 | 18 §3–7 |
✓ |
01 §2 |
后面各章在回路图上的位置 | 05–17 各章 §2 |
✓ |
03 §4 |
公钥认证省了什么 | 03 §4 机制图 |
✓ |
06 §1 |
跑偏的病第 11 章治 | 11 §1 |
✓ |
08 §4 |
电平红线与第 8 章选型 | 08 §4、§6 |
✓ |
09 §6 |
振荡留给 PID 治 | 11 §6、15 §6 |
✓ |
12 §1 |
多模型融合在 17 章 | 17 §5 |
✓ |
13 §9 |
IMU 磁干扰由融合补 | 17 §6 |
✓ |
拆解写于 2026-10-19,依据 2026 年 5 月 Packt 第三版(ISBN 978-1-80324-698-7)。
原始书籍文件不入库,本组文档是我们自己的重写;
每条引用都可用 node scripts/book-verify.mjs learn-robotics-programming 回核。