如引言中介绍的,这篇软硬件框架多为现有消息的整合加一些个人的想法。关于Apollo介绍的文章已经有许多,很多要点大家都已经足够了解,这些点在本篇中会被略写。本篇文章如有错误、不足之处,还请大家多多指教。
Apollo官方GitHub链接:ApolloAuto
在历经1.0,1.5两个版本更新之后,百度无人驾驶平台Apollo2.0在年初正式发布,其技术框架如下图所示[1]。
如上图所示,Apollo技术框架主要由四部分组成,从下往上,依次为:
ReferenceVehiclePlatform参考汽车层:用于对汽车实现电子化的控制。这一层涉及到的CAN协议一般由主机厂制订,且严格保密。百度早期使用了AutonomouStuff公司改装的LincolnMKZ来规避这一问题。
ReferenceHardwarePlatform参考硬件层:为Apollo推荐的硬件设备,如:计算单元(工控机),GPS/IMU,LiDAR,Radar等等。
OpenSoftwarePlatform开放软件平台:为Apollo的核心部分。
CloudServicePlatform云端服务层:为百度可提供的数据,高精度地图等各项云服务,应该也是百度之后盈利的主要来源。
本文重点叙述ReferenceHardwarePlatform和OpenSoftwarePlatform这两层。
ReferenceHardwarePlatform百度建议的硬件安装示意图如下所示:
侧视图
右视图
可见其采用的感知方案还是为LiDAR,Radar,摄像头相配合的传统方案。Apollo推荐的核心部件为:
推荐的硬件配置
从价格上看,百度Apollo2.0不可能是一个量产的方案。作为大脑的工控机价格在$美元左右,VelodyneHDL-64E的售价至少在$75,美元。这些过于昂贵的传感器使得Apollo更像是一个Demo的解决方案。
值得一提的是,从Apollo感知模块的代码中可以看到,Apollo2.0也同时为Velodyne16线激光雷达留下接口。
enumSensorType{
VELODYNE_64=0,
VELODYNE_16=1,
RADAR=2,
CAMERA=3,
UNKNOWN_SENSOR_TYPE=10,
};
联想到最近Velodyne宣布16线激光雷达最高降价50%的消息,售价可能会低至$4美元[4]。那么随着激光雷达价格近一步的降低,Apollo感知融合算法的进一步完善,从传感器的成本来看,在特定场景下的自动驾驶还是有望实现的。
另外Apollo的传感器配置也显得不太丰富,在车身侧面和后面都没有安放雷达。相比较奥迪A8几乎武装到牙齿,Apollo传感器上的冗余度总觉得是有些不足(虽然这样比可能有点不公平,奥迪A8是量产车型,且使用的是4线的激光雷达)。
另外摄像头安装在了车顶而不是车窗内,那么如何在雨天保证摄像头不受影响也是一个问题。
OpenSoftwarePlatformApollo的OpenSoftwarePlatform分三个部分RTOS,RuntimeFramework及各个功能模块Modules。
RTOSApolloRTOS的主体部分是为Ubuntu14.04+ApolloAuto/apollo-kernel的组合。Apollo安装指南上推荐的在工控机上安装的软件及版本如下表所示。
IPC安装的软件
Apollo-kernel的存在是因为Ubuntu并不是一个实时系统。
实时系统的定义如下:
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。[实时操作系统_百度百科]
简单说,实时系统保证了某任务在deadline之前被完成。系统的实时性在汽车上的重要性是不言而喻的,我用一个视频来说明下其重要程度(最早看到这段视频是在学校实时系统课的