第40课、Apollo平台的快速入门
- Docker:
(1)Docker是一种容器的技术,它在是Linux内核的基础上做了一些轻量级和隔离机制的优化,让环境更小,部署起来更快。
(2)利用Docker可以使整个工程的安装更加简单。Docker镜像通常是一个配置好的运行环境,包括依赖的第三方库等,使得用户不需要对环境编译做过多复杂的操作。
(3)例如,在Release版本中,Apollo各个模块是一个已经编译好的二进制文件,可以直接运行;如果是开发版本,通常已经加载了所需的第三方库,用户只需要执行对应的编译指令。 - 硬件接入
(1)要完成自己硬件的集成,需要遵循以下三步:
①第一需要原始的 UDP(User Data Packet,用户数据包)。
②第二是做一个ROS Driver方法,把驱动编译到Apollo里面。
③第三是把数据发布出来。下面举两个例子讲述具体如何操作。 - 举例1
(1)第一个例子是如何使用一个新型号的Camera,假设是USB接口的相机。
(2)最下层是相机硬件;往上一层是一个标准的底层驱动,即Video for Linux driver; 再上一层是一个ROS Driver,最上层是Apollo可以接收到的内容。要使用该相机,主要的工作是底层硬件的解析,使得Apollo可以接收到相应的数据。 - 举例2
(1)第二个例子是激光雷达。它大致的工作流程是:
①硬件通常以基于内核Socket的方式把数据传输给PC,
②PC端做一些数据处理之后发布对应的消息类型。
(2)对于激光雷达来而言,发布的是Pointcloud消息类型,该消息将被最上层的Apollo感知模块接收。 - 编译
(1)编译安装Apollo的步骤大概分为三个阶段:
①第一阶段是在Ubuntu环境下进行操作,包括下载Apollo源码,安装Docker。Docker的安装方式有在线和离线两种方式,大家可以根据网络环境选取合适的安装方式。
②第二阶段是进入Docker,拉取Apollo镜像,并以此镜像创建容器。第三个阶段是进入创建的容器,编译Apollo源码。 - 编译结束之后可以做RTK循迹测试。循迹比较简单,它包含两个文件,核心就是一个Record,用来录制轨迹的信息,也就是一些GPS点;另外记录车辆底盘返回的速度信息、加速度信息、曲率、朝向等。RTK循迹测试就是把车辆底盘发出的这些主题和定位输出进行融合。
- 高精地图
(1)左侧是一个高精度地图,右侧是实时相对地图。实时相对地图是车辆通过传感器来感知车身周围环境,可以帮助开放者更友好、方便地运行Apollo。 - 工具链
(1)例如Relative_map_viewer是一个对实时相对地图的查询工具,可以根据Rosbag包绘制出实时相对地图。中间的红色是导引线,左右两侧是道路的边界,断断续续是因为车道线有虚线。
(2)此外还提供了DBC文件转换工具、Teleop、主题监控工具、配置工具等。DBC转换工具解析车辆DBC文件,生成对应的Protobuf。
(3)Teleop工具可以通过键盘控制的方式实现车辆的信号发布。主题监控工具可以同时需要监听多个ROS topic。
(4)Configuration工具明确标识出来修改了哪些字段。
(5)另外,Apollo还提供了面向Rosbag的一些工具,包括分析规划模块、驱动以及统计信息等
(6)交通灯模拟工具可以通过脚本的方式控制地图里面的红绿灯变化情况,对车辆进行测试 - 模拟和Dreamview
(1)该模块是整个Apollo项目可视化的一个模块,基于该模块,开发者可以在没有车和传感器的情况下使用Apollo各个软件模块