3. 机器人感知系统基础
机器人感知系统并不是“装几个摄像头和雷达”这么简单。它本质上是一条从物理世界到计算平台的连续信息链:传感器把光、声、电磁、惯性等物理量转换为电信号或数字数据,经过时间同步、标定、预处理后,形成可供算法消费的数据流,最终支撑定位、建图、检测、跟踪、规划等任务。理解这条链路的分类方式、数据特征和平台需求,是后续在 Snapdragon 平台上做集成与优化的前提。
一、感知任务的分类
从计算平台的角度,机器人感知任务可以按“输出语义”和“实时性要求”两个维度来划分。按输出语义,常见任务包括:
- 几何感知:输出点云、深度图、位姿、地图等几何量,典型如 SLAM、双目/ToF 深度估计、激光雷达建图。
- 语义感知:输出类别、检测框、分割掩码、关键点等语义标签,典型如目标检测、语义分割、人体姿态估计。
- 状态感知:输出速度、加速度、角速度、姿态角等运动状态,典型如 IMU 融合、轮速里程计、视觉惯性里程计。
- 环境感知:输出温度、湿度、光照、气体浓度等环境量,通常用于辅助决策或安全监控。
按实时性要求,又可分为硬实时(如避障、急停,延迟预算常在 10~50 ms)、软实时(如目标跟踪、局部建图,50~200 ms)和非实时(如离线建图、模型更新,秒级甚至更慢)。同一台机器人往往同时运行多类任务,计算平台必须能对它们做优先级调度和资源隔离。
二、传感器类型与数据特征
机器人常用传感器可按“测量对象”和“数据形态”分类。下表给出典型传感器及其数据特征,便于后续做接口与算力规划。
| 传感器 | 测量对象 | 典型数据形态 | 典型频率 | 接口 |
|---|---|---|---|---|
| RGB 相机 | 可见光图像 | 2D 图像帧 | 15~60 fps | MIPI CSI-2 |
| 深度相机(ToF/结构光) | 距离 | 深度图 + 红外图 | 10~30 fps | MIPI CSI-2 / USB |
| 激光雷达 | 距离与角度 | 3D 点云 | 10~20 Hz | Ethernet / USB |
| IMU | 加速度、角速度 | 六轴时序数据 | 100~1000 Hz | SPI / I2C / UART |
| 轮式里程计 | 位移与转角 | 一维/二维增量 | 50~200 Hz | CAN / UART |
| 超声波/红外 | 近距障碍 | 距离标量 | 10~50 Hz | GPIO / I2C |
这些传感器的数据特征差异极大:相机是“高带宽、低频率、二维稠密”,IMU 是“低带宽、高频率、一维时序”,激光雷达是“高带宽、中频率、三维稀疏”。这种异构性直接决定了数据流处理必须分路进行,不能用一个统一管线硬套。
三、数据流特征与处理链
从传感器到算法,数据流通常经历“采集—同步—标定—预处理—融合—推理”几个阶段。以视觉惯性里程计(VIO)为例:相机以 30 fps 输出图像,IMU 以 200 Hz 输出角速度和加速度。两者时间戳不同步,必须先做时间对齐;相机内参、IMU 与相机之间的外参需要提前标定;图像要做去畸变、灰度化、特征提取,IMU 要做预积分;最后在优化器中联合求解位姿。
这条链路的带宽和算力需求可以粗略估算。以 1280×720、30 fps、8 bit 灰度图为例,单路相机原始数据率约为 1280×720×30×8 ≈ 221 Mbps;若为 RGB 三通道则约 663 Mbps。IMU 以 200 Hz、每帧 6 个 float32 计算,数据率仅约 38 kbps,但频率高、时序敏感。激光雷达 128 线、20 Hz、每点 3 个 float32,数据率可达数百 Mbps。可见,带宽压力主要来自图像和点云,实时性压力主要来自 IMU 和控制回路。
四、感知系统对计算平台的核心需求
把上面的数据流映射到计算平台,可以归纳出四类核心需求。
算力需求:几何感知中的特征提取、点云配准、图优化,语义感知中的卷积推理、后处理,都是计算密集型任务。以 1080p 图像上的轻量检测网络为例,单帧推理约需 1~5 GFLOPs;若同时跑 4 路相机、30 fps,总算力需求可达数十 GFLOPs 量级。Snapdragon 平台的异构架构(Kryo CPU、Adreno GPU、Hexagon DSP、NPU)正是为这种混合负载设计的:CPU 负责调度与逻辑,GPU 负责并行图像处理,DSP/NPU 负责低功耗推理。
延迟需求:感知延迟必须与控制周期匹配。若控制回路为 100 Hz(10 ms 周期),则感知端到端延迟最好控制在 30~50 ms 以内,否则会出现“看到时已经撞上”的问题。延迟预算要拆到每个环节:采集 5 ms、传输 3 ms、预处理 5 ms、推理 15 ms、后处理 5 ms、融合 5 ms,合计约 38 ms,留出余量。
功耗需求:移动机器人通常靠电池供电,整机功耗预算可能只有 20~50 W,感知计算部分一般控制在 5~15 W。这意味着不能无限制地堆算力,而要通过模型量化、分辨率裁剪、帧率自适应、任务分级调度来平衡性能与功耗。
接口需求:相机需要 MIPI CSI-2 通道,激光雷达需要千兆以太网或 USB 3.0,IMU 和里程计需要 SPI/I2C/CAN,执行器需要 PWM 或 CAN。接口数量、带宽和实时性必须与传感器配置匹配,否则会出现“算力够但接不上”的尴尬。
五、一个可参考的感知需求清单
下面给出一份简化的感知系统需求清单示例,可用于项目初期的平台选型与集成规划。表中数值为教学示例,实际项目需按具体传感器和算法重新核算。
| 项目 | 示例值 | 说明 |
|---|---|---|
| 相机路数 | 4 路 | 前视、后视、左、右 |
| 单路分辨率/帧率 | 1920×1080 @ 30 fps | RGB,8 bit |
| 相机总带宽 | ≈ 1.5 Gbps | 4 × 1920×1080×30×8 |
| IMU 频率 | 200 Hz | 六轴,SPI 接口 |
| 激光雷达 | 1 路,20 Hz | 千兆以太网 |
| 感知端到端延迟 | ≤ 50 ms | 从曝光到输出检测结果 |
| 感知计算功耗 | ≤ 12 W | 不含传感器本身 |
| 推理算力需求 | ≥ 20 TOPS(INT8) | 多路并发推理 |
把这份清单与 Snapdragon 平台的规格对照,就能快速判断哪些任务可以放在 NPU 上跑、哪些需要 GPU 加速、哪些必须留在 CPU 做实时调度。感知系统集成的第一步,不是写代码,而是把“任务—传感器—数据流—平台需求”这条链梳理清楚。