Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础

Apollo学习笔记

  • 零、目录
  • 一、Apollo感知框架介绍
    • 1.1 检测和分类
    • 1.2 跟踪
    • 1.3 感知模块代码结构
      • 1.3.1 感知模块入口
  • 二、Lidar障碍物检测、红绿灯识别
    • 2.1 Lidar感知模块
      • 2.1.1 dag文件
      • 2.1.2 源码追溯
      • 2.1.3 具体实现—检测模块
      • 2.1.4 具体实现—追踪模块
      • 2.1.5 具体实现—融合模块
    • 2.2 红绿灯识别
  • 三、模块的启动方法和基础配置
  • 四、感知模块启动视频演示

零、目录

在这里插入图片描述
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第1张图片

一、Apollo感知框架介绍

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第2张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第3张图片

1.1 检测和分类

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第4张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第5张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第6张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第7张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第8张图片

1.2 跟踪

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第9张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第10张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第11张图片

感知要实现的功能:

  • 红绿灯检测
  • 车道线检测
  • 基于相机的障碍物检测
  • 基于点云的3D障碍物检测
  • radar检测

1.3 感知模块代码结构

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第12张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第13张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第14张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第15张图片

1.3.1 感知模块入口

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第16张图片

看代码从此处开始

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第17张图片

dag文件启动:

mainboard -d 路径/***.dag

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第18张图片

上图所示为conf文件下一个64线Lidar的配置文件。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第19张图片

value:对应配置文件的目录

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第20张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第21张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第22张图片

二、Lidar障碍物检测、红绿灯识别

2.1 Lidar感知模块

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第23张图片

流程:
点云预处理→3D障碍物检测→目标追踪→融合

输出:
type类型(车辆、行人、非机动车道?)、distance目前空间中的位置、velocity(当前速度)、航向角(heading)

2.1.1 dag文件

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第24张图片

首先需要了解dag文件。

上图流程中检测到的障碍物detection objects是单帧的。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第25张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第26张图片

module_config:
module_library:说明最终会生成一个二进制文件.so
components:实现哪些功能
components/config_file_path:即1.3.1中的config文件,其config目录
reader:该模块读取哪个channel的数据

检测模块
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第27张图片

上游:128线激光雷达拿到的数据

点云补偿等

输出:检测到的障碍物

追踪模块
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第28张图片

输出:融合之前的障碍物

融合模块
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第29张图片
fusion_method:概率融合

2.1.2 源码追溯

通过.so可执行文件搜索其源码,可知它由如下build文件产生。
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第30张图片

deps:再查看deps中的target——inner_lidar又由什么生成,同理一层一层寻找。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第31张图片

可在component的BUILD里边查看。
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第32张图片

2.1.3 具体实现—检测模块

代码结构
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第33张图片

proto文件和配置文件相互对应

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第34张图片

设计模式

在这里插入图片描述
比如右侧detector:可通过多种方式实现,但实现的时候只能采用其中一。通过配置文件选取指定detector。

补充CNN和Pointpillars

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第35张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第36张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第37张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第38张图片

图片是三个通道。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第39张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第40张图片

9个通道:
(x,y,z):空间位置
r:点云强度
xc:中心
其他点云点相对于中心的偏移

再类似图像的3个通道卷积,这里对9个通道进行卷积操作。
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第41张图片
紫色圆框:先缩小分辨率;再上采样(方便检测体积不同的障碍物)

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第42张图片

2.1.4 具体实现—追踪模块

代码结构
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第43张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第44张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第45张图片
在这里插入图片描述
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第46张图片

匹配过程中考虑因素:类型相近、大小、heading等。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第47张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第48张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第49张图片

得到障碍物轨迹后可用来做预测:如下2为直行趋势,3为右转趋势。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第50张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第51张图片

optimizer里边。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第52张图片

1可以匹配的有a和b,所以可暂时1匹配a;

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第53张图片

2可以匹配的有b和c,所以可暂时2匹配b;

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第54张图片

此时3已无新的可匹配项,故让3匹配a,再让1匹配另一个(此时1还有得选),依次推到2也要更改匹配为c。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第55张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第56张图片
d:可能是新出现的障碍物
4:可能是已经消失的障碍物,若持续几帧还未检测到,则将之抛弃。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第57张图片

location距离不会相差太大;
direction即heading也不会相差太大,不太可能前一帧向前后一帧向后;
大小。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第58张图片

最下函数专门计算各个维度的distance。

代码结构
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第59张图片

  • 关联模块
  • 测量值模块
  • 多激光雷达融合模块
  • 地图分割模块(目前貌似未使用)

右下思维导图解析:

  • 首先由MlfEngine实现,其分为两个模块MlfTrackObjectMatcher和MlfTracker;
  • MlfTrackObjectMatcher:数据匹配模块,即上述匈牙利匹配和distance计算;distance_collection收集进行匹配所需要的数据后交由MlfTrackObjectDistance进行计算最终得出一个权重送到二分图中进行匈牙利匹配,匹配有前景和后景(Gnn)两个匹配;
  • 匹配完成后需要对运动状态进行更新:两个模块,形状更新(shape)和速度信息之类(motion)更新;同样需要收集当前数据信息再进行计算后refine。

卡尔曼滤波
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第60张图片

假设它匀速运动,可得到Xt时刻的位置:
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第61张图片

Xm为地图测量得到的位置

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第62张图片

此时该信哪一个位置呢?Xt还是Xm?

可通过权重分配进行计算,若传感器精度较为精确,可赋予Xm更高的权重后进行计算:

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第63张图片

2.1.5 具体实现—融合模块

上述tracking障碍物已具有速度。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第64张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第65张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第66张图片

  • 第一步:关联

代码结构
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第67张图片

左上:max_lidar_invisible_period,允许最大跟丢时间;不同传感器设定不同阈值;

右下:每个传感器特性不一样因此每个传感器融合的距离也有所不一。

配置文件先打开。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第68张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第69张图片

从include里边找到依赖库

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第70张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第71张图片

此时是基类,可查看是哪里引用了它,便可找到它的派生类。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第72张图片

DS证据理论
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第73张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第74张图片

2.2 红绿灯识别

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第75张图片

dag文件

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第76张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第77张图片

若果没有红绿灯信息会返回进行下一次的查询;

获取红绿灯ID后获取其在点云中的位置(高精地图中的位置);
长焦摄像头:
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第78张图片

短焦摄像头:
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第79张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第80张图片

这张会被舍去,转而锁定短焦摄像头那一张;若两张摄像头都可见,则选择清晰的那一张。

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第81张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第82张图片

投影后:
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第83张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第84张图片

时序预测修正
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第85张图片

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第86张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第87张图片

三、模块的启动方法和基础配置

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第88张图片
在这里插入图片描述
在这里插入图片描述
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第89张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第90张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第91张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第92张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第93张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第94张图片

四、感知模块启动视频演示

Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第95张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第96张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第97张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第98张图片
Apollo星火计划学习笔记第六讲——Apollo感知模块详解实践2感知基础_第99张图片

你可能感兴趣的:(自动驾驶,#,Apollo,人工智能,自动驾驶,Apollo,感知)