使用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