apollo学习笔记二十四:apollo 安装和仿真平台(上)
Apollo自动驾驶架构介绍
- 最底层车辆平台:也称为开放车辆认证平台
- 底层车辆平台执行Apollo无人驾驶平台生成的车辆控制指令。
- 为了能够运行Apollo生成的指令,车辆必须是线控的,例如可以接受一定的指令,比如换挡、加减速、转向,完成对应的操作.
- 只要把车改装成具备对应条件之后就可以运行Apollo,现在称为开放车辆认证平台。
- 传感器层
- 高性能的计算单元——Apollo的工控(IPC)机
- GPS/IMU主要是用于自定位
- 相机的功能主要是做红绿灯识别
- 主传感器激光雷达主要用来感知车辆周围环境
- HMI是对车辆发指令的一些设备的平板
- Blackbox是百度开放的一个商业化硬件,记录关键时刻的执行操作
- 核心软件平台
- 最下面一层RTOS实时操作系统
- 再上一层是Runtime Framework,用RTOS为上层的模块提供数据层支持
- 最上面一层是Apollo各个功能模块实现部分,包括地图引擎、定位、感知、规划、监管、控制、端到端以及HMI
- 云服务层
- 供了高精地图服务、模拟仿真、Data Platform、安全和更新、DuerOS等.
- 仿真主要用来对自动驾驶的相关算法进行验证。Data Platform开放了红绿灯数据、一些典型的障碍物数据、像素级的标注数据。
Apollo平台的快速入门
Docker:
- Docker是一种容器的技术,它在是Linux内核的基础上做了一些轻量级和隔离机制的优化,让环境更小,部署起来更快。
- 利用Docker可以使整个工程的安装更加简单。Docker镜像通常是一个配置好的运行环境,包括依赖的第三方库等,使得用户不需要对环境编译做过多复杂的操作。
例如,在Release版本中,Apollo各个模块是一个已经编译好的二进制文件,可以直接运行;如果是开发版本,通常已经加载了所需的第三方库,用户只需要执行对应的编译指令。
硬件接入
硬件接入的三个步骤:
(1)获取原始的用户数包 UDP(User Data Packet)
(2)以ROS Driver的方式解析UDP
(3)发布数据Publish Topic
如何使用不同于参考硬件的Camera
- 最下层是相机硬件
- 往上一层是一个标准的底层驱动,即Video for Linux driver
- 再上一层是一个ROS Driver,最上层是Apollo可以接收到的内容。
- 要使用该相机,主要的工作是底层硬件的解析,使得Apollo可以接收到相应的数据。
如何使用不同于参考硬件的LiDAR
- 硬件通常以基于内核Socket的方式把数据传输给PC,
- PC端做一些数据处理之后发布对应的消息类型。
- 对于激光雷达来而言,发布的是Pointcloud消息类型,该消息将被最上层的Apollo感知模块接收。
编译
Apollo编译的三个步骤:
- 在Ubuntu环境下进行操作,包括下载Apollo源码,安装Docker。Docker的安装方式有在线和离线两种方式,大家可以根据网络环境选取合适的安装方式。
- 进入Docker,拉取Apollo镜像,并以此镜像创建容器
- 进入创建的容器,编译Apollo源码。