Apollo6.0概率融合(probabilistic_fusion)

继上篇:Apollo 6.0的融合组件分析(fusion_component)Apollo 6.0的融合模块入口分析(obstacle_multi_sensor_fusion),本文详述2. 主融合逻辑部分(即BaseFusionSystem的Fuse函数)。

代码链接:probabilistic_fusion.cc

1. 流程图

ProbabilisticFusion::Fuse的流程图如下所示,

4. 收集融合帧(CollectFusedFrames) 3. 主融合逻辑(FuseFrame) 2. 获取所有传感器的缓存帧 1. 缓存帧数据 收集允许发布的前景轨迹和后景轨迹并将他们转为Object类型 对每一帧进行融合 对每个传感器分别获取符合时间戳要求的所有缓存帧 是主传感器帧? 开启数据读写锁并缓存帧数据 结束 是配置允许的传感器? 结束

流程图说明:

  • 1. 缓存帧数据时会自动检测帧的SensorId是否在一个名叫sensors_的unordered_map中,如果不在则添加。然后把帧数据加入sensors_的值里。按传感器id缓存帧
  • 2. 获取所有传感器的缓存帧中对每个传感器都抽取从上一次请求获取帧的时间到这次的主传感器帧时间之间的最晚的那一帧。
  • 3. 主融合逻辑(FuseFrame)内容很多,后续文章详述。
  • 4. 收集融合帧(CollectFusedFrames)中允许发布的轨迹的逻辑如下所述
    • 如果lidar看不到,radar看不到,camera看到且给的不是3d目标且障碍物不是交通锥则不能发布
    • 如果在深夜(11点后),以下三点同时为假则不能发布,此处条件来自pbf_keeper.cc
      • 配置中被lidar看到就发布的标志位为true且被lidar看到
      • 配置中被radar看到就发布的标志位为true且被radar看到,与此同时,如果是前向radar直接为假,如果是后向radar,其观测距离大于最小置信距离且速度大于4,存在概率大于设定阈值。
      • 配置中被camera看到就发布的标志位为true且被camera看到且相机输出3d目标且不是深夜且(是交通锥或者距离大于相机最小发布距离)且存在概率大于阈值
    • 运用追踪次数过滤逻辑且追踪次数小于阈值
上一篇:《英诗金库》I-46:Full Fathom Five, by W. Shakespeare


下一篇:leetcode求岛屿的个数和最大周长