教程简介与使用指南¶
这不是一本只会甩命令的速查表,而是一条带你从“把狗连上”走到“自己写功能”的上手路线。
本节你将学到¶
- 这本书适合谁,默认你已经会什么,不会什么
- 整本书的章节依赖关系,为什么建议按顺序往下做
- 跟着本书动手时最省心的节奏:先理解,再抄代码,再看现象
- 遇到报错时先查哪里,哪些问题属于本书范围,哪些不属于
- 怎么判断自己不是“只是把命令敲出来了”,而是真的入门了
背景与原理¶
这本书的素材,不是从网上东拼西凑来的教程,而是从真实开发过程里一条条沉淀出来的笔记、代码和踩坑记录整理出来的。
这件事很重要。因为机器狗开发和一般 Python 小项目不一样,你不是在跟一个安静的程序打交道,而是在跟一台会动、会摔、会因为接口层级不对而出事的实体机器人打交道。
所以本书从一开始就坚持三件事:
- 不只告诉你“怎么做”,还告诉你“为什么这么做”
- 不把中间那些容易踩坑的工程细节藏起来
- 先建立安全边界,再去讲功能和酷炫效果
你会发现本书很多章节都长这样:先讲背景,再画架构,再一步一步搭起来,最后再讲怎么验证和怎么排错。
这不是故意啰嗦,而是因为只给命令不解释,读者一旦遇到跟作者环境不一样的地方,基本就卡死了。
这本书默认你具备什么基础¶
我们默认你已经装好了 Ubuntu 22.04,愿意使用终端,也能大概看懂 Python 代码。
但我们不默认你已经做过机器人开发,也不默认你知道 DDS、TF、里程计、高层控制和低层控制这些词是什么意思。
换句话说,这本书不是“从零到会开机”的科普,也不是“面向老鸟的省略写法”。它的目标是:让第一次认真做 Go2 开发的人,能跟着走通一条完整链路。
为什么建议按顺序看¶
Go2 的很多能力是串起来的。
你在第 1 章搭的环境,会直接影响第 2 章能不能看到消息;第 2 章对消息接口的理解,又会影响后面控制节点、可视化、SLAM、导航到底写得顺不顺。
如果中间跳章,最常见的结果不是“学得更快”,而是“少读了三页,结果多查两小时日志”。
这本书最推荐的使用姿势
把它当成一条主线,而不是一本词典。你当然可以回头查某一章,但第一次上手时,老老实实按顺序往下走,整体阻力会小很多。
架构总览¶
先看整本书的大图,再决定自己现在站在哪儿:
flowchart LR
A[开篇<br/>认识教材、硬件、环境、安全] --> B[第 1 章<br/>环境搭建]
B --> C[第 2 章<br/>认识 Go2 消息接口]
C --> D[第 3-6 章<br/>功能包开发]
D --> E[第 7-9 章<br/>ROS2 通信实战]
E --> F[第 10-13 章<br/>感知、建图、导航]
F --> G[第 14-15 章<br/>语音与视觉]
G --> H[第 16-17 章<br/>任务编排与未来方向]
如果你更关心“我现在先看哪几章”,可以直接看这张依赖表:
| 阶段 | 你会得到什么 | 建议阅读顺序 |
|---|---|---|
| 开篇 | 不把机器狗当黑盒,也不把它当玩具 | 0.1 → 0.2 → 0.3 → 0.4 |
| 基础篇 | 连上 Go2,跑通 ROS2,读懂消息接口 | 第 1 章 → 第 2 章 |
| 功能包篇 | 写出第一个自己的控制/桥接/可视化节点 | 第 3 章 → 第 6 章 |
| 通信篇 | 真正理解 Topic / Service / Action 的工程用法 | 第 7 章 → 第 9 章 |
| 感知篇 | 让 Go2 开始“看见”和“认识空间” | 第 10 章 → 第 13 章 |
| 交互与综合篇 | 做出更像完整产品的系统 | 第 14 章之后 |
环境准备¶
开始读这本书前,先确认你手里至少有这些东西:
| 项目 | 为什么要有 |
|---|---|
| Ubuntu 22.04 电脑 | 本书所有命令和依赖都按这个环境写 |
| Go2 EDU 本体 | 基础篇默认你要连真机 |
| 扩展坞 | EDU 版默认配备,是所有章节的主开发环境 |
| 网线或可靠的有线转接器 | 第 1 章环境搭建要先把电脑和 Go2 连起来 |
| 充好电的遥控器 | 实机测试时,它不是装饰品,是兜底开关 |
| 愿意留出一点时间看解释 | 这本书不是只让你复制命令,更是帮你减少后面返工 |
如果你暂时没有麦克风、外接相机等外设,不影响你开始前面的基础篇,后期再补就行。
前两章真正需要的核心组合,其实就是:一台 Ubuntu 电脑 + 一只带扩展坞、能正常开机通信的 Go2 EDU。
后面所有动手章节,也都默认你已经能 SSH 进扩展坞,并把它当成主要运行环境。
这本书不打算解决什么问题
如果你用的是别的 Ubuntu 版本、别的 ROS2 版本,或者打算用 WSL、虚拟机、奇怪的网络桥接方式强行跑通,那么你遇到的一部分问题就不一定在本书的处理范围内了。
实现步骤¶
步骤一:先把开篇四节读完,再去敲第 1 章的命令¶
很多人一看到“环境搭建”四个字就条件反射地打开终端,结果是命令敲得飞快,脑子里一片空白。
开篇四节的存在,就是为了让你在真正动手前先知道三件事:
- 你面对的硬件到底有哪些部分
- 电脑上的环境栈到底是怎么一层层叠起来的
- 哪些接口今天可以碰,哪些接口现在碰了大概率出事
步骤二:每一章都按“先懂目标,再抄步骤,再看结果”的节奏走¶
建议你每章都按下面这个顺序:
- 先读完“本章你将学到”和“架构总览”
- 再开始跟着实现步骤操作
- 每做完一小步,就停下来做一次结果验证
- 出现异常,先看本章的“常见问题”,再去翻终端日志
这个节奏看起来慢一点,但总耗时反而更短。
因为真正费时间的,从来不是多看两页解释,而是误把一条错误链路当成对的,后面整章都在歪着跑。
步骤三:别跳过“结果验证”和“常见问题”¶
初学者最容易忽略的,就是这两节。
可惜它们恰恰最值钱。因为机器人开发里的“没报错”不等于“真的对了”,你必须能从现象上确认:
- 消息是不是确实在流
- 节点是不是确实连上了
- 机器人是不是按你想的那条链路在响应
步骤四:把自己的问题归类¶
当你卡住时,先问自己这属于哪一类:
| 问题类型 | 最应该先查什么 |
|---|---|
| 完全连不上 Go2 | 网络配置、网卡、环境脚本是否加载 |
| 能连上但看不到消息 | DDS 配置、话题名、消息类型 |
| 代码能跑但狗不动 | 指令接口层级、动作条件、实机状态 |
| 数据在跳、在乱飞 | 坐标系、时间戳、QoS、传感器链路 |
很多问题表面长得像“代码错了”,根上其实是环境或者接口层级没搞对。
编译与运行¶
这一节还不会让你真正编译任何代码,但你现在就可以先养成一个正确习惯:每开始一章,都先问“这一章的成功现象是什么”。
以第 1 章和第 2 章为例,你真正要追的成功现象不是“命令执行完了”,而是:
- 你能看到 Go2 的状态话题
- 你能编译出自己的第一个包
- 你能写出一个最小节点,读到
/lf/sportmodestate
如果你从第一章开始就带着这种“现象导向”的思路,后面做 SLAM、导航、语音、视觉时会轻松很多。
结果验证¶
读完本节后,你可以用下面三个问题检查自己有没有进入正确状态:
- 你能不能说清楚这本书不是“查 API 手册”,而是一条逐章推进的开发路线?
- 你知不知道为什么建议按顺序学,而不是一上来就跳去看导航和视觉?
- 你能不能接受:遇到问题时,先查章节里的验证和常见问题,而不是立刻怀疑“是不是 Go2 有毒”?
如果这三个问题你都能回答得比较稳,说明这本书的打开方式已经对了。
常见问题¶
我可以直接跳过开篇去看代码吗?¶
可以,但不建议。
前面省下来的十分钟,通常会在后面变成更多时间花在“这玩意儿到底是高层接口还是低层接口”“为什么它会突然抖”“我现在到底该查 topic 还是查 TF”这种问题上。
我没学过机器人学,会不会看不懂?¶
不用把自己吓住。
本书会讲必要的背景,但只讲你马上要用上的那部分。你需要的是愿意跟着做,而不是先把整本机器人教材啃完。
我是不是一定得把每段代码全背下来?¶
不用。
你真正应该背下来的,是链路和判断方法:这个节点在收什么、发什么、依赖谁、成功时应该看到什么现象。
本节小结¶
这一节的目标,不是教你任何具体命令,而是把整本书的打开方式先摆正。
从现在开始,你应该把这本书看成一条逐步展开的开发主线:先认识硬件和安全边界,再搭环境,再理解接口,再写功能,最后再做更复杂的感知和交互。
只要这个顺序不乱,后面每一章都会顺很多。
下一步¶
下一节我们先不碰代码,先把你手里的这只 Go2 拆成几个开发者最该认识的部分:机身、关节、传感器、供电和扩展坞。
继续阅读:Go2 硬件一图看懂