Apollo5.5源码分析:视觉感知架构

Apollo开源代码链接:https://github.com/ApolloAuto/apollo

本文主要讲解Apollo/modules/perception/camera中的视觉感知模块架构。

1. 架构设计

Apollo5.5源码分析:视觉感知架构_第1张图片

引自:https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_5.0.md 

 2. 根据架构设计抽象接口类(类中方法设为虚函数--camera/lib/interface

Apollo5.5源码分析:视觉感知架构_第2张图片

备注:

  • base_init_options用于派生输入参数的接口
  • base_camera_perception用于派生APP的接口
  • base_inference_engine 接口预留了,但未使用
  • base_landmark_detector\base_scene_parser(语义分割)\base_lane_tracker 接口预留,但功能未开发

3. 每个lib的具体实现(通过继承接口类设计的派生类)--camera/lib/traffic_light| obstacle & feature_extractor | lane | calibrator & calibration_service | motion & motion_service | dummy

Apollo5.5源码分析:视觉感知架构_第3张图片

备注:以下lib代码中存在,但是架构图中未体现

•tl_preprocessor根据高精地图tfl位置投影到图像上

•motion_service & plane_motion 提供车辆位置服务

 

4. APP: lib中的类组合成基本的功能-- camera/app

Apollo5.5源码分析:视觉感知架构_第4张图片

备注:

traffic_light_camera_perception \ lane_camera_perception \ obstacle_camera_perception均派生自接口类base_camera_perception

另外:

camera/common 中为 lib app 公用的类 & 函数
camera/tools 基本功能实现,含 main 入口
camera/test 单元测试(基于 google -- gtest

 

One more thing:

 在类之间传递的是结构体,都是struct类型,基本的数据结构存放在Apollo/modules/perception/base,如TrafficLight的结构体(traffic_light.h)、车道线的结构体LaneLine (lane_struct.h)、OD的结构体Object(object.h)。视觉camera传递的数据在Apollo/modules/perception/camera/common/camera_frame.h中进行组装成CameraFrame结构体,其中包含了时间戳、帧ID、OD、LaneLine、TrafficLight等。

 

你可能感兴趣的:(自动驾驶)