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    #弃用

————以下空白


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部