Apollo5.5模拟器环境搭建
昨天终于把Baidu Apollo5.5.0的Dreamview模拟器调通了,写篇博文做以总结,整个部署工作大概进行了一周,过程艰辛踩坑无数,本文是适用于中国大陆地区,访问GitHub巨慢、docker容器镜像拉取蜗牛速度的解决方案。欢迎各位无人驾驶开发者、爱好者转载。
我的机器配置:
处理器:Intel i7-7700 内存:16GB 显卡:Nvidia GTX1060 6GB
一、安装Ubuntu18.04 LTS
1、这一部分,我建议移步参考https://www.cnblogs.com/masbay/p/10745170.html,博文作者对基于UEFI引导的BIOS的Windows+Ubuntu双系统的制作进行了详细的教学。这里在网上搜索教程的时候,千万不要按照传统的BIOS启动方式进行配置,UEFI引导是不认的,新式机器要避免踩坑。还有要注意的是,我使用的台式机是256GB固态+1TB机械双硬盘,具体的硬盘分区最好不要按照博文里面的介绍,linux的根目录 / 最好分配128GB以上,之前按照上述教程只给根目录 / 分配了30GB,导致Docker镜像拉取空间不足,失败,不得不重装Ubuntu系统,重新分配了足够大的空间。
2、制作好的双系统,Ubuntu的GRUB引导会接管Windows Boot Manager,这就会导致BIOS之后直接滑入GRUB引导,默认是进入Ubuntu的,倒计时10秒,这样就会给Windows重度依赖者带来不便,GRUB的默认启动项选择和倒计时也是可以修改的,具体方法是:
打开Ubuntu终端,键入命令:
$ sudo gedit /etc/default/grub
① 通过以上命令,我们可以打开文本编辑器,其中的“GRUB_DEFAULT=0”就是设置的默认启动项了。GRUB启动项是按照启动菜单依次使用数字进行索引,起始数字为0。结合前面开机时GRUB的可视化启动菜单,假设Windows Boot Manager的启动项在第3项,因此这里我们就需要将值修改为2(因为第一项是从0开始的),即“GRUB_DEFAULT=2”。
② “GRUB_TIMEOUT=10”就是GRUB的超时倒计时时间,以秒(s)为单位,修改你想设定的值就可以,比如3。
图文教程可以参考链接https://jingyan.baidu.com/article/f71d60379e16021ab641d1ab.html
二、安装Nvidia驱动
如果没有N卡独显的朋友,这一步可以skip。Ubuntu左下角:应用程序 → 全部 → 软件和更新 → 附加驱动,即可安装N卡的驱动,不要使用开源的公版驱动,选择新版的N卡专有官方驱动,如下图所示。

当然,这里也有一个坑,就是安装完显卡驱动后,系统需要重启加载驱动,重启系统时会出现一个蓝色背景的界面Perform Mok Management,这一步不要选择Continue Reboot,因为这样会导致新安装的N卡驱动没有加载,正确的步骤,建议移步参考https://blog.csdn.net/qq_40584960/article/details/84031002
安装完基本的软件后,我的系统详细界面如下图所示。

三、安装git
$ sudo apt-get install git
四、下载Apollo源码
这一步如果是海外的同学,直接使用git clone就可以了
$ git clone https://github.com/ApolloAuto/apollo.git
然鹅,在境内访问GitHub的速度本身就很慢了,加之git clone本身用的https协议,使得原本不稳定的链路雪上加霜,在怀疑DNS污染 → 尝试修改hosts文件;被wall → scientific上网都宣告失败后,果断尝试了离线安装这一“野路子”(目前很少有这方面的部署教程)。
首先,千万不要下载GitHub上的zip压缩包,解压释放后会有问题,比如3.5.0版本的zip压缩包解压释放后挂载在docker中会提示没有挂载点,5.5.0版本的压缩包解压释放后挂在docker中直接崩溃。所以,一定要下载tar.gz版本的压缩包,这个格式才是纯种Linux系统的;释放的位置为文件管理器的主目录下,释放后的文件夹名字最好重命名为apollo,方便操作,如下图所示。(我后面的操作,都是基于该文件夹名称为apollo进行的,当然你也可以命为其他的名字)

五、安装Docker CE环境
Docker官方的指导见:https://docs.docker.com/engine/install/ubuntu/
1、Update apt & 安装https相关包
$ sudo apt-get update$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
2、新增Docker Key
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
3、验证你的密钥
$ sudo apt-key fingerprint 0EBFCD88
如果密钥被正确安装,系统应该输出以下信息:
pub rsa4096 2017-02-22 [SCEA]9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb)
sub rsa4096 2017-02-22 [S]
4、设置稳定存储
$ sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
5、安装Docker CE引擎
$ sudo apt-get update$ sudo apt-get install docker-ce docker-ce-cli containerd.io
6、将 Docker 管理为非根用户,这样使用docker时无需再输入sudo
①
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
② 注销并重新登录Ubuntu
③ 验证是否可以在没有sudo的情况下运行命令
$ docker run hello-world
此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
六、使用Docker拉取Apollo镜像
1、转到apollo文件夹下
$ cd apollo
这时的命令窗口会显示前缀:$USER@你的计算机名:~/apollo$
2、拉取Image
~/apollo$ bash docker/scripts/dev_start.sh
这个步骤,在境内的小伙伴又要遇到trouble了,原因还是链路的不稳定,速度非常抓狂,而且整个ApolloAuto的Docker镜像能有10GB+,硬下肯定是不行的。【更新】Apollo境内的镜像已坏,因此以下命令无法拉取镜像,不要做无谓(畏)的尝试:
~/apollo$ bash docker/scripts/dev_start.sh -C #本镜像已坏,弃用
① 办法总比困难多,改用中科大的Docker镜像就可以完美解决,下载速度起飞,建议移步参考http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker,修改配置文件:
$ sudo gedit /etc/docker/daemon.json
② 在打开的daemon.json中,加入以下代码:
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
③ 重启Docker
$ sudo systemctl restart docker
④ 重新执行镜像的拉取,飞一般的感觉
~/apollo$ bash docker/scripts/dev_start.sh
★ 拉取的过程中,遇到了一个warning,关于N卡独显无法在Docker容器发挥作用的问题,如下图所示。

