在Nvidia PX2板子上使用docker方式安装autoware的失败记录

笔者最开始按照官网autoware.ai源码方式进行安装,但是安装好后运行demo的时候发现特别卡,CPU直接拉升到100%甚至Rviz直接卡死掉。看了下别人在PX2上跑autoware的视频,还是相当流畅的,怎么在自己这就卡成这样了呢?

检查了下原因,主要是因为PX2上的GPU没有用起来,相当与还是在用CPU跑,这种情况下PX2甚至还不如PC。要在Rviz中渲染点云、加载地图等信息这种复杂的渲染工作不是单单靠CPU就能很好完成的。笔者使用的PX2环境是ubuntu16.04的系统,arm64架构,cuda版本为9.2.78。

怎么办呢?网上查了下,看到有人用docker的方式进行安装,尤其是提供了nvidia-docker,这个可以帮助使用PX2的GPU。那就用docker的方式来安装吧。

主要分为以下三步:

1.docker安装。

这个要根据自己系统类型进行选择,笔者是ubuntu16.04,安装方式见链接Install Docker Engine on Ubuntu。按照链接中的步骤来执行,没出现什么问题。

2.nvidia-docker安装。

按照nvidia-docker2安装方式进行nvidia-docker2的安装。

其实笔者的问题就出现在这一步当中。按照nvidia-docker2安装方式指引,我照着下面步骤安装:

在Nvidia PX2板子上使用docker方式安装autoware的失败记录_第1张图片

nvidia@tegra-ubuntu:~$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
[sudo] password for nvidia: 
OK
nvidia@tegra-ubuntu:~$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/$(ARCH) /
nvidia@tegra-ubuntu:~$ 

但是在执行sudo apt-get update的时候爆出了下面错误信息:

E: Failed to fetch https://nvidia.github.io/libnvidia-container/ubuntu16.04/arm64/Packages  404  Not Found
E: Failed to fetch https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/arm64/Packages  404  Not Found
E: Failed to fetch https://nvidia.github.io/nvidia-docker/ubuntu16.04/arm64/Packages  404  Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.
将链接输入到浏览器中查看结果如下:

意思已经很明确了,并不支持该系统架构。进入https://nvidia.github.io/libnvidia-container查看结果如下:

在Nvidia PX2板子上使用docker方式安装autoware的失败记录_第2张图片

这里对支持的linux系统版本、和体系架构都写清楚了。再联想到笔者的体系架构为arm64,上边写入资源链接的地方/etc/apt/sources.list.d/nvidia-docker.list文件内容如下:

deb https://nvidia.github.io/libnvidia-container/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-container-runtime/ubuntu16.04/$(ARCH) /
deb https://nvidia.github.io/nvidia-docker/ubuntu16.04/$(ARCH) /

在实际执行过程中会将$(ARCH)替换为arm64,而arm64是不支持的,所以也就出现了上边的链接E: Failed to fetch 和 404  Not Found的问题。

而在我的笔记本上,上边执行步骤是没有问题的,因为是x86_64系统,是支持的ARCH为amd64。

翻看了nvidia-docker的Issues,发现了下面这个issue:

在Nvidia PX2板子上使用docker方式安装autoware的失败记录_第3张图片

再次印证了,确实在ubuntu16.04-arm64系统上,nvidia-docker2是不支持的。

将https://nvidia.github.io/libnvidia-container/ubuntu16.04/arm64/Packages中的16.04替换成18.04就可以正常下载packages。

联系了Nvidia的国内支持人员,说PX2上的ubuntu16.04是不能升级到18.04的。

我就奇怪了,其他公司在PX2使用docker是怎么来安装autoware的啊?有看到该问题并且知道怎么安装的大佬,还请高抬贵手给我指教一下,谢谢了。

 

3.从docker官网获取和自己环境匹配的autoware镜像。

这个比较好说,进入docker观望搜索autoware,找到后再从Tag中查找你需要的镜像版本:

在Nvidia PX2板子上使用docker方式安装autoware的失败记录_第4张图片

比如我要下载这里的bleedingedge-kinetic-base-cuda这个镜像,可以使用下面命令进行下载:

docker pull autoware/autoware:bleedingedge-kinetic-base-cuda


上边一切都妥当之后,使用docker run命令执行就可以了,不清楚的网上找下。

笔者在PX2上使用docker安装autoware是一次失败的经历。

 

 

你可能感兴趣的:(autoware,Linux)