Docker安装Autoware

使用gitee上的autoware源码包编译遇到的问题非常多,主要是依赖很多。使用Docker来安装autoware相对简单很多

1,Docker用户权限问题

sudo groupadd docker

sudo gpasswd -a $USER docker

newgrp docker

docker ps

2,nvidia-docker

docker中不能安装nvidai驱动,nvidia-docker是一个可以使用GPU的docker,nvidia-docker是在docker上做了一层封装,通过nvidia-docker-plugin,然后调用到docker上,其最终实现的还是在docker的启动命令上携带一些必要的参数。因此在安装nvidia-docker之前,还是需要安装docker的。docker 19.03不需要安装nvidia-docker

3,cuda,opencv版本问题

    在使用autoware里的相机雷达标定软件时,会提示cv2.CV_AA不存在,因为本机opencv是3,所以要装2.4,而在编译安装opencv2.4.13时会报cuda相关错误。查资料后,是因为cuda版本问题,我是装的cuda10.1,所以准备重装cuda9和opencv2.4.13

   卸载cuda,使用deb安装cuda可通过下面方式卸载

  sudo apt-get autoremove --purge cuda

  安装cuda9.0,使用dpkg安装cuda前要到/var/lib/dpkg/info目录下删除以前cuda残留的文件

sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb

sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub 

执行下面命令之前确保其他版本的sourcelist已经删掉

sudo apt-get update

sudo apt-get install cuda

如果安装的cuda与nvidia驱动不对应,会出现循环登录问题

在登录界面按ctrl+alt+f1,可能屏幕会一直滚动出现文字

卸载驱动

sudo apt-get --purge remove nvidia*

yes

sudo apt autoremove

如果多次安装cuda deb,用一下命令删除以前的残留文件

sudo su

dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge

autoware部分

安装docker后拉取autoware镜像

docker pull autoware/autoware:1.7.0-kinetic

安装nvidia-docker

由于之前装的是1.p版本(没有成功,最后装opencv2.4.10和cuda9.0,选择装nvidia-docker1,执行sudo apt-get install -y nvidia-docker),所以先卸载之前的nvidia-docker

docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f

sudo apt-get purge -y nvidia-docker

安装nvidia-docker2.0

# Add the package repositories
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update

3,sudo apt-get update

4,sudo apt-get install -y nvidia-docker2

5,sudo pkill -SIGHUP dockerd

6,docker run --runtime=nvidia --rm nvidia/cuda:10.1-base nvidia-smi

7,最后我装的是1.0版本,cuda是9.0。

docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi

注意这里的cuda版本要和本机cuda版本一样

运行autoware

1,创建如下目录

/home/Autoware/docker/generic

2,上面目录下新建文件run.sh

3,写入如下内容,下面的内容是启动docker里的autoware

#!/bin/sh

XSOCK=/tmp/.X11-unix
XAUTH=/home/$USER/.Xauthority
SHARED_DIR=/home/autoware/.autoware
HOST_DIR=/home/$USER/.autoware

nvidia-docker run \
    -it --rm \
    --volume=$XSOCK:$XSOCK:rw \
    --volume=$XAUTH:$XAUTH:rw \
    --volume=$HOST_DIR:$SHARED_DIR:rw \
    --env="XAUTHORITY=${XAUTH}" \
    --env="DISPLAY=${DISPLAY}" \
    -u autoware \
    --privileged -v /dev/bus/usb:/dev/bus/usb \
    --net=host \
    autoware/autoware:1.7.0-kinetic

4,sh ./run.sh  执行后终端会变成 autoware@username:~$

5,cd Autoware/ros

6,./run 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章