如何使用LGSVL模拟器运行Apollo 5.5

toc

一、环境描述

1. 服务器

  • CPU:Intel Xeon Gold 6136(12核24线程)
  • 内存:64 GB
  • 显卡:NVIDIA GeForce GTX 1080Ti

2. 操作系统

  • 版本:Ubuntu 18.04.4 Desktop LTS

3. Docker

  • 版本:Docker version 19.03.11, build 42e35e61f3

4. LGSVL模拟器

  • 版本:2020.05

5. Apollo

  • 版本:apollo-5.5

二、安装Ubuntu系统

1. 下载系统镜像

Ubuntu系统镜像的下载链接,如下所示:

https://ftp.sjtu.edu.cn/ubuntu-cd/18.04.4/ubuntu-18.04.4-desktop-amd64.iso

2. 制作安装U盘

使用UltraISO制作Ubuntu的安装U盘:

Step-1:写入Syslinux引导扇区,确保U盘能够引导启动;
Step-2:将Ubuntu的系统镜像写入U盘。

3. 调整BIOS选项

开机后根据屏幕提示,按下DEL键盘,进入BIOS设置界面:

Step-1:将“Advanced → CPU Configuration → Hyper-Threading [ALL]”设置为“Enable”,打开CPU的超线程功能,充分利用CPU的算力;
Step-2:将“Advanced → CPU Configuration → Intel Virtualization Technology”设置为“Enable”,打开CPU的虚拟化功能,后续安装Docker容器服务时需要用到;
Step-3:将“Advanced → PCIe/PCI/PnP Configuration → Above 4G Decoding”设置为“Enabled”,打开PCIe设备的4G空间解码功能,这样可以充分利用显卡的显存;
Step-4:将“Advanced → PCIe/PCI/PnP Configuration → VGA Priority”设置为“Auto”,这样能根据视频线的连接位置自动选择集成显卡或独立显卡;
Step-5:将“Boot → Boot Option #1”设置为“UEFI Hard Disk”,选择UEFI磁盘作为系统默认引导设备,这个磁盘也是将要安装Ubuntu系统的磁盘。

4. 安装系统

保存BIOS设置,退出BIOS设置界面,服务器会自动重新启动,根据屏幕提示,按下F11键,在弹出的菜单中选择U盘启动。磁盘分区和文件系统规划如下:

文件系统 大小 磁盘
/ 100G SSD
/usr/local 138G SSD
/var 1T HDD
/home 1.638T HDD

5. 更新系统

在Ubuntu中打开终端,运行以下命令,完全更新系统:

sudo apt full-upgrade

6. 安装SSH服务

在Ubuntu的终端中,运行以下命令,安装OpenSSH-Server,便于远程连接操控服务器:

sudo apt install -y openssh-server openssh-client net-tools

三、安装显卡驱动

1. 添加官方PPA源

在服务器的命令终端中,运行以下命令,添加NVIDIA官方的PPA源:

sudo add-apt-repository ppa:graphics-drivers/ppa

2. 更新安装源

在服务器的命令终端中,运行以下命令,更新软件安装源的索引数据:

sudo apt-get update

3. 安装显卡驱动和工具

在服务器的命令终端中,运行以下命令,安装NVIDIA最新的显卡驱动:

sudo apt install -y nvidia-driver-440 nvidia-settings nvidia-prime

4. 重新启动

显卡驱动安装完成之后,必须重新启动才能生效:

reboot

5. 测试安装

重启完成之后,登录系统,在命令终端中运行以下命令,测试驱动是否安装成功:

nvidia-smi

若命令返回的信息如下图所示,则表示安装成功:

四、安装Docker服务

1. 卸载旧版本

在服务器的命令终端中,运行以下命令,卸载系统自带的旧版本Docker(系统安装时有可能会选中Docker软件包):

sudo apt-get remove docker docker-engine docker.io containerd runc

2. 安装依赖包

更新apt软件包索引,然后安装依赖包,允许apt通过HTTPS来使用软件源:

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

3. 添加Docker官方GPG密钥

添加Docker的官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

验证密钥的指纹是不是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,通过搜索指纹的最后8个字符:

sudo apt-key fingerprint 0EBFCD88

如果上述命令的返回信息如下图所示,则表明GPG密钥添加成功:

4. 添加Docker官方源

运行以下命令,添加Docker稳定版本的官方源:

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

5. 安装Docker引擎

更新apt软件包索引,安装最新版本的Docker引擎和containerd:

sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

6. 以非root用户身份管理Docker

在服务器的命令终端中,运行以下命令,创建docker用户组,然后将当前用户添加至其中:

sudo groupadd docker
sudo usermod -aG docker $USER

7. 重新启动

Docker引擎安装完成之后,重新启动服务器:

reboot

五、安装Nvidia Docker

请确保NVIDIA显卡驱动正确安装,Docker 19.03也要安装正确!

1. 添加软件源

在服务器的命令终端中,运行以下命令,添加NVIDIA的apt密钥,然后添加其软件源:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

