Learning Perception Module

参考文章:自动驾驶开发者说|框架|如何单独运行apollo相机感知模块? - 知乎引言文章主要尝试了apollo框架下,视觉感知模块的单独运行,并利用离线的数据包进行检测实时展示结果。过程相对来说比较顺利。在加上已经用VScode搭建的单步调试环境,我可以把玩的很久。 1. 软件-环境-数据准备Ap…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/510712104

1. 启动模块

1)启动dreamview: ./scripts/bootstrap.sh       bash scripts/bootstrap.sh

2)启动transform模块:

      cyber_launch start  /apollo/modules/transform/launch/static_transform.launch

3)启动图像压缩模块:

     cyber_launch start modules/drivers/tools/image_decompress/launch      

                                                                                                      /image_decompress.launch

4)启动障碍物检测模块:
     mainboard -d modules/perception/productio/dag/dag_streaming_perception_camera.dag

2. 组件component

 组件作用

1  消息融合:不同传感器的消息进行融合

    消息过滤:去除某个传感器中不需要的消息

2 cyberRT构建应用程序模块的基类

   构建引用程序模块

3 apollo中的感知、定位等模块,这些模块需要订阅大量的消息,根据订阅到的消息产生输

   出;

   实际上,这些模块订阅到的消息都需要通过组件进行二次处理。各个模块中都频繁使用了

   组件

3. 组件的使用

    自定义类,继承cyberRT中内置的component类,重写Init()、Proc( )函数

    编写dag、launch文件;

    编写BUILD文件;

    编译、执行;

3.1 自定义组件头文件

class common : public Component {

public:

        bool Init();

        bool Proc(const std::shared_ptr& stu) override;

};

Proc( )函数接受一个智能指针,主要用来处理订阅到的消息

最多能够接受四种消息类型

3.2 自定义组件源文件

重写Init( )函数

重写Proc( )函数:接受std::shared_ptr<与类中参数保持一致>

3.3 配置BUILD文件

cc_libary:生成库,将定义的源文件打包成库文件

cc_binary:将库文件变成动态链接库

file_group:将dag、launch文件打包

install:安装文件;

3.4 dag文件

指定库文件

指定Component类名称、获取数据的channel、相关文件;

都是与component相关的设置

① 库是由component子类文件生成的库

② 名称是子类的名称

③ channel是发布者的话题

Learning Perception Module_第1张图片

四 perception.dag

dag文件

指明库函数

你可能感兴趣的:(Apollo,c++)