目录

  • Docker
  • 硬件接入
  • 编译
  • 高精地图
  • 工具链
  • 模拟和Dreamview

原创 阿波君 Apollo开发者社区 2019-11-06

敲黑板,本文需要学习的知识点有:

  • 感知
  • RTK
  • 轨迹
  • 高精地图
  • 相对地图
  • 规划模块

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

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

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

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

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

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

Docker


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

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

硬件接入

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

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

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

编译

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


图6 Apollo编译过程

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

高精地图

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

工具链

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

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

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

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

模拟和Dreamview

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


图11 模拟和Dreamview模块

以上就是本节课程的主要内容了。

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

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

    原文链接:进阶课程㊳丨Apollo平台的快速入门 Apollo是向汽车行业及自动驾驶领域的合作伙伴提供一个开放.完整.安全的软件平台,帮助他们结合车辆和硬件系统,快速搭建一套属于自己的完整的自动驾驶系 ...

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

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

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

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

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

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

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

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

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

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

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

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

  8. Apoll进阶课程㉞丨Apollo ROS原理—3

    原文链接:进阶课程㉞丨Apollo ROS原理-3 机器人操作系统(ROS)是一个成熟而灵活的机器人编程框架.ROS提供了所需的工具,可以轻松访问传感器数据,处理数据,并为机器人的电机和其它执行器生成 ...

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

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

最新文章

  1. c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
  2. JAVA性能优化思路探究
  3. fun(n) Java_java程序员的kotlin课(N+2):suspending函数执行编排
  4. 高帮足球鞋_高帮运动鞋和晕车症可以教给我们有关VR设计的知识
  5. java线程的状态有几种_Java线程的几种可用状态
  6. HackerOne 发布2021年《黑客驱动安全报告:行业洞察》
  7. st7789s显示芯片驱动代码
  8. 单声道数字功放芯片-NTP8835
  9. Vba_下载网络文件(图片)
  10. imagine php,Yii2第三方类库插件Imagine的安装和使用
  11. 什么是你最关键的人脉
  12. Win10 笔记本底下VM Ware鼠标失灵,不能点的问题解决
  13. 上海“生煎”地图大公开
  14. 【开源】蓝奏云直链解析
  15. MySQL获取当前时间的各种方式
  16. Coreldraw绘制珍珠项链送给你
  17. OpenCV 中的矩(moments)和 Hu不变矩(HuMoments)
  18. 达人评测 i5 12500h和锐龙r5 5600h选哪个好
  19. 【报告分享】2019中国高科技高成长50强暨明日之星年度报告.pdf(附下载链接)
  20. 丁梦茹北京邮电大学计算机学院,北邮推荐免试硕士研究生拟录取名单

热门文章

  1. java socket telnet_使用java简单模拟ping和telnet的实现
  2. 2010年《斯坦福大学开放课程: 编程方法》(Open Stanford Course : Programming Methodology)[中英双语字幕][RMVB]更新中
  3. 会计凭证概述、原始凭证、原始凭证的种类、原始凭证的基本内容、原始凭证的填制要求、原始凭证的审核
  4. 云顶之弈两个传送门_云顶之弈兹若特传送门合成公式 云顶之弈兹若特传送门怎么合成...
  5. Elasticsearch7.0 实例精解 pdf免费下载
  6. PC端和移动端唤起QQ聊天
  7. C语言程序设计基础OJ练习题(实验三while循环结构)
  8. PHP设计模式之单例模式与工厂模式
  9. linux安卓root权限,Android 文件系统获取root权限
  10. MATLAB 第五章 应用微积分