Autoware.Universe:如何在Carla 0.9.13上运行
前言
从 Autoware.AI 到 Autoware.Universe
Autoware 作为第一款自动驾驶开源框架,自诞生以来就培养的一大批学习中的开发者。甚至对于一些机器人项目和自动驾驶项目,也起到了孵化作用,能够快速地帮助搭建一个可用的自动驾驶系统,以便在此基础上进行自研。
当然,也有一些值得吐槽的地方。Autoware 发展现如今 ROS2 的版本,算法显然是更新了,文档也更详尽。只是在这其中过渡中间,我注意到官方用来维护代码的平台,几番折腾,从 Github 到 GitLab 又回到Github,让人混淆。
为了区分,用 Autoware.AI 指代 ROS1 版本,而 Autoware.Unverse 是所谓的基于 ROS2 的最新版本。
我的观点是,尽量看最新的参考,无论是论文还是代码。所以,在两代 Autoware 框架上,即使你完全没有看过 Autoware.AI,也可以直接研读和参考 Autoware.Universe。当然,对于习惯于使用 ROS 的用户,也许觉得进入到 ROS2 的世界又需要经历一个学习曲线。我觉得大可不必。我始终认为,在算法面前,ROS 甚至 C++ 都是工具而已,而工具都是可以在使用中学会。
正文
本文的目标是以比较详尽的篇幅介绍如何使得 Autoware.Universe 运行于 Carla 0.9.13 上。
在写本文时,Autoware.Universe 和 Carla 0.9.13 都是其最新的版本。
需要说明的是,这篇分享或者教程,是依据 Dr. Hatem Darweesh 在 YouTube 上发布的教程,原始地址是:
既然如此,为什么还需要做重复的说明呢?
第一,当然是因为国内的小伙伴,比较不方便。
第二,这中间的细节比较多,以至于在原视频中 Dr. Hatem Darweesh 漏讲了一两个细节,需要有心人去他的 github issue 页面上求教。
综上,希望尽可能用一篇教程(本文以及对应视频)来把可能的坑给填上。
好了,废话到此为止,干货开始。
系统参数
首先,我知道很多人会要问我的系统参数,自觉放上来:
图片:系统参数
显卡是Nvidia RTX 3090,安装了 CUDA 11.x 和cudnn 8.x libary。(x具体是几不重要。)
图片:显卡相关配置
ROS同时安装了ROS Noetic和ROS2 Galactic版本。(题外话:安装多个版本的ROS是没有问题的,但是每次只能通过source激活一个。)
第一步:下载 Carla 0.9.13
“不要编译…不要编译…不要编译…”。
除非你有客制化模拟器的需求,否则完全没有必要编译,费时费力。
图片:Carla 的官方 github 页面
如上图,进入到Carla的官方 github 页面,进入红色框中的 Releases 页面,下载最新的 Release 版本,也就是 Carla 0.9.13。
比如说,下载和解压到工作空间:~/workspaces/carla-0.9.13/
。
我会习惯把对应版本的 scenario_runner 也放到同一文件夹中,以便使用。
图片:Carla 0.9.13 工作目录
可以验证一下:
$ cd ~/workspaces/carla-0.9.13/CARLA_0.9.13
$ ./CarlaUE4.sh -quality-level=Epic -world-port=2000 -resx=800 -resy=600
图片:打开 Carla Simulator
第二步:编译 Autoware.Universe.Openplanner
参见官方文档:Autoware Documentation。这里我们需要选用 Source Installation 的方式,如果之后有机会验证 Docker Installation 也适用在运行在Carla Simulator的任务,我再更新上来。
那么,进入到 Source Installation 的介绍页面,如下图:
图片:Autoware 官方文档 Source Installation 页面
假定之前的 Dependencies 大家都正确安装。那么,下一步就是下载源代码并编译。
这里我们要去下载的是 Dr. Hatem 修改的 Autoware 版本。
$ cd ~/workspaces
$ mkdir autowarefoundation
$ cd autowarefoundation
$ git clone https://github.com/ZATiTech/autoware.universe.openplanner.git -b open-planner
其实,改动的篇幅也并不大,只是加入了 Dr. Hatem 自己的 open_planner。大家可以自行查看 diff。
之后的步骤,与官方文档的介绍并没有不一样。
-
更新代码库:
$ cd autoware.universe.openplanner $ mkdir src $ vcs import src < autoware.repos
-
安装 ROS 依赖项:
$ source /opt/ros/galactic/setup.bash $ rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
-
编译
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
-
Source
$ source install/setup.bash
到这里,我们可以先单独运行 Autoware 验证一下,根据官方文档关于Planning Simulation部分的介绍,操作如下:
-
下载样板地图数据:
$ gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd' $ unzip -d ~/autoware_map ~/autoware_map/sample-map-planning.zip