上图提示我们,需要安装Nvidia-Container-Toolkit才能使N卡驱动在Docker容器中正确部署。但是,由于接下来我们build是CPU版本的Apollo Dreamview模拟器,所以这个warning可以忽略。
综上,可以使整个镜像pulling过程控制在两个小时以内,Docker镜像拉取成功后,系统会提示我们OK,如下图所示:

七、进入Docker环境
~/apollo$ bash docker/scripts/dev_into.sh
这时命令窗口显示前缀的方式会发生改变:$USER@in_dev_docker:/apollo$,说明我们已经成功进入Docker容器环境内。
八、build Apollo
1、在build过程中,如果你的处理器是Intel的,那么恭喜你,又将因为git clone失败而踩雷:build apollo过程,需要克隆Intel的https://github.com/intel/ad-rss-lib,又是万恶的链路问题,如果直接build,你将遇到如下图所示的错误:

我们还是绕过在线git clone GitHub的源码,主要的解决方案有两个:(① ②任选其一)
① 使用国内码云gitee镜像进行替换:
使用文件管理器,打开/apollo/WORKSPACE.in
【注意】千万不是打开/apollo/WORKSPACE,而是结尾带.in的文件!如下图所示:

第47到第53行,替换成:
#ad-rss-lib
new_git_repository(name = "ad_rss_lib",build_file = "third_party/rss_lib.BUILD",tag = "v1.1.0",remote = "https://gitee.com/audier0879/ad-rss-lib",
)
② 当然还是万能的本地安装大法,解压释放下载好的ad-rss-lib.tar.gz(还是嫑下载.zip)到主目录下,注意文件夹名称的统一,我命为:ad-rss-lib(你当然可以修改为其他名称,但是紧接着的代码修改 → 路径path也要一致)
我们还是借鉴①的步骤,打开/apollo/WORKSPACE.in文件,将第47到第53行替换为:
#ad-rss-lib
new_local_repository(name = "ad_rss_lib",build_file = "third_party/rss_lib.BUILD",path = "/ad-rss-lib",
)
2、至此,我们可以开启正式的编译:
$USER@in_dev_docker:/apollo$ bash apollo.sh build
★ 由于部署模拟器时,没有购买外设CAN卡,所以接下来build环节即将出现的另一个warning也可以忽略,如下图所示。

Apollo5.5.0的整个CPU版Dreamview模拟器编译过程大约耗时1600秒,CPU风扇会狂转,别怕小场面;成功后终端会提示我们Build passed,如下图所示:

九、启动仿真环境DreamView
1、
$USER@in_dev_docker:/apollo$ bash scripts/bootstrap.sh
这里执行第一次会出现Failed to start Dreamview,报错原因未知,然而我们再次执行上述命令时,会提示:Module dreamview is already running - skipping. 这说明,实际上Dreamview已经启动成功了:

2、打开浏览器,这里我是用的是Ubuntu自带的Firefox浏览器(当然你也可以使用Google的Chorme),输入http://localhost:8888,这时你就可以看到如下图所示的Baidu Apollo Dreamview仿真器的窗口了:

3、打开一些控制面板的选项,① Module Controller → 打开Planning和Routing两个滑块;② Tasks → 打开SimControl滑块
十、运行demo演示
1、下载demo_3.5
$USER@in_dev_docker:/apollo$ cd docs/demo_guide/
$USER@in_dev_docker:/apollo/docs/demo_guide$ python rosbag_helper.py demo_3.5.record
2、运行demo_3.5
$USER@in_dev_docker:/apollo/docs/demo_guide$ cd /apollo #回到/apollo
$USER@in_dev_docker:/apollo$ cyber_recorder play -f docs/demo_guide/demo_3.5.record --loop
3、再次打开浏览器,输入http://localhost:8888,我们就可以看到demo中奔跑的小车了:

【注意】Apollo3.5.0版本以后,彻底抛弃了ROS,因此不要尝试使用rosbag的方法进行demo演示,会提示command not found,例如下述代码,已经被弃用:
$USER@in_dev_docker:/apollo$ python docs/demo_guide/rosbag_helper.py demo_1.5.bag #弃用
$USER@in_dev_docker:/apollo$ rosbag play demo_1.5.bag --loop #弃用
————以下空白
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
