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

原创 阿波君 Apollo开发者社区 2019-10-29

自动驾驶硬件架构:一般采用激光雷达作为主要感知传感器,同时结合摄像头、GPS/IMU、毫米波雷达、超声波雷达等,以NVIDIA Drive PX2 或 Xavier作为主要计算平台,在工业PC机上运行各种算法模块,通过线控技术控制车辆行驶。

百度开源自动驾驶系统Apollo的架构图如下所示:
进阶课程㊲丨Apollo自动驾驶架构介绍

上周阿波君为大家详细介绍了「进阶课程㊱丨Apollo ROS深入介绍」。

此课程主要讲解七个深入内容:第一是ROS Packages;第二是Eclipse下编译ROS基本工程;第三是通过hello world了解ROS基本的运行逻辑;第四是ROS提供的日志系统;第五是ROS提供的subscriber和publisher功能;第六是ROS除了message的另外两种通信方式;第七是ROS的可视化工具Rviz。

本周阿波君将与大家分享Apollo自动驾驶架构介绍的相关课程。下面,我们一起进入进阶课程第37期。

以下,ENJOY

Apollo自动驾驶平台的架构如下图所示。该架构是Apollo 在2017年7月5号发布的,主要包括四个部分:最底层的车辆平台,往上一层的传感器层,第三层的核心软件层以及最上层的云服务层。

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

最底层的车辆平台

底层车辆平台执行Apollo无人驾驶平台生成的车辆控制指令。为了能够运行Apollo生成的指令,车辆必须是线控的,例如可以接受一定的指令,比如换挡、加减速、转向,完成对应的操作。在Apollo 3.0之前,我们称之为车辆参考平台,即推荐的可运行Apollo的几种车。在3.0之后,我们发布了Apollo对车辆条件的需求,比如需要哪些线控功能,对应的操作耗时是多少等。只要把车改装成具备对应条件之后就可以运行Apollo,现在称为开放车辆认证平台。

传感器层

传感器层主要是集成各种传感器对汽车周围环境进行感知,包括GPS、IMU、相机、激光雷达、毫米波雷达、超声波雷达等。无人驾驶系统对算力的要求非常高,所以在Apollo上安装了一台高性能工控机(IPC)机。

Apollo 中GPS/IMU主要是用于自定位。相机的功能主要是做红绿灯识别。主传感器激光雷达主要用来感知车辆周围环境。在百度内部使用了Velodyne 64线激光雷达和国产禾赛的Pandora。Apollo 3.0时,我们开放了更多的激光雷达型号,例如16线速腾聚创(Robosense)、16线镭神科技等等。毫米波雷达主要用来做远距离的跟车、障碍物的检测等。超声波雷达主要用来做五米范围之内的障碍物的检测;HMI是对车辆发指令的一些设备,例如平板。Blackbox是百度开放的一个商业化硬件,它记录一些内部数据,例如关键时刻的执行操作,类似于飞机上的黑匣子。在Apollo 3.0,我们发布了一些硬件开发平台,成为Sensor Unit(ASU)。

核心的软件平台

核心软件层又可以细分为三层:最下面的是RTOS实时操作系统,在Apollo中,我们使用打补丁的方式来实现实时的效果。中间层是Runtime Framework。这一层,我们用的是ROS,主要是为上层的模块提供数据层支持。最上面一层是Apollo各个功能模块实现部分,包括地图引擎、定位、感知、规划、监管、控制、端到端以及HMI。

云服务层

最上层的云服务层提供了高精地图服务、模拟仿真、Data Platform、安全和更新、DuerOS等。

对于高精度地图,在中国,个人并不具备制定高精地图的资质和能力,因为*要求这些数据不能在网络上传播。因此,Apollo直接将制作好的高精地图以云服务的方式对外开放。

仿真主要用来对自动驾驶的相关算法进行验证。Data Platform开放了红绿灯数据、一些典型的障碍物数据、像素级的标注数据。

以上就是本节课程的主要内容了,更多话题讨论、技术交流,可以添加『Apollo小哥哥』为好友,进开发者交流群。

-----END-----