0. 简介

之前作者主要是基于ROS2,CyberRT还有AutoSar等中间件完成搭建的。有一说一,这种从头开发当然有从头开发的好处,但是如果说绝大多数的公司还是基于现成的Apollo以及Autoware来完成的。这些现成的框架中也有很多非常好的方法。目前作者打算抽一些时间来整理这部分资料,并根据自己学习内容进行介绍。

目前使用的主流的无人驾驶开源项目框架,主要是Autoware和百度的Apollo。百度Apollo的版本迭代十分迅速,起初的几个版本也是基于ROS1开发的,但由于ROS的局限性(主要是其机制所造成的无人系统响应时间相对较慢等问题,不适用于高速无人驾驶),Apollo貌似从3.5开始就弃用ROS1改用自己研发的CyberRT中间件了,但Apollo也有一定的局限性,比如需要购买百度提供的高精度地图服务等,Apollo在SLAM定位建图这方面开放性不是很高。如果你对自己移动平台行驶速度的要求不是很高,仅仅是在小片公共区域(类似厂区、园林等)实现自动驾驶,Autoware足够满足使用需求。博主是做园林环卫机器人的,所以主要在用Autoware框架,Apollo只了解一点点。目前,Autoware已经推出了基于ROS2的 Autoware.Auto,感兴趣的朋友可以看一下。

1. Autoware自动驾驶框架介绍

Autoware.AI是世界上第一个用于自动驾驶技术的“All-in-One”开源软件。它ROS1操作系统,并在Apache2.0许可下使用。主要包含以下模块:

  • 定位(Localization ):通过结合GNSS和IMU传感器的3D地图和3D地图、SLAM算法来实现定位。
  • 检测(Detection ):通过传感器融合算法和深度神经网络使用摄像机和激光雷达完成检测。
  • 预测和规划(Prediction and Planning ):基于概率机器人模型和基于规则的系统,部分还使用深度神经网络。
  • 控制(Control):Autoware向车辆输出的是速度和角速度的扭曲量。尽管控制量的主要部分通常位于车辆的线控控制器中,但这些是Control的一部分。

2. Apollo和Autoware的异同

2.1 硬件区别

以NXP的二代蓝盒子为硬件基础,这两个自动驾驶软件开源平台最大的区别在于底层,最上层的应用模块差别不大。硬件系统方面,Apollo推荐64位x86指令集的CPU加英伟达GPU架构。Autoware主要使用英伟达的AGX Xavier或PX2,也就是推荐ARM的V8指令集架构CPU。当然,也支持64位x86指令集的CPU加英伟达GPU架构。

2.2 框架区别

Autoware的框架主要包含感知(Perception)、决策(Planning)两个部分,感知部分包含定位(Localization)、检测(Detection)、预测(Prediction)三个模块,决策包含全局运动规划(Mission)、局部运动规划(Motion)两个模块

相比Autoware,Apollo的框架更加丰富和复杂,整个框架包括云服务平台、开源软件平台、参考硬件平台和参考软件平台四部分。

云服务平台包括:

  • 高精地图服务:高精度地图是实现无人驾驶汽车高精度定位、路径导航、路径规划的基础;

  • 仿真引擎:通过海量实际路况及自动驾驶场景数据,促进自动驾驶系统的开发快速迭代进行;

  • 数据平台:包括传感器数据、车辆行驶数据等;安全:数据安全、通信安全、服务安全;

  • OTA:空中下载技术(Over-the-Air Technology)是远程升级系统的必备技能;

  • DuerOS:百度的语音交互平台,未来可通过语音与车实现交互。

开源软件平台是Apollo自动驾驶系统的核心部分,包括功能模块、运行框架和实时操作系统三部分。功能模块可细分为:

  • 地图引擎:运行高精度地图;
  • 定位模块:通过GPS、V-SLAM、L-SLAM、里程计等多种定位源融合,结合高精度地图,实现精准定位;
  • 感知:通过激光雷达、毫米波雷达、摄像头,精确感知车辆周围的环境路况,包括车辆、行人、交通标志等等;
  • 规划:主要包括路径规划、运动障碍物的预测等;
  • 控制:实现控制车辆的转向、油门、刹车等操作;End-to-End:基于深度学习的横向和纵向驾驶模型;
  • HMI:人机交互模块。

硬件平台主要是无人驾驶系统的计算硬件和各种传感器硬件,包括GPS/IMU、摄像头、激光雷达、毫米波雷达、HMI设备、黑盒子等。

