欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Apollo感知模块:一

程序员文章站 2022-03-05 18:25:31
...

        一直有一个想法,想将apollo感知模块的主要代码脱离apollo框架,现就当中的一些经验心得与大家一起分享,主要从摄像头感知模块来说起,说的不对之处敬请指正。

        apollo摄像头部分主要使用了yolo3d深度学习模型,这个模型的介绍网上也有讨论,在这里就不细说了,这个网络架构是基于caffe框架下改写,网络模型在docker环境中可以获取,也就是在modules/perception/model/yolo_camera_detector/yolo3d_1128文件夹下用到的模型,caffe框架apollo只提供了编译好的动态链接库,没有提供源代码,所有这部分网络模型没有办法自己处理,所以我就暂时用了tensorflow yolov3模型代替,有了自己的网络模型改动起来也方便。

       首先我们要对这部分架构有一个基本的了解,apollo的基本架构是每个传感器为一个subnode,在每个subnode里面,Apollo对其数据也做了一定的预处理,这里我们以camera为例: 

//-- yolo
detector_->Multitask(img, CameraDetectorOptions(), &objects, &mask);

//-- obj 2d -> 3d
converter_->Convert(&objects);

//-- 根据外参将obj从相机坐标系转换到车辆坐标系
transformer_->Transform(&objects);

tracker_->Associate(img, timestamp, &objects);

//-- 使用kalman进行跟踪
filter_->Filter(timestamp, &objects);

         detector_部分我直接用yolov3的结果代替,2d->3d因为我这里只用摄像头,只考虑2d信息,所以这块代码可以先不考虑,如何后续由激光雷达和毫米波雷达这块代码可以加上,因为只是单纯的测试,所以不考虑坐标系转换,所以transformer_也可以暂时不看,如果后续在车上调试这部分可以加上,那么就只剩下跟踪和kalman滤波这两部分代码了,是不是就变得相对容易了,这里主要我们要了解apollo感知object的数据结构,这部分是关键,因为我们要把yolov3输出的东西嫁接到这个数据结构上。

 

     

相关标签: apollo 感知