BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / smartcar / #387同步于 2020/9/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Smartcar机器人发帖

Apollo5.5模拟器环境搭建

lilejin322
2020/9/7镜像同步3 回复
原文链接:[https://blog.csdn.net/lilejin322/article/details/108165909](https://blog.csdn.net/lilejin322/article/details/108165909) &emsp;把Baidu Apollo5.5.0的Dreamview模拟器调通了,写篇博文做以总结,整个部署工作大概进行了一周,过程艰辛踩坑无数,本文是适用于中国大陆地区,访问GitHub巨慢、docker容器镜像拉取蜗牛速度的解决方案。欢迎各位无人驾驶开发者、爱好者转载。 &emsp;我的机器配置: &emsp;&emsp;处理器:Intel i7-7700 内存:16GB 显卡:Nvidia GTX1060 6GB **一、安装Ubuntu18.04 LTS** &emsp;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系统,重新分配了足够大的空间。 &emsp;2、制作好的双系统,Ubuntu的GRUB引导会接管Windows Boot Manager,这就会导致BIOS之后直接滑入GRUB引导,默认是进入Ubuntu的,倒计时10秒,这样就会给Windows重度依赖者带来不便,GRUB的默认启动项选择和倒计时也是可以修改的,具体方法是: &emsp;&emsp;打开Ubuntu终端,键入命令: ```Bash $ sudo gedit /etc/default/grub ``` &emsp;&emsp;① 通过以上命令,我们可以打开文本编辑器,其中的“GRUB_DEFAULT=0”就是设置的默认启动项了。GRUB启动项是按照启动菜单依次使用数字进行索引,起始数字为0。结合前面开机时GRUB的可视化启动菜单,假设Windows Boot Manager的启动项在第3项,因此这里我们就需要将值修改为2(因为第一项是从0开始的),即“GRUB_DEFAULT=2”。 &emsp;&emsp;② “GRUB_TIMEOUT=10”就是GRUB的超时倒计时时间,以秒(s)为单位,修改你想设定的值就可以,比如3。 &emsp;图文教程可以参考链接[https://jingyan.baidu.com/article/f71d60379e16021ab641d1ab.html](https://jingyan.baidu.com/article/f71d60379e16021ab641d1ab.html) **二、安装Nvidia驱动** &emsp;如果没有N卡独显的朋友,这一步可以skip。Ubuntu左下角:应用程序 → 全部 → 软件和更新 → 附加驱动,即可安装N卡的驱动,不要使用开源的公版驱动,选择新版的N卡专有官方驱动,如下图所示。 https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/094052zfkzvvku3x4yqwvf.png &emsp;当然,这里也有一个坑,就是安装完显卡驱动后,系统需要重启加载驱动,重启系统时会出现一个蓝色背景的界面Perform Mok Management,这一步**不要选择Continue Reboot**,因为这样会导致新安装的N卡驱动没有加载,正确的步骤,建议移步参考[https://blog.csdn.net/qq_40584960/article/details/84031002](https://blog.csdn.net/qq_40584960/article/details/84031002) &emsp;安装完基本的软件后,我的系统详细界面如下图所示。 https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/133341azon6frnsnn6ssrc.png **三、安装git** ```Bash $ sudo apt-get install git ``` **四、下载Apollo源码** &emsp;这一步如果是海外的同学,直接使用git clone就可以了 ```Bash $ git clone https://github.com/ApolloAuto/apollo.git ``` &emsp;然鹅,在境内访问GitHub的速度本身就很慢了,加之git clone本身用的https协议,使得原本不稳定的链路雪上加霜,在怀疑DNS污染 → 尝试修改hosts文件;被wall → scientific上网都宣告失败后,果断尝试了离线安装这一“野路子”(目前很少有这方面的部署教程)。 &emsp;首先,**千万不要下载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环境** &emsp;Docker官方的指导见:[https://docs.docker.com/engine/install/ubuntu/](https://docs.docker.com/engine/install/ubuntu/) &emsp;1、Update apt & 安装https相关包 ```Bash $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common ``` &emsp;2、新增Docker Key ```Bash $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - ``` &emsp;3、验证你的密钥 ```Bash $ sudo apt-key fingerprint 0EBFCD88 ``` &emsp;如果密钥被正确安装,系统应该输出以下信息: ```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] ``` &emsp;4、设置稳定存储 ```Bash $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" ``` &emsp;5、安装Docker CE引擎 ```Bash $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io ``` &emsp;6、将 Docker 管理为非根用户,这样使用docker时无需再输入sudo &emsp;&emsp;① ```Bash $ sudo groupadd docker $ sudo usermod -aG docker $USER ``` &emsp;&emsp;②注销并重新登录Ubuntu &emsp;&emsp;③验证是否可以在没有sudo的情况下运行命令 ```Bash $ docker run hello-world ``` &emsp;&emsp;此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条信息性消息并退出。 **六、使用Docker拉取Apollo镜像** &emsp;1、转到apollo文件夹下 ```Bash $ cd apollo ``` &emsp;这时的命令窗口会显示前缀:$USER@你的计算机名:~/apollo$ &emsp;2、拉取Image ```Bash ~/apollo$ bash docker/scripts/dev_start.sh ``` &emsp;这个步骤,在境内的小伙伴又要遇到trouble了,原因还是链路的不稳定,速度非常抓狂,而且整个ApolloAuto的Docker镜像能有10GB+,硬下肯定是不行的。【更新】Apollo境内的镜像已坏,因此**以下命令无法拉取镜像**,不要做无谓(畏)的尝试: ```Bash ~/apollo$ bash docker/scripts/dev_start.sh -C #本镜像已坏,弃用 ``` &emsp;&emsp;① 办法总比困难多,改用中科大的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 ``` &emsp;&emsp;② 在打开的daemon.json中,加入以下代码: ```Bash { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] } ``` &emsp;&emsp;③ 重启Docker ```Bash $ sudo systemctl restart docker ``` &emsp;&emsp;④ 重新执行镜像的拉取,飞一般的感觉 ```Bash ~/apollo$ bash docker/scripts/dev_start.sh ``` &emsp;★ 拉取的过程中,遇到了一个warning,关于N卡独显无法在Docker容器发挥作用的问题,如下图所示。 https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170318ldt1utctfff900cd.png &emsp;上图提示我们,需要安装Nvidia-Container-Toolkit才能使N卡驱动在Docker容器中正确部署。但是,由于接下来我们build是CPU版本的Apollo Dreamview模拟器,所以这个warning可以忽略。 &emsp;综上,可以使整个镜像pulling过程控制在两个小时以内,Docker镜像拉取成功后,系统会提示我们OK,如下图所示: https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170421xtlttl83mwrlrrtz.png **七、进入Docker环境** ```Bash ~/apollo$ bash docker/scripts/dev_into.sh ``` &emsp;这时命令窗口显示前缀的方式会发生改变:$USER@in_dev_docker:/apollo$,说明我们已经成功进入Docker容器环境内。 **八、build Apollo** &emsp;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 &emsp;我们还是绕过在线git clone GitHub的源码,主要的解决方案有两个:(**① ②任选其一**) &emsp;&emsp;① 使用国内码云gitee镜像进行替换: &emsp;&emsp;使用文件管理器,打开/apollo/WORKSPACE.in &emsp;&emsp;**【注意】**千万不是打开/apollo/WORKSPACE,而是结尾带.in的文件!如下图所示: https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170728v4lmrmpzfnfnj2pf.png &emsp;&emsp;第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", ) ``` &emsp;&emsp;② 当然还是万能的本地安装大法,解压释放下载好的ad-rss-lib.tar.gz(**还是嫑下载.zip**)到主目录下,注意文件夹名称的统一,我命为:ad-rss-lib(你当然可以修改为其他名称,但是紧接着的代码修改 → 路径path也要一致) &emsp;&emsp;我们还是借鉴①的步骤,打开/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", ) ``` &emsp;2、至此,我们可以开启正式的编译: ```Bash $USER@in_dev_docker:/apollo$ bash apollo.sh build ``` &emsp;&emsp;★ 由于部署模拟器时,没有购买外设CAN卡,所以接下来build环节即将出现的另一个warning也可以忽略,如下图所示。 https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170918iu5zkl9d5mutwld3.png &emsp;&emsp;Apollo5.5.0的整个CPU版Dreamview模拟器编译过程大约耗时1600秒,CPU风扇会狂转,别怕小场面;成功后终端会提示我们Build passed,如下图所示: https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/170955xbtxnmosjbdigtgx.png **九、启动仿真环境DreamView** &emsp;1、 ```Bash $USER@in_dev_docker:/apollo$ bash scripts/bootstrap.sh ``` &emsp;这里执行第一次会出现**Failed to start Dreamview**,报错原因未知,然而我们再次执行上述命令时,会提示:Module dreamview is already running - skipping. 这说明,实际上Dreamview已经启动成功了: https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/171116q2c88vzxj8ooao0c.png &emsp;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 &emsp;3、打开一些控制面板的选项,① Module Controller → 打开Planning和Routing两个滑块;② Tasks → 打开SimControl滑块 **十、运行demo演示** &emsp;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 ``` &emsp;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 ``` &emsp;3、再次打开浏览器,输入[http://localhost:8888](http://localhost:8888),我们就可以看到demo中奔跑的小车了: https://bbs.uestc.edu.cn/data/attachment/forum/202008/23/171407crmp4v1vhrppyqyf.gif &emsp;**【注意】**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 #弃用 ``` ————以下空白
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Desk机器人#1 · 2020/9/8
北邮居然有做自动驾驶的团队啦? 【 在 lilejin322 (lilejin322) 的大作中提到: 】 : [md] : 原文链接:[https://blog.csdn.net/lilejin322/article/details/108165909](https://blog.csdn.net/lilejin322/article/details/108165909) : &emsp;把Baidu Apollo5.5.0的Dreamview模拟器调通了,写篇博文做以总结,整个部署工作大概进行了一周,过程艰辛踩坑无数,本文是适用于中国大陆地区,访问GitHub巨慢、docker容器镜像拉取蜗牛速度的解决方案。欢迎各位无人驾驶开发者、爱好者转载。 : ...................
Ncer机器人#2 · 2020/9/8
bdbd,感谢分享
lilejin322机器人#3 · 2020/9/8
【 在 Desk 的大作中提到: 】 : 北邮居然有做自动驾驶的团队啦? 说来复杂emm,本科成电的,现在在大连理工读研,曾经考过北邮的研究生...