Go2 硬件一图看懂¶
真正开始写代码前,先别把 Go2 当成一个“会执行命令的黑盒”。你越早知道它身上都挂着什么,后面越少走弯路。
本节你将学到¶
- 从开发者视角看,Go2 最重要的几块硬件分别负责什么
- 为什么“腿、传感器、主控、供电、通信”要分开理解
- 哪些是本体自带能力,哪些由扩展坞承担开发与运行职责,不要混在一起
- 后面章节里最常出现的几个硬件对象:扩展坞、L1 雷达、摄像头、IMU、遥控器
- 实机开发时,哪些硬件细节值得每天看一眼,哪些不用一开始就死记硬背
背景与原理¶
如果把 Go2 只当成一个“能站起来、能坐下、能打招呼”的机器玩具,前两天你会觉得它很酷,第三天就会开始被各种接口名和现象搞晕。
开发者看 Go2,最有用的拆法不是“它有哪些炫酷动作”,而是下面这五层:
- 机身与关节:它怎么动
- 传感器:它怎么看、怎么感知
- 主控与通信:你的代码怎么把命令送进去、把状态读出来
- 供电与热管理:它能跑多久,什么时候该停
- 扩展坞与外挂扩展:二次开发主要跑在哪儿,以及哪些能力仍然属于本体
你后面会反复遇到的很多概念,其实都能放回这五层里去理解。
比如:
/lf/sportmodestate本质上是在告诉你“机身当前怎么动”/lf/lowstate更靠近电机和底层状态- 激光雷达和 IMU 属于“感知层”
- 扩展坞更像一台外挂计算机,承担了二次开发的主算力职责,但不等于“机器狗本体的全部能力”
为什么不建议一开始死记参数表¶
新手最容易掉进的坑,就是还没搞清楚硬件角色,就开始背规格、背接口、背缩写。
问题是,这些信息只有放进具体场景里才有意义。
比如你现在最该知道的,不是某个传感器的完整技术指标,而是:
- 它大概看什么
- 你会在哪些章节第一次用到它
- 出问题时你该先怀疑它还是怀疑别的链路
带着这个思路认识硬件,后面真正用到时,你自然会把细节补起来。
架构总览¶
先看一张开发者视角的“硬件地图”:
flowchart TD
A[Go2 本体] --> B[机身与执行器<br/>4 条腿 / 12 个关节电机]
A --> C[传感器<br/>L1 雷达 / 摄像头 / IMU]
A --> D[主控与通信<br/>高层接口 / 低层接口 / 遥控器]
A --> E[供电与热管理<br/>电池 / 电机温升 / 充电]
A --> F[扩展坞<br/>EDU 标配 / 主开发环境 / 主算力载体]
F --> G[外接设备与进阶部署<br/>麦克风 / 外接相机 / USB 外设]
如果把这张图再展开一点,可以得到后面最常用的“硬件到章节”的对应关系:
| 模块 | 你最先会在哪儿遇到它 | 现在只需要知道什么 |
|---|---|---|
| 4 条腿和 12 个关节 | 第 2 章消息接口、第 3 章之后的控制章节 | Go2 不是小车,动作稳定性高度依赖整套平衡控制 |
| L1 雷达 | 感知篇、建图、导航 | 它负责提供空间感知,不是拿来直接控制电机的 |
| 摄像头 | 交互篇、视觉相关章节 | 它更像“眼睛”,通常和视频流、图片理解配合使用 |
| IMU | 状态反馈、SLAM、姿态判断 | 它告诉系统身体朝向和加速度变化 |
| 遥控器 | 开篇安全、第 2 章状态接口 | 它既是输入设备,也是实机测试时的安全兜底 |
| 电池与温度 | 安全章、实机调试全过程 | 这是最容易被忽略,但最该养成观察习惯的部分 |
| 扩展坞 | 承载全部二次开发程序、ROS2 节点和 Python 环境 | 它是外挂算力,但不是所有内置硬件能力都直接“挂在它上面” |
环境准备¶
这一节不需要你安装任何软件,但建议你在实机旁边做一次“看得见、摸得着”的认识:
| 现在先确认什么 | 为什么值得现在确认 |
|---|---|
| 哪边是机头、哪边是机尾 | 你后面看坐标系、看姿态时会经常用到 |
| 遥控器是否有电、是否能接管 | 实机调试别等出事了才想起它 |
| 网线、充电器、工作台位置是否顺手 | 工程调试最怕频繁拔插时手忙脚乱 |
| 机器狗周围是否有充足空地 | 早期动作测试不要贴着桌腿和墙角搞 |
扩展坞是你后续最重要的开发环境。你写的大部分代码、安装的大部分依赖、跑起来的大部分 ROS2 节点,都会落在这里。
但这里有个技术认知仍然要守住:扩展坞虽然是主算力和主战场,不代表 Go2 所有本体硬件都天然直接挂在它上面。本体、主板、扩展坞、外接 USB 设备依然是不同层级,后面你做部署和接外设时,这个边界会直接决定该在哪边装依赖、在哪边跑程序、哪边能访问到什么能力。
实现步骤¶
步骤一:先认识“它怎么动”¶
Go2 最直观的部分当然是四条腿,但开发时更重要的是:每条腿不是一个动作单元,而是一组关节单元。
你可以先把它理解成:
- 四条腿负责整体运动
- 每条腿由多个关节协同
- 机器人能稳不稳,不是靠某一个关节,而是靠整套控制器一起工作
这也是为什么我们后面会反复强调:新手阶段优先使用高层运动接口,而不是一上来就直接碰底层电机命令。
因为四足机器人不像小车那样“左轮快一点、右轮慢一点”就完事了。它随时都在做平衡、落脚、姿态保持这些复杂工作。
步骤二:再认识“它怎么感知”¶
Go2 在开发中最常被你用到的传感器,通常是下面这几类:
| 传感器 | 你可以把它先理解成什么 | 后面最常见的用途 |
|---|---|---|
| L1 雷达 | 机器狗的“空间雷达眼” | 点云、障碍物感知、建图、导航 |
| 摄像头 | 机器狗的 RGB 视觉输入 | 拍照、视频流、视觉理解 |
| IMU | 身体姿态和运动变化感知器 | 姿态估计、里程计辅助、SLAM |
别急着记参数。对初学者更重要的是先建立一个顺序:
先知道“这个传感器在管什么”,再去学“它的数据长什么样”,最后再去碰“我怎么拿它做功能”。
步骤三:理解“你的代码是怎么接上它的”¶
开发 Go2 时,你真正打交道最多的,通常不是裸硬件,而是硬件上层暴露出来的接口。
你可以先把它们粗分成两类:
| 接口层级 | 典型入口 | 现在怎么理解最合适 |
|---|---|---|
| 高层接口 | /api/sport/request、/lf/sportmodestate |
面向动作和状态,安全、稳定,适合教程前期使用 |
| 低层接口 | /lowcmd、/lf/lowstate |
更靠近电机和原始控制,能力强,但风险也大 |
这本书前面的主线,基本都围绕高层接口展开。
不是因为低层接口不重要,而是因为你先得会走,再学跑,再学为什么有人会翻车。
步骤四:认识扩展坞在体系中的位置¶
在这本书里,扩展坞不是“有最好、没有也无所谓”的附件,而是你后续二次开发的主战场。
更准确的理解应该是:
- Go2 本体负责运动、本体传感器、基础控制链路
- 扩展坞负责二次开发主算力、程序运行、依赖安装和外设接入
- 某些外设和音频链路未必像想象中那样“天然都挂在扩展坞可直接用”
所以你后面会反复看到“SSH 进扩展坞”“在扩展坞上装依赖”“让节点跑在扩展坞里”这种表述。这不是进阶玩法,而是整本书默认的开发姿势。
同时也别把它脑补成“万能中枢”。扩展坞承担的是外挂算力职责,不是说所有本体硬件能力都原生直接暴露给它。这个边界不搞清楚,后面做语音、视觉和 USB 外设时就很容易踩坑。
先记住一个很实用的判断方法
当你分不清某个能力到底跑在本体链路还是扩展坞链路时,先问自己:这个能力是“机器人原生运动/状态/传感器”还是“我额外装进去并跑起来的程序和外设”?前者大多属于本体控制链路,后者大多落在扩展坞上。
编译与运行¶
这一节仍然不写代码,但建议你现在就做一轮“上电前观察”:
- 看一眼机身周围有没有杂物和容易绊脚的线
- 看一眼遥控器是不是在你手边
- 看一眼电池状态和机器是否有异常热感
- 看一眼自己是否真的知道下一步准备让它做什么
这个习惯看起来很朴素,实际特别值钱。
很多实机事故,不是因为算法多难,而是因为人一着急,直接跳过了最基本的观察环节。
结果验证¶
读完本节后,你最好能做到下面这几件事:
- 能把 Go2 粗分成“执行器、传感器、通信、供电、扩展坞”五部分
- 知道高层接口和低层接口不是一回事
- 知道扩展坞是你后续一切二次开发的运行载体
- 知道后面遇到雷达、摄像头、IMU、遥控器这些词时,大概该把它们放回哪一层理解
如果这些认知已经建立起来,后面再看消息接口和环境栈,就不会那么散了。
常见问题¶
为什么所有二次开发都默认在扩展坞上做?¶
因为我们这里讨论的是 Go2 EDU 的标准开发形态。
学校给学生提供的 Go2 EDU 默认就带扩展坞,而二次开发真正需要的主算力、ROS2 运行环境、Python 依赖和外设接入,也都默认落在扩展坞这一层。主板固件和本体链路不是给你随意当通用开发机折腾的。
一定要先搞懂 12 个关节的所有细节吗?¶
不用。
你现在只需要知道 Go2 的运动不是“单个轮子转起来”那种简单模型,而是多关节协同和平衡控制共同作用的结果。
具体到每个关节名字、角度范围、力矩和控制模式,后面在真正用到时再学。
雷达、摄像头、IMU,哪个最重要?¶
没有谁永远最重要,只有“当前章节最重要”。
你做环境和消息接口时,更关心通信链路;做 SLAM 和导航时,雷达和 IMU 更关键;做视觉和语音时,摄像头和扩展算力的重要性会抬上来。
我可以现在就去碰 /lowcmd 吗?¶
不建议。
你还没把高层控制链路走通之前,直接碰底层控制,大概率不是“学得更快”,而是“更快地把问题搞复杂”。
本节小结¶
这一节的目标,是把 Go2 从“一个会做动作的黑盒”拆成几个开发上更有意义的部分:执行器、传感器、通信、供电和扩展坞。
当你能用这个视角重新看它,后面学消息接口时,你就不会只盯着话题名本身,而会知道这些消息到底对应哪一层硬件。
下一步¶
下一节我们把视角从机器人本体切到电脑侧,看看 Ubuntu、ROS2、CycloneDDS、unitree_ros2 和你的教程工作空间,到底是怎么拼成一套开发环境的。
继续阅读:开发环境总览