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