自动驾驶 Apollo 源码分析系列,感知篇(八):感知融合代码的基本流程

本文深入解析Apollo自动驾驶系统中感知融合的代码流程,涵盖Fusion模块启动、FusionComponent初始化、数据融合框架及其核心步骤,如AddSensorMeasurements、getLatestFrame和FuseFrame等。通过理解这些流程,有助于了解多传感器数据融合在提升自动驾驶感知能力中的关键作用。
摘要由CSDN通过智能技术生成

说起自动驾驶感知系统,大家都会谈论到感知融合,这涉及到不同传感器数据在时间、空间的对齐和融合,最终的结果将提升自动驾驶系统的感知能力,因为我们都知道单一的传感器都是有缺陷的。本篇文章梳理 Apollo 6.0 中的感知数据融合基本流程。

感知架构

文章开始前,还是需要先看一看 Apollo 中感知的整体架构。
在这里插入图片描述
它有这么多传感器。

那感知融合,最终要融合什么呢?

在这里插入图片描述
Apollo 的感知系统的结果要以分为 2 个大类:

  • 障碍物检测(车、行人或者其它交通要素)
  • 红绿灯检测

借助于激光雷达和深度学习,Apollo 的感知模块能够输出障碍物的 3D 信息。

Fusion 流程

1. Fusion 模块在哪里启动?

之前说过 Apollo 的组件是在 CyberRT 的框架中运行,关键概念是 Component。

Perception 是一个大的 Component,它包含了很多子 Component,而数据融合作为一个子 Component 存在。

在这里插入图片描述
这个是在
modules/perception/production/dag/dag_streaming_perception.dag
中定义的。

所以,我们需要去找 FusionComponent。
并且,我们知道了它的配置在 fusion_component_conf.pb.txt 中。
在这里插入图片描述
能够得到以下信息:

  1. 融合方法:ProbabilisticFusion
  2. 主要参与融合的传感器:Lidar 和 2 个焦距不一样的 Camera
  3. 融合结果存放到 obstacles 当中。
2. FusionComponent 的初始化

Fusion Component 的地址是这个:
modules/perception/onboard/component/fusion_component.cc

Init 方法也没有几行代码
在这里插入图片描述
第一步,加载 config 参数,文章前面刚已经张贴了。

在这里插入图片描述
对于融合方法、传感器名称都是直接用 std::string 类型保存。

我们需要关心代码后面部分的 InitAlgorithmPlugin() 方法,这个是用来初始化 Component 涉及的算法的。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

frank909

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值