# 9. 感知算法综述(Survey) 本文从**学术发展史、算法体系、工程实践**三个维度,系统综述移动机器人环境感知领域,并明确 Autonomy `perception` 模块的定位与选型依据。 > 公式推导见 [03_math.md](03_math.md);实现细节见 [05_architecture.md](05_architecture.md) 与各子文档。 --- ## 9.1 概述:感知在导航栈中的位置 | 子问题 | 英文 | 典型模块 | 频率 | |--------|------|----------|------| | **环境感知** | **Perception** | **`perception`** | **10–30 Hz** | | 定位 | Localization | `localization` | 10–50 Hz | | 预测 | Prediction | `prediction` | 10–20 Hz | | 路径规划 | Planning | `planning` | 1–5 Hz | | 运动控制 | Control | `control` | 10–50 Hz | **感知**将原始传感器数据转化为结构化环境表示,是自动驾驶与移动机器人**理解世界**的基础层。 ``` Sensors ──→ Perception ──→ Prediction ──→ Planning ──→ Control │ └──→ Map (costmap / semantic map) ``` --- ## 9.2 感知任务分类 ### 9.2.1 按传感器模态 | 模态 | 典型任务 | 代表算法 | |------|----------|----------| | 2D 激光 | 障碍检测、SLAM | Hector SLAM, GMapping | | 3D 点云 | 3D 检测、地面分割 | PointPillars, Patchwork | | RGB 相机 | 2D 检测、语义分割 | YOLO, Mask R-CNN | | RGB-D | 3D 检测、场景理解 | VoxelNet, Frustum PointNet | | 多模态融合 | 鲁棒检测 | BEVFusion, MV3D | ### 9.2.2 按输出类型 | 输出 | 用途 | Autonomy 对应 | |------|------|---------------| | 几何障碍 | 避障、costmap | `ObstacleLayer` ✅ | | 2D/3D 检测框 | 动态障碍跟踪 | `vision_msgs` ⏳ | | 语义分割 | 可行驶区域、规则推理 | 规划 | | 占据栅格 | 全局规划 | `map` 静态层 | --- ## 9.3 2D 激光感知 ### 9.3.1 射线模型 激光第 $i$ 束:$p_i = o + r_i \hat{d}_i$。障碍点直接写入 costmap 或经聚类后输出障碍列表。 ### 9.3.2 聚类与跟踪 - **欧氏聚类**:$\|p_i - p_j\| < r$ 归为同一障碍 - **跟踪**:卡尔曼滤波 + 数据关联(匈牙利算法) Autonomy 当前通过 `ObstacleLayer` 实现射线级障碍,无显式聚类。 --- ## 9.4 视觉目标检测 ### 9.4.1 发展时间轴
2012
AlexNet — ImageNet 突破,深度学习复兴
2015
YOLO v1 — 单阶段实时检测;Faster R-CNN — 两阶段精度标杆
2020
YOLOv5 — 工程化部署;DETR — Transformer 检测
2023+
YOLOv8/v11 — ONNX 友好;RT-DETR — 实时 Transformer
### 9.4.2 算法对比 | 算法 | 类型 | 速度 | 精度 | 部署 | |------|------|------|------|------| | YOLOv8 | 单阶段 | ⭐⭐⭐ | ⭐⭐ | ONNX ✅ | | Faster R-CNN | 两阶段 | ⭐ | ⭐⭐⭐ | 较重 | | SSD | 单阶段 | ⭐⭐ | ⭐⭐ | 中等 | | RT-DETR | Transformer | ⭐⭐ | ⭐⭐⭐ | 较新 | **Autonomy 选型**:`common/network` 针对 YOLO 网格头优化,推荐 YOLOv8 ONNX 作为首个 Perception 插件。 --- ## 9.5 3D 点云感知 ### 9.5.1 经典流水线 ``` 点云 → 体素下采样 → 地面分割 → 聚类 → 3D 框拟合 ``` ### 9.5.2 深度学习方法 | 方法 | 特点 | |------|------| | PointPillars | 柱状体素 + 2D CNN,实时性好 | | VoxelNet | 3D 体素 CNN | | PointNet++ | 点级特征,精度高但慢 | | BEVFusion | 多模态 BEV 融合 | --- ## 9.6 多目标跟踪(MOT) | 组件 | 算法 | |------|------| | 运动模型 | CV / CTRV / CA | | 数据关联 | 匈牙利、JPDA、DeepSORT | | 状态估计 | 卡尔曼滤波、粒子滤波 | 详见 [03_math.md §3.5](03_math.md#35-卡尔曼滤波跟踪多目标)。 --- ## 9.7 工程实践考量 | 因素 | 建议 | |------|------| | 实时性 | 感知频率 ≥ 10 Hz;YOLO nano 适合边缘设备 | | 鲁棒性 | 多传感器融合;激光作 costmap 兜底 | | 可维护性 | 插件化;配置驱动 | | 与 Nav2 对齐 | `vision_msgs`、costmap 接口 | --- ## 9.8 Autonomy 能力矩阵 | 能力 | 状态 | 路径 | |------|------|------| | 激光 → costmap | ✅ | `map/costmap_2d/ObstacleLayer` | | 点云 → costmap | ✅ | `VoxelLayer` | | YOLO ONNX 推理 | ✅ | `common/network` | | vision_msgs 输出 | ⏳ | 消息已定义,Perception 未发布 | | PerceptionServer | ⏳ | 骨架 | | 多目标跟踪 | ❌ | 待实现 | | 语义分割 | ❌ | 待实现 | --- ## 9.9 参考文献与延伸阅读 | 主题 | 参考 | |------|------| | YOLO | [Redmon et al., "You Only Look Once: Unified, Real-Time Object Detection"](https://arxiv.org/abs/1506.02640) | | PointPillars | [Lang et al., "PointPillars: Fast Encoders for Object Detection from Point Clouds"](https://openaccess.thecvf.com/content_CVPR_2019/html/Lang_PointPillars_Fast_Encoders_for_Object_Detection_From_Point_Clouds_CVPR_2019_paper.html) | | Apollo Perception | [Baidu Apollo Perception 开源文档](https://apollo.baidu.com/docs/apollo/latest/md_modules_2perception_2README.html) | | Nav2 Costmap | [Nav2 Costmap 2D](https://docs.nav2.org/) | | vision_msgs | [ROS 2 `vision_msgs` 包](https://github.com/ros-perception/vision_msgs) |