最近对百度的自动驾驶平台Apollo项目做了一些了解。下面将我所了解到的一些信息分享给大家。
Apollo项目介绍
阿波罗(Apollo)是百度发布的面向汽车行业及自动驾驶领域的合作伙伴提供的软件平台。发布时间是2017年4月19日,旨在向汽车行业及自动驾驶领域的合作伙伴提供一个开放、完整、安全的软件平台,帮助他们结合车辆和硬件系统,快速搭建一套属于自己的完整的自动驾驶系统。而将这个计划命名为“Apollo”计划,就是借用了阿波罗登月计划的含义。
可以在这里感受一下Apollo的实车驾车体验:CES 2018 百度Apollo 2.0无人车美国桑尼维尔试乘。
SAE Level
对于自动驾驶,SAE(Society of Automotive Engineers,美国汽车工程师学会) International于2014年发布了从全手动系统到全自动系统六个不同级别的分类系统,这6个级别的描述如下:
SAE Level | Name | System capability | Driver involvement |
---|---|---|---|
0 | No Automation | None | The human at the wheel steers, brakes, accelerates, and negotiates traffic. |
1 | Drive Assistance | Under certain conditions, the car controls either the steering or the vehicle speed, but not both simultaneously. | The driver performs all other aspects of driving and has full responsibility for monitoring the road and taking over if the assistance system fails to act appropriately. |
2 | Partial Automation | The car can steer, accelerate, and brake in certain circumstances. | Tactical maneuvers such as responding to traffic signals or changing lanes largely fall to the driver, as does scanning for hazards. The driver may have to keep a hand on the wheel as a proxy for paying attention. |
3 | Conditional Automatio | In the right conditions, the car can manage most aspects of driving, including monitoring the environment. The system prompts the driver to intervene when it encounters a scenario it can’t navigate. | The driver must be available to take over at any time. |
4 | High Automation | The car can operate without human input or oversight but only under select conditions defined by factors such as road type or geographic area. | In a shared car restricted to a defined area, there may not be any. But in a privately owned Level 4 car, the driver might manage all driving duties on surface streets then become a passenger as the car enters a highway. |
5 | Full Automation | The driverless car can operate on any road and in any conditions a human driver could negotiate. | Entering a destination. |
阿波罗项目的官网地址如下:http://apollo.auto
在阿波罗项目的官网,介绍了该项目有如下特点:
- 开放能力:Apollo(阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。
- 共享资源、加速创新:Apollo开放平台,为你提供技术领先、覆盖广、高自动化的高精地图服务;全球唯一开放,拥有海量数据的仿真引擎;全球开放数据量第一,基于深度学习自动驾驶算法End-to-End。
- 持续共赢:Apollo开放平台,你可以更快地研发、测试和部署自动驾驶车辆。参与者越多,积累的行驶数据就越多。与封闭的系统相比,Apollo能以更快的速度成熟,让每个参与者得到更多的受益,同时Apollo平台也将在你的参与之下变得更好!
目前,其官网上列出的合作伙伴已经接近100家。
阿波罗项目的蓝图如下:
- 2017-07:封闭场地的自动驾驶能力
- 2017-12:在城市简单路况下的自动驾驶能力
- 2020-12:高速公路和普通城市道路上的全自动驾驶
最新发布的Apollo 2.5版本主要目标是L2级自动驾驶。
详细的Apollo版本演进信息如下图所示:
源码
可以在这里获取到阿波罗项目的源码:https://github.com/ApolloAuto。这个路径中包含了5个开源项目:
- apollo:Apollo自动驾驶平台的源码。
- apollo-platform:Apollo项目基于Robot Operating System (ROS),这里是相关代码。目前发布的源码基于ROS Indigo。
- apollo-DuerOS:Apollo-DuerOS是一套与Apollo相关的远程信息处理产品,这其中包含了几个开源产品。关于DuerOS,请看这里:DuerOS。
- apollo-kernel:Apollo项目的Linux内核。
- ApolloAuto.github.io:Apollo相关文档,可以访通过https://apolloauto.github.io访问这些文档。
编译和运行
关于如何编译和运行阿波罗项目请参见这里:https://apolloauto.github.io。
执行该任务需要Ubuntu和Docker环境。
编译完成之后,可以在电脑上通过该项目提供的Dreamview功能来熟悉环境,Dreamview通过浏览器访问,其界面看起来是这个样子:
关于Dreamview的更多说明,请参见这里:Dreamview Usage Table
开发
阿布罗平台的开发包含下面几个步骤:
-
了解离线模拟引擎Dreamviewer和ApolloAuto核心软件模块
- 了解算法如何在汽车上运作
- 不需要使用真正的汽车或硬件,就立即开始开发
-
核心模块集成
- Location模块
- Perception模块:(支持第三方解决方案,如基于Mobileye ES4芯片的摄像头,用于L2开发)处理来自Lidar的点云数据,并根据请求返回分段对象信息。
- Planning模块:计算微调路径,为路径服务的路径段提供汽车动态控制信息。
- Routine模块:通过Navigator接口查找路径段的本地实现。
- 高清地图。L4级别的自动驾驶需要高清地图。由于自动驾驶汽车需要在系统中重建3D世界,因此参考对象坐标在重新定位地图和现实世界中的自动驾驶方面发挥着重要作用。
-
基于云的在线仿真驱动场景引擎和数据中心。
- 作为百度的合作伙伴,将被授予Docker证书来提交新图像并重播你在云上开发的算法。
- 创建和管理复杂的场景以模拟真实世界的驾驶体验
Apollo与ROS
ROS全称是Robot Operating System。它包含了一套开源的软件库和工具,专门用来构建机器人应用。其官网地址在这里:http://www.ros.org。
在一个ROS系统中,包含了一系列的独立节点(nodes)。这些节点之间,通过发布/订阅的消息模型进行通信。例如,某个传感器的驱动可以实现为一个节点,然后以发布消息的形式对外发送传感器数据。这些数据可以被多个其他节点接收,例如:过滤器,日志系统等等。
ROS系统中的节点可能位于不同的主机上,例如:在一个Arduino设备上发布消息,一台笔记本电脑订阅这些消息,一个Android手机也监测这些消息。
ROS系统中包含了一个主(Master)节点。主节点使得其他节点可以查询彼此以进行通讯。所有节点都需要在主节点上进行注册,然后就可以与其他节点通讯了。如下图所示:
熟悉Android系统的人可能很容易发现,这和Binder中的ServiceManager的作用是类似的。