VMware下一文带你构建Apollo9.0运行环境
VMware下一文带你构建Apollo9.0运行环境
- 前言
- 准备
- 安装基础软件
- 1.安装Docker19.03+
- 2.安装nvidia驱动
- 3.安装Nvidia container toolkit
- 下载Apollo源码
- 编译Apollo9.0源码
- 1.启动Apollo环境容器
- 2.进入Apollo环境容器
- 3.编译
- 编译过程中可能出现的问题
- 总结
前言
笔者初次接触Apollo9.0时基于百度的官方文档去配置搭建Apollo9.0的运行环境发现中间由于网络和硬件等相关问题前后失败了很多次,踩了很多坑,一次次的崩溃又一次次的站起,终于功夫不负有心人,在参考一系列前辈的智慧后终于完成Apollo9.0环境的搭建并成功编译,成功进入Apollo的世界。在此,笔者回忆往昔搭建环境的辛酸历程,想到想要了解踏入一个崭新的领域却被环境等问题拒之门外的悲凉,有感而发打算将自己在Apollo9.0前期踩的一些坑整理成文档分享给后面想要学习了解自动驾驶领域的同学,为大家提供一个捷径,不至于被一些环境拦在门外,顺利的进入到Apollo的世界继续砥砺前行,愿大家能够通过此文进入到Apollo的世界,为国内的自动驾驶添砖加瓦
准备
- 一台已经安装ubuntu系统的VM虚拟机(Ubuntu系统的版本可以参考Apollo官方文档里面的配置表适配安装,我这里装的是Ubuntu20.04)
安装基础软件
1.安装Docker19.03+
sudo apt-get update
sudo apt-get install docker.io
如果虚拟机里已经有docker的版本了,需要先把docker卸载之后再按照上面的命令再次安装
- 安装完成之后可以通过下述命令查看是否安装成功
docker version
如上图所示返回docker的版本号等信息即为docker安装成功
- Docker配置
sudo systemctl start docker
sudo systemctl enable docker
通过上述命令对docker进行配置
2.安装nvidia驱动
- 因为VMware虚拟机的GPU是虚拟机虚拟出来的,无法安装nvidia显卡驱动,故此步骤省略
3.安装Nvidia container toolkit
- 因为VMware虚拟机的GPU是虚拟机虚拟出来的,无法安装nvidia显卡驱动,故此步骤省略
下载Apollo源码
- 执行以下命令克隆 Apollo 源码
# SSH 方式
git clone git@github.com:ApolloAuto/apollo.git# HTTPS 方式
git clone https://github.com/ApolloAuto/apollo.git
- 切换到最新分支:
cd apollo
git checkout master
git branch -a
如上图所示*号在master前面即表示当前已切换到master分支
编译Apollo9.0源码
1.启动Apollo环境容器
- 在 apollo 目录下输入以下命令来启动环境容器
bash docker/scripts/dev_start.sh
操作成功后将会有如下提示输出
[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_dev_michael container, please run the following command:
[ OK ] bash docker/scripts/dev_into.sh
[ OK ] Enjoy!
2.进入Apollo环境容器
bash docker/scripts/dev_into.sh
如上图所示即为成功进入Apollo环境容器
3.编译
在容器内的 /apollo 目录下输出以下命令编译整个工程
./apollo.sh build
如上图所示即为编译成功
编译过程中可能出现的问题
- 1.出现Socket closed导致编译未完成
14, error message: 'Socket closed', log file: '/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/server/jvm.out')
解决方案:这是硬件资源耗尽导致OOM,可以自行修改脚本来控制编译使用的硬件资源:
在scripts/apollo_base.sh中第755和757行做如下修改
--jobs=${count} --local_ram_resources=HOST_RAM*0.7"
改成
--jobs=2 --local_ram_resources=HOST_RAM*0.5"
如下图所示
- 2.Ubuntu卡死导致无法编译成功
解决方案:这是硬件资源耗尽导致,可以采用如下方式解决:
1.关闭虚拟机,提高虚拟机的内存、硬盘、cpu核后再操作(笔者vm配置如下可供参考)
2.使用Ubuntu命令行模式下再进行Apollo编译(方式1解决不了的情况下使用)
总结
综上所述,按照上面的操作一步步知道成功完成对Apollo源码的编译,道友们就可以愉快的进入到Apollo的世界,在Apollo的世界里肆意的驰骋了,最后谨以此文祝愿各位道友都能在Apollo的世界里学有所成,梦有所圆,提升自己的同时也为中国的自动驾驶事业的发展贡献出自己的一份力量