感知组件设计#
本文档的目的#
本文档概述了 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 时,将加载默认参数,并启动参考实现.更多细节请参考 参考实现.