10. 识别你的机器人配置¶
10.1 学习目标¶
固件是存放在控制板中、上电后直接运行的程序;烧录就是把构建出的固件写入控制板存储器。烧录前必须确认控制板、车型和编码器匹配,并保留可以恢复的旧版本。
在上电、改配置或烧录固件之前,先把手里的机器人说明白。本章的交付物是一张可复用的配置表,用来记录底盘运动形式、ROS 主控、底盘控制板以及当前源码版本。
这张表是后续排障的起点。车型或控制板判断错后,机器人可能倒着响应前进命令、发布反向的里程计,或者被写入不匹配的固件。遇到这些现象时,先回到本章核对配置表,再决定是否修改软件或固件。
10.2 适用范围¶
| 项目 | 适用情况 |
|---|---|
| 机器人 | WHEELTEC 教育机器人、大型科研机器人及 R680 系列 |
| 主控 | Jetson、树莓派、RDK、Atlas、工控机等随车主控 |
| 底盘控制板 | C30D、C50A、C50B、C50C 及其他 STM32 控制板 |
| ROS 版本 | ROS 2 为本书主线;ROS 1 旧设备也应先完成本章 |
同一外观的机器人可能因购买时间或选配不同而使用不同主控、雷达或编码器。型号名称只能作为线索,配置判断以实机标签、随货清单和当前系统文件为准。
10.3 操作前检查¶
- 暂时不要烧录固件,也不要复制其他车型的源码覆盖当前工作空间。
- 如果机器人已经上电,将运动区域清空,并让急停或使能开关处于可以立即停止电机的状态。
- 准备手机或相机,拍下主控、底盘控制板、雷达、相机和线缆接口。排障时,照片比口头描述更可靠。
- 找到随货清单、机身标签和软件更新记录。记录购买时间与当前软件版本。
10.4 工作原理¶
一台 ROS 移动机器人可以拆成三层:
| 层级 | 常见硬件 | 主要工作 | 出错时的典型现象 |
|---|---|---|---|
| 上层决策 | Jetson、树莓派、RDK、Atlas、工控机 | 运行 Ubuntu、ROS、导航和视觉程序 | ROS 节点报错、网络不通、功能无法启动 |
| 感知 | 雷达、相机、IMU、GNSS、语音设备 | 采集环境或机器人状态 | 设备节点缺失、话题无数据、画面或点云异常 |
| 底层执行 | STM32 控制板、电机驱动器、电机、编码器、舵机 | 接收速度命令,控制电机,反馈里程计和姿态数据 | 轮子不转、方向错误、自检失败、里程计异常 |
上层和底层不是同一块板。主控能正常进入 Ubuntu,不代表底盘控制板、电机或编码器正常;遥控器能让底盘运动,也不代表 ROS 配置正确。后续诊断会利用这种分层关系逐级缩小范围。
编码器把车轮转动转换为脉冲信号,控制板据此计算速度和里程计;里程计是根据车轮运动推算出的机器人位姿和速度,会受轮径误差和打滑影响。IMU测量加速度和角速度,常用于判断机器人是否转动或倾斜。
10.5 操作步骤¶
1. 识别底盘运动形式¶
观察轮子和转向结构,不要只看商品名称。
| 底盘形式 | 外观线索 | 能否横移 | 能否原地转向 | 配置时最容易混淆的地方 |
|---|---|---|---|---|
| 两轮差速/四轮两驱 | 左右两侧各由一组主动轮驱动 | 否 | 是 | 与四驱外观接近,但驱动电机数量不同 |
| 四驱/滑移转向 | 四个普通轮均参与驱动 | 否 | 是 | 转向依赖轮间速度差,地面摩擦影响明显 |
| 麦克纳姆轮 | 轮缘上有倾斜滚子 | 是 | 是 | 滚子方向和轮子编号必须匹配 |
| 全向轮 | 轮缘有垂直于主轮的滚子 | 是 | 是 | 三轮、四轮结构的运动学不同 |
| 阿克曼 | 前轮有机械转向结构 | 否 | 通常否 | 开环/闭环转向、舵机零点和轴距轮距 |
| 履带 | 左右两条履带 | 否 | 是 | 可按差速思路控制,但转向阻力更大 |
把底盘形式写入配置表。如果是 R680,还要记录是否为 8 驱主从结构、是否有急停,以及OLED显示屏是否存在。OLED 可直接显示底盘控制板的自检和运行状态。
2. 识别 ROS 主控¶
查看主控外壳、接口布局和板卡丝印,记录以下信息:
- 平台型号,例如 Jetson Orin Nano、Raspberry Pi 5、RDK X5。
- 存储介质,例如 microSD、eMMC、NVMe 或 USB 系统盘。
- 有线网口和无线网卡是否存在。
- 显示接口是否接出。
- 当前 Ubuntu 和 ROS 发行版。能进入系统后,可在主控终端执行:
cat /etc/os-release
printenv ROS_DISTRO
如果 ROS_DISTRO 没有输出,不要立即判断“没有安装 ROS”。它也可能只是当前终端尚未加载 ROS 环境。第 22 章会进一步检查环境脚本和工作空间。
3. 识别底盘控制板¶
断电后查看控制板丝印和接口,记录型号与硬件版本。主控与控制板常通过串口或串行端口交换数据;它用少量导线按顺序发送字节,常见形式是主控 USB 接口接出的 USB 转串口。R680 可能采用 C50A、C50B 或 C50C;这些控制板的固件不能混用。
至少拍清楚:
- 控制板型号和版本号;
- 电机、编码器、串口、CAN、IMU、遥控器接口;
- 使能开关、急停和车型选择元件;
- OLED 开机显示;
- 控制板与主控之间使用的线缆及主控 USB 端口。
4. 识别编码器和传感器¶
记录编码器类型,例如GMR或霍尔效应编码器,以及电机数量、雷达型号、相机型号、外置 IMU 和其他选配。它们都把转动转换成电信号,但接口和固件支持可能不同。编码器类型会影响固件分支;雷达和相机型号则会进入 ROS 2 参数文件。若控制板上有 CAN 接口,记录其连接对象。CAN是面向设备间通信的双线总线,常用于控制板、电机驱动器或扩展模块之间交换短报文。
5. 找到 ROS 2 的配置入口¶
WHEELTEC ROS 2 工作空间通常把车型和外设选择集中在 turn_on_wheeltec_robot/config/wheeltec_params.yaml 一类配置文件中,但文件位置和内容会随镜像版本改变。先定位,不要修改:
find "$HOME" -path '*turn_on_wheeltec_robot/config/wheeltec_params.yaml' 2>/dev/null
如果找到多个文件,记录每个文件所属工作空间,并查看当前启动脚本加载的是哪一个。不要凭文件名猜测“最新”或“正在使用”。
6. 填写配置基线¶
将下表复制到自己的项目记录中。无法确认的项目写“待实机核对”,不要留空。
| 配置项 | 实机记录 | 证据位置 |
|---|---|---|
| 机器人/底盘型号 | 机身标签、随货清单 | |
| 底盘运动形式 | 轮组和转向结构照片 | |
| 电机与驱动数量 | 接线或拆装观察 | |
| 编码器类型 | 电机标签、实物照片 | |
| ROS 主控型号 | 主控丝印、系统信息 | |
| Ubuntu 版本 | /etc/os-release |
|
| ROS 发行版 | ROS_DISTRO 或安装路径 |
|
| 底盘控制板及版本 | 控制板丝印 | |
| 雷达型号 | 设备标签、参数文件 | |
| 相机型号 | 设备标签、参数文件 | |
| 主工作空间 | 当前启动脚本与环境 | |
| 资料/固件日期 | 文件名、更新记录 |
10.6 验收标准¶
配置表完成后,应能解释下面的对应关系:
- 机器人为什么使用当前运动学类型。
- 哪块板运行 ROS,哪块板控制电机。
- 主控与控制板通过什么接口通信。
- 当前 ROS 2 参数文件如何选择车型、雷达和相机。
- 如果需要更新源码或固件,应按哪些硬件字段筛选版本。
任何一项无法确认,都应继续保留“待核对”状态。未确认控制板和编码器前,不进入固件烧录章节。
10.7 故障排查¶
本表中的启动文件按清单运行 ROS 2 节点并传入参数;容器挂载目录把宿主机文件映射到隔离的运行环境。先理解这两个边界,再根据实际启动入口追踪文件来源。
| 现象 | 常见原因 | 处理方法 |
|---|---|---|
| 商品名与参数文件中的车型名不同 | 销售型号、底盘运动学类型和源码宏使用不同命名体系 | 以轮组、转向结构和当前参数注释交叉确认 |
| 主控能启动,但不知道 ROS 版本 | 当前终端未加载环境,或镜像包含多个工作空间 | 查找 ROS 安装目录和工作空间;不要先改 .bashrc |
找到多个 wheeltec_params.yaml |
系统中有备份、旧工作空间或容器挂载目录 | 从实际启动文件向下追踪加载路径 |
| 控制板看起来相同 | C50A/B/C 或硬件小版本外观接近 | 查丝印、版本号和接口资源,不用外壳颜色判断 |
| 编码器类型不确定 | 同一车型可能有 GMR、霍尔等不同版本 | 查看电机/编码器实物与随货清单,必要时向厂商提供照片确认 |