Apollo进阶课程㊳丨Apollo平台的快速入门

时间:2024-03-31 08:06:17

原创: 阿波君 Apollo开发者社区 今天

Apollo进阶课程㊳丨Apollo平台的快速入门

Apollo是向汽车行业及自动驾驶领域的合作伙伴提供一个开放、完整、安全的软件平台,帮助他们结合车辆和硬件系统,快速搭建一套属于自己的完整的自动驾驶系统。

上周阿波君为大家详细介绍了「进阶课程㊲丨Apollo自动驾驶架构介绍」

此课程介绍了自动驾驶平台的架构由四个部分组成:第一是最底层的车辆平台;第二是传感器层;第三是核心软件层;第四是云服务层

本周阿波君将与大家分享Apollo平台的快速入门的相关课程。下面,我们一起进入进阶课程第38期。

目录

1.Docker

2.硬件接入

3.编译

4.高精地图

5.工具链

6.模拟和Dreamview


本节主要和大家分享Apollo的快速入门方法,包括编译、高精地图和实时相对地图、一些调试工具以及新加入的计算单元模块

首先,我们对Apollo项目的Issue也进行了一些统计分析,结果如图1所示。从图中可以看出大家对感知、Build、Docker、规划、调试等方面的内容比较感兴趣。另外是在还没有硬件的情况下,如何在理想的环境中做一些算法模块的开发和调试。我们将就这些大家比较感兴趣的问题进行讲解。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                图1 Apollo问题列表统计

1.Docker

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                                 图2 Docker模块

Docker是一种容器的技术,它在是Linux内核的基础上做了一些轻量级和隔离机制的优化,让环境更小,部署起来更快。利用Docker可以使整个工程的安装更加简单。Docker镜像通常是一个配置好的运行环境,包括依赖的第三方库等,使得用户不需要对环境编译做过多复杂的操作。例如,在Release版本中,Apollo各个模块是一个已经编译好的二进制文件,可以直接运行;如果是开发版本,通常已经加载了所需的第三方库,用户只需要执行对应的编译指令。

另一方面,假如你对官方提供的运行环境有疑问,或者你想在自己的硬件上部署Docker,我们也提供了对应的Docker file。


2.硬件接入

很多开发者关心如何将不同于参考硬件的传感器继承到Apollo平台。要完成自己硬件的集成,需要遵循以下三步,如图3所示:第一需要原始的 UDP(User Data Packet,用户数据包)。第二是做一个ROS Driver方法,把驱动编译到Apollo里面。第三是把数据发布出来。下面举两个例子讲述具体如何操作。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                             图3 Apollo环境中如何使用不同参考硬件传感器

第一个例子是如何使用一个新型号的Camera,假设是USB接口的相机。如图4所示,最下层是相机硬件;往上一层是一个标准的底层驱动,即Video for Linux driver; 再上一层是一个ROS Driver,最上层是Apollo可以接收到的内容。要使用该相机,主要的工作是底层硬件的解析,使得Apollo可以接收到相应的数据。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                       图4 添加不同的相机

第二个例子是激光雷达。它大致的工作流程是:硬件通常以基于内核Socket的方式把数据传输给PC,PC端做一些数据处理之后发布对应的消息类型。对于激光雷达来而言,发布的是Pointcloud消息类型,该消息将被最上层的Apollo感知模块接收如图5所示。右图给出了ROS Driver如何解析UDP数据包的过程。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                               图5 如何添加不同于参考的激光雷达


3.编译

编译安装Apollo的步骤大概分为三个阶段,如图6所示:第一阶段是在Ubuntu环境下进行操作,包括下载Apollo源码,安装Docker。Docker的安装方式有在线和离线两种方式,大家可以根据网络环境选取合适的安装方式。第二阶段是进入Docker,拉取Apollo镜像,并以此镜像创建容器。第三个阶段是进入创建的容器,编译Apollo源码。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                         图6 Apollo编译过程

编译结束之后可以做RTK循迹测试。循迹比较简单,它包含两个文件,核心就是一个Record,用来录制轨迹的信息,也就是一些GPS点;另外记录车辆底盘返回的速度信息、加速度信息、曲率、朝向等。RTK循迹测试就是把车辆底盘发出的这些主题和定位输出进行融合。


4.高精地图

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                         图7 高精地图和实时相对地图

图7左侧是一个高精度地图,右侧是实时相对地图。实时相对地图是车辆通过传感器来感知车身周围环境,可以帮助开放者更友好、方便地运行Apollo。


5.工具链

Apollo提供了一些非常有用的工具,帮助开发者提供效率,如图8所示。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                               图8 Apollo提供的工具链列表

例如Relative_map_viewer是一个对实时相对地图的查询工具,可以根据Rosbag包绘制出实时相对地图。中间的红色是导引线,左右两侧是道路的边界,断断续续是因为车道线有虚线。

此外还提供了DBC文件转换工具、Teleop、主题监控工具、配置工具等。DBC转换工具解析车辆DBC文件,生成对应的Protobuf。Teleop工具可以通过键盘控制的方式实现车辆的信号发布。主题监控工具可以同时需要监听多个ROS topic。Configuration工具明确标识出来修改了哪些字段。另外,Apollo还提供了面向Rosbag的一些工具,包括分析规划模块、驱动以及统计信息等,如图9所示。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                         图9 Apollo工具包中的Rosbag工具

交通灯模拟工具可以通过脚本的方式控制地图里面的红绿灯变化情况,对车辆进行测试,如图10所示。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                                                图10 交通灯模拟工具


6.模拟和Dreamview

该模块是整个Apollo项目可视化的一个模块,基于该模块,开发者可以在没有车和传感器的情况下使用Apollo各个软件模块,如图11所示。

Apollo进阶课程㊳丨Apollo平台的快速入门

                                                                              图11 模拟和Dreamview模块