跳转至

14. 第一次功能验收与问题分层

14.1 学习目标

用最少的改动判断问题停在哪一层。验收顺序固定为供电、底盘控制板、独立遥控、主控通信、ROS 2 底层、传感器。前一层没有通过,就不在后一层反复改参数。

本章输出一份故障证据包,包括配置表、上电视频、OLED/指示灯、设备列表、ROS 2 节点和话题状态。后续排障可据此比较实际变化,不必依赖记忆判断故障何时出现。

14.2 适用范围

项目 适用情况
ROS 2 机器人 主流程
ROS 1 旧设备 分层方法相同,命令见附录 A
R680 OLED、自检、遥控和电机反馈可提供更细的底盘证据
尚未完成接线检查的机器人 不适用,先完成第 11 章

14.3 操作前检查

先限制运动风险

底盘测试只使用低速、短时命令。清空运动区域,准备急停。轮子架空时确认支架稳定;阿克曼底盘还要给转向机构留出空间。

  1. 保存第 10 章配置表、第 12 章上电基线和第 13 章连接记录。
  2. 关闭导航、跟随、编队和智能交互等上层应用,只保留本次要验证的节点。
  3. 打开一个专门记录日志的主控终端,不在测试过程中清屏。
  4. 本章不修改车型、串口、雷达或相机参数。发现配置不符时先记录,修改放到对应章节。

14.4 工作原理

把机器人看成一条有方向的数据链:

电源
  ↓
底盘控制板自检与使能
  ↓
遥控器或 ROS 速度命令
  ↓
串口/CAN 通信
  ↓
电机驱动与机械运动
  ↓
编码器、IMU 等反馈
  ↓
ROS 2 节点与话题
  ↓
建图、导航、视觉等上层功能

这里的串口或串行端口和CAN都是主控与底盘控制板交换命令和状态的通道。编码器把车轮转动转换为脉冲,IMU测量加速度和角速度。控制板或 ROS 节点据此计算里程计,即机器人根据轮子运动推算出的位姿和速度;它会受轮径误差和打滑影响。

诊断从下往上进行。比如遥控器可以稳定控制四个轮子,说明电池、控制板、驱动器和主要机械结构基本可用。此时若 ROS 控制失败,先查主控通信和 ROS 配置;现有证据尚不支持更换电机。

14.5 操作步骤

1. 第零层:供电与启动

检查第 12 章的基线是否仍可重复:

  • 电池电压在本机允许范围;
  • 控制板和主控均能稳定启动;
  • 没有异常发热、焦味和反复重启;
  • 急停和使能状态可观察。

若这一层失败,停止后续测试。ROS 日志无法修复供电压降或接头烧蚀。

2. 第一层:底盘控制板和自检

记录 OLED 或指示灯。R680 可重点看:

  • TYPE 是否与车型一致;
  • 使能是否为 ON;
  • 电压显示是否稳定;
  • 控制模式是否随遥控输入改变;
  • 电机目标值和实际值是否有响应;
  • 是否出现 TYPE X。

出现 TYPE X 时,底盘可能主动失能电机。这不是 ROS 层故障,先保存屏幕、接线和车型证据。

3. 第二层:不经过 ROS 验证底盘

选择随车支持的 APP、PS2 或航模遥控器,使用最低速度短按前、后、左、右或转向。测试内容取决于底盘形式:阿克曼不应按全向横移测试,差速底盘也没有横移能力。

记录每次输入、OLED 模式/目标值、轮子动作和实际方向。

输入 OLED/控制板响应 轮子/转向响应 结论
前进
后退
左转
右转
停止

遥控无响应但 OLED 也没有模式或目标值时,先查遥控配对与操作;OLED 有目标值而电机不动时,查使能、驱动器、电机和编码器。

4. 第三层:主控是否识别底盘通信设备

在机器人主控终端中执行:

lsusb
ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
dmesg --ctime | tail -n 80

先保存底盘控制板插入时的设备信息。不要仅依赖 /dev/ttyUSB0 这类编号,因为重新插拔或增加传感器后编号可能改变。稳定项目应使用 udev 规则或设备属性;相关配置在第 25 章处理。

5. 第四层:启动 ROS 2 底层

确认当前终端已加载正确 ROS 2 和工作空间,然后从当前功能包中选择与车型、主控和传感器匹配的启动文件。常见启动形式是:

ros2 launch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch.py

包名和文件名随版本变化。若命令不存在,先执行:

ros2 pkg prefix turn_on_wheeltec_robot
ros2 pkg executables turn_on_wheeltec_robot

不要从其他资料版本复制启动文件覆盖当前系统。保留启动终端的完整错误信息。

6. 第五层:检查节点和基础话题

另开一个已经加载相同 ROS 2 环境的主控终端:

ros2 node list
ros2 topic list

找到底盘、里程计和 IMU 的实际话题名,再检查消息类型与频率:

ros2 topic info <话题名>
ros2 topic hz <话题名>
ros2 topic echo --once <话题名>

不同镜像使用的话题名可能不同。验收时依次确认:节点存在、话题类型正确、静止时数据稳定、轻推或短时运动后里程计/IMU 有合理变化。

7. 第六层:逐个启动传感器

底盘通过后,再分别启动雷达和相机。每次只增加一类设备,并保存启动日志。

常见出厂示例:

ros2 launch turn_on_wheeltec_robot wheeltec_lidar.launch.py
ros2 launch turn_on_wheeltec_robot wheeltec_camera.launch.py

实际文件名应以当前包为准。使用 ros2 topic list 和 ros2 topic hz 检查数据,不以“终端没有红字”作为通过标准。

8. 整理故障证据包

建议目录:

robot-baseline/
├── configuration.md
├── power-on.mp4
├── oled.jpg
├── wiring/
├── usb.txt
├── dmesg.txt
├── ros2-launch.log
├── nodes.txt
├── topics.txt
└── observations.md

日志中如含 Wi-Fi 密码、令牌或个人网络信息,分享前先脱敏。

14.6 验收标准

把结果归入下表,不使用含糊的“基本正常”:

层级 通过条件 实机结果
供电 稳定启动,无异常发热和重启
控制板 自检通过,车型/使能状态明确
独立底盘 遥控输入与底盘动作一致,停止可靠
主控通信 USB/串口设备稳定出现
ROS 2 底层 节点启动,里程计/IMU 话题持续发布
雷达 设备和点云/扫描话题持续发布
相机 设备和图像话题持续发布

本章至少要确定“最低失败层”。例如:供电、遥控底盘均通过,主控看不到串口设备,则最低失败层是主控通信;此时无需启动导航框架。

14.7 故障排查

现象 最低可能层 下一步
所有电气部件都不工作 供电 第 7–8 章检查电池、开关和主供电
OLED 显示异常且遥控不能动 控制板/底盘 保存代码和接线证据;R680 见第 50 章
遥控能动,ROS 不能动 主控通信或 ROS 配置 查串口设备、权限、参数和底盘节点日志
ROS 底盘节点在,但里程计不变 编码器、协议解析或车型参数 第 11、16、32 章
雷达节点启动但话题无数据 设备、端口、驱动或型号参数 第 25–26 章
相机能被 lsusb 识别但无图像 权限、带宽、驱动、分辨率或参数 第 20、25 章
节点很多且报错互相影响 同时启动了上层功能或旧进程残留 停止全部功能,按本章顺序单项启动

章节导航

上一章:连接主控:显示器、SSH 与远程桌面 · 返回本篇 · 下一章:坐标系与底盘类型