原文链接:进阶课程㊳丨Apollo平台的快速入门

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

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

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

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

目录

1.Docker

2.硬件接入

3.编译

4.高精地图

5.工具链

6.模拟和Dreamview


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

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

                                                                                                        图1 Apollo问题列表统计

1.Docker

                                                                                                ​​​​​​​        图2 Docker模块

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

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


2.硬件接入

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

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

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

                                                                                        ​​​​​​​        ​​​​​​​        图4 添加不同的相机

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

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


3.编译

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

                                                                                        ​​​​​​​        ​​​​​​​        图6 Apollo编译过程

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


4.高精地图

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

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


5.工具链

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

                                                                                                图8 Apollo提供的工具链列表

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

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

                                                                                                图9 Apollo工具包中的Rosbag工具

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

                                                                                        ​​​​​​​        图10 交通灯模拟工具


6.模拟和Dreamview

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

                                                                                                图11 模拟和Dreamview模块

Apollo进阶课程㊳丨Apollo平台的快速入门相关推荐

  1. Apollo进阶课程㊸丨Apollo实战——障碍物感知和路径规划能力实战

    原文链接;进阶课程㊸丨Apollo实战--障碍物感知和路径规划能力实战 环境感知在自动驾驶汽车应用中占据了核心地位.一辆车要实现自动驾驶,障碍物感知是最基础也是最核心的功能. 上周阿波君为大家详细介绍 ...

  2. Apollo进阶课程㊶丨Apollo实战——本机演示实战

    原文链接:进阶课程㊶丨Apollo实战--本机演示实战 Apollo是一个开放的.完整的.安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统. 上 ...

  3. Apollo进阶课程㊴丨Apollo安装过程概述

    原文链接:进阶课程㊴丨Apollo安装过程概述 Apollo是一个自动驾驶的平台,推荐的参考运行环境为:ThinkPAD X240.CPU:i5 .四核 .内存 8G. 硬盘容量40G以上. 上周阿波 ...

  4. Apollo进阶课程㉚丨Apollo ROS背景介绍

    原文链接:进阶课程㉚丨Apollo ROS背景介绍 ROS是机器人学习和无人车学习最好Linux平台软件,资源丰厚.无人车的规划.控制算法通常运行在Linux系统上,各个模块通常使用ROS进行连接. ...

  5. Apollo进阶课程㊲丨Apollo自动驾驶架构介绍

    原文链接:进阶课程㊲丨Apollo自动驾驶架构介绍 自动驾驶硬件架构:一般采用激光雷达作为主要感知传感器,同时结合摄像头.GPS/IMU.毫米波雷达.超声波雷达等,以NVIDIA Drive PX2 ...

  6. Apollo进阶课程㊱丨Apollo ROS深入介绍

    原文链接:进阶课程㊱丨Apollo ROS深入介绍 ROS是一个强大而灵活的机器人编程框架,从软件构架的角度说,它是一种基于消息传递通信的分布式多进程框架.ROS本身是基于消息机制的,可以根据功能把软 ...

  7. Apollo进阶课程㉜丨Apollo ROS原理—1

    原文链接:进阶课程㉜丨Apollo ROS原理-1 ROS在开发过程中,基于功能把整个自动驾驶系统分成多个模块,每个模块负责自己消息的接收.处理.发布.当模块需要联调时,通过框架可以把各个模块快速的集 ...

  8. Apollo进阶课程㉗丨Apollo控制技术详解——控制理论

    原文链接:进阶课程㉗丨Apollo控制技术详解--控制理论 控制模块根据预测的轨迹和估计的车辆状态向油门.刹车或转向扭矩发送适当的命令.控制模块使汽车尽可能接近计划的轨迹.控制器参数可以通过最小化理想 ...

  9. Apollo进阶课程㉓丨Apollo规划技术详解——Motion Planning with Environment

    原文链接:进阶课程㉓丨Apollo规划技术详解--Motion Planning with Environment 当行为层决定要在当前环境中执行的驾驶行为时,其可以是例如巡航-车道,改变车道或右转, ...

最新文章

  1. Keepalived原理与实战精讲
  2. LeetCode Counting Bits(动态规划)
  3. WindowsServer2008防火墙配置命令
  4. mvc 模式和mtc 模式的区别
  5. java barrier_Java并发类CyclicBarrier方法详解
  6. 为什么现在是升级到Java 8的最佳时机
  7. 解决:There was an unexpected error (type=Internal Server Error,..). No instances available for XXX
  8. php对象好用吗,在数据库中使用对象的好处_php
  9. android 获取sd卡视频文件名,android – 如何获取SD卡上的视频列表
  10. 微课|《Python编程基础与案例集锦(中学版)》第4章例题讲解(2)
  11. Go WebSocket开发与测试实践【gorilla/websocket】
  12. P2617 Dynamic Rankings 动态主席树
  13. 基于vue2.0的一个豆瓣电影App
  14. oracle 039 00 039,python+robot+oracle:执行脚本时中文sql报错:UnicodeEncodeError: #039;ascii#039; codec can#...
  15. arcgis创建城市路网
  16. HTML文件命名规范大全
  17. opencv图像分析与处理(10)- 常见的噪声以及空间滤波器噪声消除方法
  18. 这款网页翻译插件,用了就舍不得戒掉
  19. 用两个半图片来看图片
  20. 自媒体平台数据统计分析爬虫之【趣头条】模拟登陆分析详解及数据统计接口详解

热门文章

  1. mysql.w002_mysql简单例子
  2. MongoDB 操作范例
  3. php值对象模式场景,php设计模式介绍之值对象模式第1/5页
  4. 云计算的认识和看法_云存储已经成为存储的未来,你的存储跟上节奏了吗?
  5. SIP.conf的常用参数配置
  6. matlab sort descend,详解Matlab中 sort 函数用法
  7. peoplesoft系统与sap_sap顾问或者peoplesoft顾问转行做自研系统顾问的为什么那么少?...
  8. arcgis矢量之间的空白如何快速填充
  9. 【转】Linux的.a、.so和.o文件
  10. 【转】Git Shell 基本命令(官网脱水版)