车辆平台,可实现线控转向、线控油门和线控制动等线控功能。

2.3 中间件区别

相比Ros,CyberRT增加了Component组件,组件之间通过 Cyber channel 通信。Cyber RT 中用Message实现模块间通信,其实现基于 protobuf。同时,CyberRT也支持异步计算任务,优化线程使用与系统资源分配,同时支持定义模块拓扑结构的配置文件

3. Autoware安装

下面我们就来看一下Autoware的安装, Autoware 官网给出了两种安装方式:源码编译安装Source Build 和 Docker 方式,使用 Docker 方式更为简单。

3.1 安装OpenCV(以 4.0.0 为例)

Ubuntu 18.04 安装 OpenCV 网上的教程比较多,就不写具体的步骤了,推荐几个不错的:

Ubuntu 18.04安装OpenCV4.0和环境配置
OpenCV+Ubuntu18.04环境搭建
ubuntu18.04 安装opencv4.2
注意,如果使用 anaconda 管理 python 环境的话,也要将编译好的 opencv 库链接到 anaconda 下的 site-packages 目录下。

3.2 安装Qt(以 5.12.0为例)

Qt 直接用安装包安装即可,比较简单,推荐这个文章:

Ubuntu18.04 安装 QT5.12.0

3.3 安装 ROS Melodic

ROS Melodic 网上优秀的安装教程也非常多:

Ubuntu18.04下安装ROS
在Ubuntu 18.04 LTS安装ROS Melodic版机器人操作系统

3.4 CUDA

如果你的计算机配置比较好,NVIDIA的显卡、CPU、GPU都有的话,为提高整体的运算性能,建议安装配置 CUDA。

ubuntu18.04上cuda及cudnn安装

3.5 安装 Autoware(以v1.12.0为例,对于v1.12.0及以上版本均适用)

3.5.1 安装依赖,配置环境
 sudo apt update

 sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin

 sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool

 pip3 install -U setuptools
3.5.2 创建工作空间
 mkdir -p autoware.ai/src
 cd autoware.ai
3.5.3 下载autoware.ai的工作空间的配置
wget -O autoware.ai.repos "https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.12.0/autoware.ai.repos"

下载更高版本的只需将指令中1.12.0替换为相应的版本号即可。

3.5.4 下载autoware.ai到工作区
vcs import src < autoware.ai.repos

这一步要很久,耐心等待。

3.5.5 使用rosdep安装依赖项
 rosdep update
 rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

3.5.6 编译工作区

若已经配置好了 CUDA:

 AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

若没有 CUDA支持,只使用 CPU:

 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

4. demo运行

4.1 数据下载

下载样本3D 点云 / 地图数据。

 wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_data.tar.gz

以ROSBAG格式下载示例数据(LiDAR:VELODYNE HDL-32E,GNSS:JAVAD GPS RTK Delta 3)

 wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz

4.2 Demo 运行

  1. 创建.autoware目录(隐藏文件夹)并提取 demo 所需数据
 cd ~
 mkdir .autoware
 cd .autoware
 cp ~/Downloads/sample_moriyama_* .
 tar zxfv sample_moriyama_150324.tar.gz
 tar zxfv sample_moriyama_data.tar.gz
  1. 运行 Autoware
 cd autoware.ai
 source install/setup.bash
 roslaunch runtime_manager runtime_manager.launch

  1. 运行起来之后,需要加载 demo 示例的 data,转到Simulation选项卡,单击Ref按钮找到如下图所示路径的 bag 包,若是找不到文件夹,右击看一下Show Hidden Files有没有勾选上。加载完毕之后设置开始时间140,点击play,然后再点击Pause暂停播放。

  1. 再点击 Quick Start选项卡,然后分别点击 map 和 localizations 右侧Ref按钮,分别加载下图中所示路径的对应文件,选择好后,点击左侧的Map和Localizations按钮,显示变暗。(对应路径autoware.ai/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/

  2. 然后再点击Rviz按钮启动rviz插件,找到File -> Open Config,然后按照下面的步骤顺序并加载.rviz文件。
    autoware.ai/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/default.rviz

  3. 回到simulation,点击pause按键开始播放,软件运行。

5. 参考链接

https://zhuanlan.zhihu.com/p/142775802

https://cloud.tencent.com/developer/article/2065006

https://blog.csdn.net/zhao5269/article/details/106827618

https://blog.csdn.net/zhao5269/article/details/106864985