2. 安装NVIDIA容器工具包

更新apt软件包索引,然后安装NVIDIA容器工具包:

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

3. 重启Docker服务

重启Docker服务,使得NVIDIA容器工具包生效:

sudo systemctl restart docker

4. 测试安装

使用最新的官方CUDA镜像来运行nvidia-smi命令,测试NVIDIA容器工具包是否安装成功:

docker run --gpus all nvidia/cuda:10.0-base nvidia-smi

若上述命令的返回信息如下图所示,则表示NVIDIA容器工具包安装成功(镜像下载过程比较漫长,请耐心等待):

六、安装LGSVL模拟器

1. 安装依赖包

在服务器的命令终端中,运行以下命令,安装vulkan程序库,否则打不开模拟器界面:

sudo apt install -y libvulkan1

2. 下载LGSVL压缩包

从GitHub上下载最新版本的LGSVL压缩包:

cd ~/Downloads
wget https://github.com/lgsvl/simulator/releases/download/2020.05/lgsvlsimulator-linux64-2020.05.zip

3. 解压和安装

直接在下载目录中解压压缩包:

unzip lgsvlsimulator-linux64-2020.05.zip

4. 打开模拟器

进入解压缩得到的目录,然后运行模拟器:

cd lgsvlsimulator-linux64-2020.05
./simulator

模拟器界面如下图所示:

5. 安装地图和车辆模型

点击上图中的“Open Browser”按钮,会自动在浏览器中打开模拟器的配置页面。填写在LGSVL网站注册的账号和密码,登录模拟器控制台,如下图所示:

登录成功后,在Maps和Vehicles页面中添加地图和车辆模型,需要耐心等待下载完成,如下图所示:

七、安装Apollo

1. 克隆代码仓库

运行以下命令,克隆最新版本的Apollo源码(约有3.7GB,请耐心等待克隆完成):

cd ~/Downloads
git clone https://github.com/ApolloAuto/apollo

2. 构建Apollo和桥接器

Apollo必须在容器中构建,运行以下命令,启动容器:

cd apollo
./docker/scripts/dev_start.sh

上述命令会启动容器,并且挂载一些存储卷,首次运行时,需要花费一些时间来拉取最新的存储卷(约有16.5GB,请耐心等待拉取完成)。拉取的容器镜像,如下图所示:

接下来,进入容器:

./docker/scripts/dev_into.sh

构建Apollo(已优化、非调试、支持GPU):

./apollo.sh build_opt_gpu

构建需要花费大量时间,请耐心等待,若最后返回消息如下图所示,则表示构建成功:

八、测试验证

1. 启动和进入Apollo容器

在启动Apollo和桥接器之前,需要先进入Apollo容器之中,启动命令需要在容器中运行,否则会出错:

cd ~/Downloads/apollo
./docker/scripts/dev_start.sh
./docker/scripts/dev_into.sh

上述命令若运行成功,则可以看到已启动的Apollo容器,如下图所示:

2. 启动Apollo

这个步骤应该在Apollo容器中完成!如果没有在/apollo目录中运行脚本,则可能会看到Dreamview尚未构建的错误消息:

./scripts/bootstrap_lgsvl.sh

若上述命令的返回信息如下图所示,则表明Apollo成功启动:

3. 启动桥接器

这个步骤应该在Apollo容器中完成!桥接器负责Apollo和LGSVL模拟器之间的通信:

./scripts/bridge.sh

4. 运行LGSVL模拟器

在服务器上新建一个命令终端,在新终端中启动LGSVL模拟器:

cd ~/Downloads/lgsvlsimulator-linux64-2020.05
./simulator

创建一个使用BorregasAve地图和Lincoln2017MKZ (Apollo 5.0)车辆的仿真,如下图所示:

localhost:9090作为桥接字符串,如下图所示:

启用交通和行人,如下图所示:

设置一天的时间和天气,如下图所示:

提交仿真,然后点击“Play”按钮,如下图所示:

5. 在Dreamview中进行仿真

在浏览器中访问localhost:8888,打开Dreamview页面。在车辆菜单的左侧菜单中,选择Mkz Lgsvl,如下图所示:

在页面的右上角,选择Lincoln2017MKZ LGSVL车辆和Borregas Ave地图,如下图所示:

打开页面左侧的“Module Controller”标签页,然后启用Localization、Transform、Perception、Traffic Light、Planning、Prediction、Routing和Control,如下图所示:

打开页面左侧的“Route Editing”标签页,然后点击一条车道线,选择一个目的地,然后点击“Send Routing Request”按钮,如下图所示:

最后,便能在Dreamview中观察到车辆移动至目的地了!在LGSVL模拟器中运行Apollo仿真的效果,如下图所示:

6. 停止Apollo容器

仿真结束之后,可以在一个新终端中运行以下命令来停止Apollo容器:

cd ~/Downloads/apollo
./docker/scripts/dev_start.sh stop