一:总体安装思路
安装Ubuntu20.04 -> 安装CUDA、cuDNN、osqp、tensorRT -> 安装ROS-kenetic -> 安装autoware repository (-> 安装autoware的实验室版本0705)
目的:上传一个包含“显卡驱动、CUDA、cuDNN、osqp、tensorRT -> 安装ROS-kenetic”的docker,其目的是:安装好ubuntu20.04及autoware(0705)后,就可以直接部署docker,然后在docker中写程序。
实现方式:
1.拉取一个ros镜像
2.创建容器
3.在容器里面配置所有驱动
4.基于这个容器来提交一个配置好的镜像
5.用docker部署
二:安装Ubuntu20.04
1.制作系统盘
2.系统盘安装
3.排除software打不开问题
4.安装vscode pycharm的IDE
三:安装docker
1.脚本命令安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
(包含了更换源)
2.1 为了在docker中使用GPU,安装nvidia-docker2(下面有四条命令),这样做的解释在这个网站:Docker、nvidia-container-toolkit安装与常用docker命令及docker镜像和容器的更新维护_Arnold-FY-Chen的博客-CSDN博客_load library failed: libnvidia-ml.so.1, 安装nvidia-docker2后,linux主机不需要安装cuda和cudnn,仅安装显卡驱动即可。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
应该出现
备注:最后一步无法进入容器出现问题的时候,通过下面的网站来解决,安装nvidia-container-toolkit:
2.2在主机中安装显卡驱动470(使用软件和更新进行图形化安装)
备注:安装后要重启
三. docker中安装ros,安装并进入
sudo docker run -it --name ros_test --gpus all \
-v /home/wangting/autoware:/root/workspace \
osrf/ros:melodic-desktop-full
//ros_test是给容器起的名字,可以自行修改//-it是两个参数,在容器中启动伪终端
//--gpus all,使用gpu //-v 挂载命令,前面是宿主机自己程序的位置,后面是容器中创建的虚拟位置。容器的文件夹会自动创建
//docker常用命令参照该网站:Docker 教程 | 菜鸟教程
以及:Docker运行ROS环境 - 知乎 docker运行ros教程_哔哩哔哩_bilibili
这三个链接十分重要。
3.1关闭ros的容器后,再重新进入进入时会导致roscore打不开!解决办法是在容器中刷新ros的环境变量,首先启动容器,然后执行下面的命令:
cd /opt/ros/melodic
source setup.bash
roscore
四.安装cuda、cudnn、tensorRT 7
(docker的优势体现在这里,在完成了上述步骤后,如果想重新部署新的cuda、cudnn版本,只需要再重新生成一个ros容器,就可以在新环境中重新部署不同版本的cuda cudnn)
(同时,针对要使用不同的网络环境时,可以用dockers直接拉取cuda+cudnn镜像,不用在ros上配置)
ros在docker中的目录:/opt/ros/melodic
(运行ros的相关命令如roscore等,都需要首先刷新一下该目录下的.sh文件 source setup.sh)
cuda在docker中的目录(官方镜像):/usr/local/cuda
docker中apt更新命令:apt-get update
下载apt的命令:apt install **
4.1cuda
4.1.1在官网选择下载cuda命令,下载runfile版本即可。注意要进入到/usr/local路径下进行下载。
CUDA Toolkit Archive | NVIDIA Developer
注意:
(1)该命令有两个语句,一定注意执行完第一条语句(wget https:///)后在终端输入cd,然后再重新cd /usr/local执行第二条sudo sh /命令(即重进一遍当前目录);执行后会在当前目录下生成cuda、cuda-11.1文件夹。
(2)如果出错则去掉sudo。
(3)查看cuda版本:nvcc -V
4.2cudnn
4.2.1 首先在官网下载对应版本的cudnn文件,注意在容器的命令窗口下没有办法直接下载,因此要在宿主机上将deb包下载到容器里面挂载的那个文件夹下,那么就可以在容器里面查看了。
注意:安装对应版本的三个文件的格式:
Cudnn 版本选择安装官网
cuDNN Archive | NVIDIA Developer
4.2.2下载后先移动到容器下自由的路径,然后进入对应路径,解压各个文件:
sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.1_amd64.deb
4.2.3检测安装效果,查看安装版本的命令
dpkg -l | grep cudnn
安装成功的话应该是这样:
4.3Tensor RT,根据官网的介绍来吧,虽然是英文,但是真的是最靠谱的
Installation Guide :: NVIDIA Deep Learning TensorRT Documentation
4.3.1问题1:出现No module named ‘pip’
sudo apt-get install python3.6
还没解决的话再执行
sudo apt install --fix-missing python3-pip
4.3.2 验证
dpkg -l | grep TensorRT
五、编译Autoware包,这里要参照GitHub - tier4/AutowareArchitectureProposal.proj: This is the source code of the feasibility study for Autoware architecture proposal.