返回信息流原文链接:[https://blog.csdn.net/lilejin322/article/details/108165909](https://blog.csdn.net/lilejin322/article/details/108165909)
 把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](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终端,键入命令:
```Bash
$ 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](https://jingyan.baidu.com/article/f71d60379e16021ab641d1ab.html)
**二、安装Nvidia驱动**
 如果没有N卡独显的朋友,这一步可以skip。Ubuntu左下角:应用程序 → 全部 → 软件和更新 → 附加驱动,即可安装N卡的驱动,不要使用开源的公版驱动,选择新版的N卡专有官方驱动,如下图所示。
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/094052zfkzvvku3x4yqwvf.png
 当然,这里也有一个坑,就是安装完显卡驱动后,系统需要重启加载驱动,重启系统时会出现一个蓝色背景的界面Perform Mok Management,这一步**不要选择Continue Reboot**,因为这样会导致新安装的N卡驱动没有加载,正确的步骤,建议移步参考[https://blog.csdn.net/qq_40584960/article/details/84031002](https://blog.csdn.net/qq_40584960/article/details/84031002)
 安装完基本的软件后,我的系统详细界面如下图所示。
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/133341azon6frnsnn6ssrc.png
**三、安装git**
```Bash
$ sudo apt-get install git
```
**四、下载Apollo源码**
 这一步如果是海外的同学,直接使用git clone就可以了
```Bash
$ 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进行的,当然你也可以命为其他的名字)
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/133637p136qjlwfpee2l0d.png
**五、安装Docker CE环境**
 Docker官方的指导见:[https://docs.docker.com/engine/install/ubuntu/](https://docs.docker.com/engine/install/ubuntu/)
 1、Update apt & 安装https相关包
```Bash
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
```
 2、新增Docker Key
```Bash
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
 3、验证你的密钥
```Bash
$ sudo apt-key fingerprint 0EBFCD88
```
 如果密钥被正确安装,系统应该输出以下信息:
```Bash
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
```
 4、设置稳定存储
```Bash
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
```
 5、安装Docker CE引擎
```Bash
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
```
 6、将 Docker 管理为非根用户,这样使用docker时无需再输入sudo
  ①
```Bash
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
```
  ②注销并重新登录Ubuntu
  ③验证是否可以在没有sudo的情况下运行命令
```Bash
$ docker run hello-world
```
  此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。
**六、使用Docker拉取Apollo镜像**
 1、转到apollo文件夹下
```Bash
$ cd apollo
```
 这时的命令窗口会显示前缀:$USER@你的计算机名:~/apollo$
 2、拉取Image
```Bash
~/apollo$ bash docker/scripts/dev_start.sh
```
 这个步骤,在境内的小伙伴又要遇到trouble了,原因还是链路的不稳定,速度非常抓狂,而且整个ApolloAuto的Docker镜像能有10GB+,硬下肯定是不行的。【更新】Apollo境内的镜像已坏,因此**以下命令无法拉取镜像**,不要做无谓(畏)的尝试:
```Bash
~/apollo$ bash docker/scripts/dev_start.sh -C #本镜像已坏,弃用
```
  ① 办法总比困难多,改用中科大的Docker镜像就可以完美解决,下载速度起飞,建议移步参考[http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker](http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker),修改配置文件:
```Bash
$ sudo gedit /etc/docker/daemon.json
```
  ② 在打开的daemon.json中,加入以下代码:
```Bash
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}
```
  ③ 重启Docker
```Bash
$ sudo systemctl restart docker
```
  ④ 重新执行镜像的拉取,飞一般的感觉
```Bash
~/apollo$ bash docker/scripts/dev_start.sh
```
 ★ 拉取的过程中,遇到了一个warning,关于N卡独显无法在Docker容器发挥作用的问题,如下图所示。
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170318ldt1utctfff900cd.png
 上图提示我们,需要安装Nvidia-Container-Toolkit才能使N卡驱动在Docker容器中正确部署。但是,由于接下来我们build是CPU版本的Apollo Dreamview模拟器,所以这个warning可以忽略。
 综上,可以使整个镜像pulling过程控制在两个小时以内,Docker镜像拉取成功后,系统会提示我们OK,如下图所示:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170421xtlttl83mwrlrrtz.png
**七、进入Docker环境**
```Bash
~/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](https://github.com/intel/ad-rss-lib),又是万恶的链路问题,如果直接build,你将遇到如下图所示的错误:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170551wrlu9p7oysoikp1l.png
 我们还是绕过在线git clone GitHub的源码,主要的解决方案有两个:(**① ②任选其一**)
  ① 使用国内码云gitee镜像进行替换:
  使用文件管理器,打开/apollo/WORKSPACE.in
  **【注意】**千万不是打开/apollo/WORKSPACE,而是结尾带.in的文件!如下图所示:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170728v4lmrmpzfnfnj2pf.png
  第47到第53行,替换成:
```Bash
#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行替换为:
```Bash
#ad-rss-lib
new_local_repository(
name = "ad_rss_lib",
build_file = "third_party/rss_lib.BUILD",
path = "/ad-rss-lib",
)
```
 2、至此,我们可以开启正式的编译:
```Bash
$USER@in_dev_docker:/apollo$ bash apollo.sh build
```
  ★ 由于部署模拟器时,没有购买外设CAN卡,所以接下来build环节即将出现的另一个warning也可以忽略,如下图所示。
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170918iu5zkl9d5mutwld3.png
  Apollo5.5.0的整个CPU版Dreamview模拟器编译过程大约耗时1600秒,CPU风扇会狂转,别怕小场面;成功后终端会提示我们Build passed,如下图所示:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170955xbtxnmosjbdigtgx.png
**九、启动仿真环境DreamView**
 1、
```Bash
$USER@in_dev_docker:/apollo$ bash scripts/bootstrap.sh
```
 这里执行第一次会出现**Failed to start Dreamview**,报错原因未知,然而我们再次执行上述命令时,会提示:Module dreamview is already running - skipping. 这说明,实际上Dreamview已经启动成功了:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/171116q2c88vzxj8ooao0c.png
 2、打开浏览器,这里我是用的是Ubuntu自带的Firefox浏览器(当然你也可以使用Google的Chorme),输入[http://localhost:8888](http://localhost:8888),这时你就可以看到如下图所示的Baidu Apollo Dreamview仿真器的窗口了:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/171159efz6zjfk1ooiekjb.png
 3、打开一些控制面板的选项,① Module Controller → 打开Planning和Routing两个滑块;② Tasks → 打开SimControl滑块
**十、运行demo演示**
 1、下载demo_3.5
```Bash
$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
```Bash
$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](http://localhost:8888),我们就可以看到demo中奔跑的小车了:
https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/171407crmp4v1vhrppyqyf.gif
 **【注意】**Apollo3.5.0版本以后,彻底抛弃了ROS,因此不要尝试使用rosbag的方法进行demo演示,会提示command not found,例如下述代码,已经被弃用:
```Bash
$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 #弃用
```
————以下空白
这是一条镜像帖。来源:北邮人论坛 / smartcar / #387同步于 2020/9/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Smartcar机器人发帖
Apollo5.5模拟器环境搭建
lilejin322
2020/9/7镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
北邮居然有做自动驾驶的团队啦?
【 在 lilejin322 (lilejin322) 的大作中提到: 】
: [md]
: 原文链接:[https://blog.csdn.net/lilejin322/article/details/108165909](https://blog.csdn.net/lilejin322/article/details/108165909)
:  把Baidu Apollo5.5.0的Dreamview模拟器调通了,写篇博文做以总结,整个部署工作大概进行了一周,过程艰辛踩坑无数,本文是适用于中国大陆地区,访问GitHub巨慢、docker容器镜像拉取蜗牛速度的解决方案。欢迎各位无人驾驶开发者、爱好者转载。
: ...................
【 在 Desk 的大作中提到: 】
: 北邮居然有做自动驾驶的团队啦?
说来复杂emm,本科成电的,现在在大连理工读研,曾经考过北邮的研究生...