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 

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