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

原文链接:进阶课程㊳丨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模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步步编写操作系统 33 利用bios中断0x15子功能0xe820获取内存

咱们先介绍0xE820子功能,这是最灵活的内存获取方式。 bios中断 0x15的子功能0xE820能够获取系统的内存布局,由于系统内存各部分的类型属性不同,bios就按照类型属性来划分这片系统内存,所以这种查询则呈迭代式,每次bio…

16.深度学习练习:Building your Recurrent Neural Network - Step by Step

本文节选自吴恩达老师《深度学习专项课程》编程作业,在此表示感谢。课程链接:https://www.deeplearning.ai/deep-learning-specialization/Building your Recurrent Neural Network - Step by Step1 - Forward propagation for the basic Recurrent Neur…

【2019icpc徐州站】Random Access Iterator(概率dp,有坑,tricks)

题干: Recently Kumiko learns to use containers in C standard template library. She likes to use the std::vector very much. It is very convenient for her to do operations like an ordinary array. However, she is concerned about the random-access…

一步步编写操作系统 34 内核利用bios中断获取物理内存大小

接上文,另一个获取内存容量的方法是bios 0x15中断的子功能0xE801。 此方法虽然简单,但功能也不强大,最大只能识别4G内存,不过这对咱们32位地址总线足够了。稍微有点不便的是,此方法检测到的内存是分别存放到两组寄存器…

17.深度学习练习:Character level language model - Dinosaurus land

本文节选自吴恩达老师《深度学习专项课程》编程作业,在此表示感谢。 课程链接:https://www.deeplearning.ai/deep-learning-specialization/ 文章目录1 - Problem Statement1.1 - Dataset and Preprocessing1.2 - Overview of the model2 - Building blo…

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

原文链接:进阶课程㊴丨Apollo安装过程概述 Apollo是一个自动驾驶的平台,推荐的参考运行环境为:ThinkPAD X240、CPU:i5 、四核 、内存 8G、 硬盘容量40G以上。 上周阿波君为大家详细介绍了「进阶课程㊳丨Apollo平台的快速入门」。 …

UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

继承、实现、依赖、关联、聚合、组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继…

CS231n(1):图片分类笔记与KNN编程作业

声明:本博客笔记部分为CS231n官网笔记,这里对其进行引用,在此表示感谢。 课程官网地址为:http://vision.stanford.edu/teaching/cs231n/syllabus.html 本次课程对应B站教学视频为: https://www.bilibili.com/video/av5…

【HDU - 6557】Justice(思维,模拟,套路,SETset)

题干: On the table there are n weights. On the body of the i-th weight carved a positive integer kiki , indicating that its weight is 12ki12ki gram. Is it possible to divide the n weights into two groups and make sure that the sum of the weight…

Apollo进阶课程㊵丨Azure仿真平台使用

原文链接:进阶课程㊵丨Azure仿真平台使用 Azure是一种灵活和支持互操作的平台,它可以被用来创建云中运行的应用或者通过基于云的特性来加强现有应用。它开放式的架构给开发者提供了Web应用、互联设备的应用、个人电脑、服务器、或者提供最优在线复杂解决…

java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式…

动手学无人驾驶(3):基于激光雷达3D多目标追踪

上一篇博客介绍了无人驾驶中的车辆检测算法(YOLO模型),该检测是基于图像进行的2D目标检测。在无人驾驶环境感知传感器中还有另一种重要的传感器:激光雷达。今天就介绍一篇无人驾驶中基于激光雷达目标检测的3D多目标追踪论文&#…

换种方法学操作系统,轻松入门Linux内核

计算机已成为现代人日常工作、学习和生活中必不可少的工具。操作系统是计算机之魂,作为用户使用计算机的接口,它负责调度执行各个用户程序,使计算机完成特定的任务;作为计算机硬件资源的管理者,它负责协调计算机中各类…

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

原文链接:进阶课程㊶丨Apollo实战——本机演示实战 Apollo是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 上周阿波君为大家详细介绍了「进阶课程㊵丨A…

java常见异常类图(分类了Error/RuntimeExecption、check Exception)

Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Exception:表…

Apollo进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战

原文链接:进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战 循迹自动驾驶是指让车辆按照录制好的轨迹线进行自动驾驶,其涉及到自动驾驶中最基本的底盘线控能力、定位能力、控制能力,是自动驾驶系统的一个最小子集。 上周阿波君为大家详细介…

【HDU - 5961】传递(图,思维,暴力,枚举点)

题干: 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。 我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图。换句 话说,将完全图每…

Java--对象内存布局

在HotSpot虚拟机中,对象在内存中的存储布局可以分为3块区域:对象头部、实例数据、对齐填充。 一、对象头部Header的布局 Mark WordClass 指针在32位系统下,上面两部分各占4B; 在64位系统中,Mark Work占4B,class指针在…

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

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

3.1)深度学习笔记:机器学习策略(1)

目录 1)Why ML Strategy 2)Orthogonalization 3)Single number evaluation metric 4)Satisficing and optimizing metrics 5)训练/开发/测试集划分(Train/dev/test distributions) 6&…