Skip to content

感知组件设计#

本文档的目的#

本文档概述了 Perception Component 开发中的高级设计策略、目标和相关基本原理.通过本文档,希望所有 OSS 开发人员都能理解设计 Perception 组件的设计理念、目标和约束,并无缝参与开发.

概述#

感知组件接收来自传感、定位和地图组件的输入,并添加语义信息(例如,对象识别、障碍物分割、交通信号灯识别、占用网格地图),然后将其传递给规划组件.此组件设计遵循 Autoware 的总体理念,定义为 微自治概念.

进球和非进球#

Perception Component 的作用是根据通过 Sensing 获得的数据识别周围环境,并获取足够的信息 (例如动态物体的存在、静止障碍物、盲点和交通信号信息) 以实现自动驾驶.

在我们的整体设计中,我们强调 微自治架构 的概念.该术语是指一种设计方法,该方法侧重于功能的适当模块化、这些模块之间接口的明确定义,以及因此系统的高度可扩展性.鉴于此背景,Perception Component 的目标不是解决所有可以想象的复杂用例(尽管我们确实旨在支持基本用例),而是提供一个可以根据用户需求定制的平台,并可以促进其他功能的开发.

为了阐明设计概念,以下几点被列为目标和非目标.

目标:

  • 提供基本功能,以便定义一个简单的 ODD.
  • 实现能够为每辆自动驾驶汽车提供感知功能的设计.
  • 可通过第三方组件进行扩展.
  • 提供一个平台,使 Autoware 用户能够开发完整的功能.
  • 提供一个平台,使 Autoware 用户能够开发始终优于人类驾驶员的自动驾驶系统.
  • 提供一个平台,使 Autoware 用户能够开发实现 100% 准确率无差错识别 的自动驾驶系统.

非目标:**

  • 开发专门用于特定/有限 ODD 的感知组件架构.
  • 实现完整的功能和能力.
  • 超越人类驾驶员的识别能力.
  • 实现 100% 准确率无差错识别 .

高级架构#

此图描述了 Perception 组件的高级架构.

整体感知架构

感知组件 由以下子组件组成:

  • 对象识别:识别当前帧中自我车辆周围的动态对象、地图创建过程中不存在的对象,并预测它们的未来轨迹.这包括: -行人 -汽车
    • 卡车/公共汽车 -自行车 -摩托车 -动物
    • 交通锥
    • 道路碎片:掉落在道路上或漂浮在空中的物品,如纸板、油桶、垃圾桶、木材等
  • 障碍物分割:识别源自障碍物的点云,包括动态物体和静态障碍物,这些障碍物需要自主车辆避开它们或在障碍物前停下来.
    • 这包括:
      • 所有动态对象(如上所列)
      • 路缘石/护柱 -障碍 -树
      • 墙体/建筑物
    • 这不包括: -草
      • 水花
      • 烟雾/蒸气 -报纸
      • 塑料袋
  • 占用网格地图:检测盲点(没有可用信息的区域以及动态对象可能跳出的区域).
  • 红绿灯识别:识别红绿灯的颜色和箭头信号的方向.

组件接口#

下面介绍了 Perception Component 与其他组件之间的输入/输出概念.参见 感知组件接口 页面.

Perception 组件的输入#

  • 来自 Sensing:此输入应提供有关环境的实时信息.
    • Camera Image(摄像机图像):从摄像机获取的图像数据.
    • Point Cloud:从 LiDAR 获取的点云数据.
    • 雷达对象:从雷达获取的对象数据.
  • 来自定位(Localization):此输入应提供有关 ego 车辆的实时信息.
    • 车辆运动信息:包括 ego 车辆的位置.
  • 从地图:此输入应提供有关环境的静态信息的实时信息.
    • Vector Map(矢量地图):包含有关环境的所有静态信息,包括车道区域信息.
    • 点云贴图:包含静态点云贴图,其中不应包含有关动态对象的信息.
  • 来自 API
    • V2X 信息:来自 V2X 模块的信息.例如,来自交通信号的信息.

感知组件的输出#

  • 前往规划
    • 动态对象:提供有关事先无法了解的对象(如行人和其他车辆)的实时信息.
    • 障碍物分割:提供有关障碍物位置的实时信息,这比检测到的对象更原始.
    • 占用网格地图:提供有关是否存在遮挡区域信息的实时信息.
    • 红绿灯识别结果:实时提供每个红绿灯的当前状态.

如何添加新模块 (WIP)#

如目标会话中所述,此感知模块设计为可由第三方组件扩展.有关如何添加新模块和扩展其功能的具体说明,请参阅提供的文档或指南 (WIP).

支持的功能#

特征 描述 要求
基于 LiDAR DNN 的 3D 探测器 该模块将点云作为输入,并检测车辆、卡车、公共汽车、行人和自行车等对象. - 点云
基于相机 DNN 的 2D 探测器 该模块将摄像头图像作为输入,并在二维图像空间中检测车辆、卡车、公共汽车、行人和自行车等物体.它检测图像坐标中的对象,并且提供 3D 坐标信息不是强制性的. - 相机图像
LiDAR 集群 该模块执行点云的聚类和形状估计,以实现无标签的对象检测. - 点云
基于半规则的检测器 该模块使用来自图像和点云的信息来检测物体,它由两个组件组成:LiDAR 集群和基于摄像头 DNN 的 2D 探测器. - 基于摄像头 DNN 的 2D 探测器和 LiDAR 聚类的输出
基于雷达的 3D 探测器 该模块将雷达数据作为输入并检测动态 3D 对象.详细请参见 本文档. - 雷达数据
对象合并 该模块集成了来自各种检测器的结果. - 检测到的对象
插值器 此模块通过使用 Tracking results (跟踪结果) 来保持长期检测结果,从而稳定对象检测结果. - 检测到的对象
- 跟踪对象
追踪 此模块为检测结果提供 ID 并估计速度. - 检测到的对象
预测 此模块根据地图的形状和周围环境预测动态对象的未来路径(及其概率). - 跟踪对象
- 矢量映射
障碍物分割 该模块识别源自 ego 车辆应避开的障碍物的点云. - 点云
- 点云地图
占用网格图 此模块检测盲点(没有可用信息的区域以及动态对象可能会跳出的区域). - 点云
- 点云地图
交通灯识别 该模块检测交通信号的位置和状态. - 相机图像
- 矢量贴图

参考实现#

启动 Autoware 时,将加载默认参数,并启动参考实现.更多细节请参考 参考实现.