安装Docker
前提–学会科学上网
- 卸载老版本的Docker
sudo apt-get remove docker docker-engine docker.io containerd runc
- 安装依赖库
添加Docker GPG keysudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release
set up repositorysudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 测试Docker是否安装成功
如果安装成功会出现以下内容sudo docker run hello-world
安装Nvidia-Docker
前提–当前主机已经安装好了显卡驱动、CUDA、CUDNN等显卡相关的东西
我的电脑配置:
CPU–i7-1165G7
GPU–RTX2060
我安装的版本:
- 显卡驱动–NVIDIA-Linux-x86_64-465.31.run
- CUDA–cuda_11.1.0_455.23.05_linux.run
- CUDNN–cudnn-11.1-linux-x64-v8.0.5.39
在安装完成显卡驱动之后,就能开始安装Nvidia-docker了
curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker
# 设置stable存储库和GPG密钥:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 要访问experimental诸如WSL上的CUDA或A100上的新MIG功能之类的功能,您可能需要将experimental分支添加到存储库列表中.
# 可加可不加
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
# nvidia-docker2更新软件包清单后,安装软件包(和依赖项):
sudo apt-get update
sudo apt-get install -y nvidia-docker2
# 设置默认运行时后,重新启动Docker守护程序以完成安装:
sudo systemctl restart docker
这样Nvidia-docker就安装完成了!
配置Yolo的环境
在这部分主要配置的都是Yolov7的代码环境。
代码地址:https://github.com/WongKinYiu/yolov7
步骤:
- 先pull一个pytorch的官方镜像
注意在这里最好用devel版本,便于在这个基础上继续开发docker pull pytorch/pytorch:1.9.0-cuda10.2-cudnn7-devel
- 为这个镜像创建Docker –非常重要!!!需要为后面ORB-SLAM2部分考虑,后面会讲到
这样创建的容器又能调用GPU又能显示SLAM的图像!docker run --gpus all -it --ipc=host --net=host --privileged -e DISPLAY=unix$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw -e NVIDIA_DRIVER_CAPABILITIES=all --name="yolo_orb_base" 镜像名称 /bin/bash
- 进入容器,先换源
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list apt clean apt-get update -y
- 更新nvidia的key
在上一步中的apt-get update
会报错有关nvidia keyserver
这里只需要更新一下key就好了
再次apt-key adv --recv-keys --keyserver.ubuntu.com 报错中出现的序列号 #example apt-key adv --recv-keys --keyserver.ubuntu.com A4B469963BF863CC
apt-get update
- 安装一些必要的依赖
apt-get install git sudo
- 下载yolov7–科学上网很有必要
git clone https://github.com/WongKinYiu/yolov7.git
- 安装yolov7的python依赖库
cd yolov7 pip install -r requirements.txt
这样YOLOv7的环境就配置完成了!
ORB-SLAM2的环境配置
这里就比较麻烦,因为docker没有可视化图形界面,要使用x11在本机上显示。
首先在主机上安装x11,并打开
sudo apt-get install x11-xserver-utils
xhost + //这个命令每次电脑重启都要运行一次
这样就能把图形显示出来!!
-
下载ORB-SLAM2代码
git clone https://github.com/raulmur/ORB_SLAM2.git
-
安装Pangolin
先安装依赖库sudo apt-get install libgl1-mesa-dev sudo apt-get install libglew-dev sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev sudo apt-get install libpython2.7-dev
下载Pangolin,一定要切换到v0.5版本
git clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin git checkout v0.5 mkdir build cd build cmake .. make sudo make install
测试Pangolin是否安装成功
# 验证 cd ../examples/HelloPangolin mkdir build && cd build cmake .. make ./HelloPangolin
如果安装成功会出现以下图片
-
安装Opencv 3.4.5
在这里因为懒得下载,我直接从主系统的目录下拷贝了OpenCV的安装包#在主系统中直接从电脑中拷贝opencv的压缩包到docker docker cp opecv文件 dockerID:文件目录
解压opencv
unzip opencv文件 cd opencv mkdir build cd build cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. # 4线程数量,根据电脑性能选择合适的数字 make -j4 sudo make install
验证是否安装成功
# 验证 cd opencv/samples/cpp/example_cmake cmake . make ./opencv_example
-
安装eigen
同样的我也是从电脑里直接拷贝的安装包# 解压并重命名为opencv tar -xvf eigen-3.3.7.tar.gz && mv eigen-3.3.7 eigen # 开始编译和安装 cd eigen mkdir build && cd build cmake .. make sudo make install #在很多程序中include的一般是#include<Eigen/Dense>而不是 #include<eigen3/Eigen/Dense> sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include
-
编译ORB-SLAM2
cd ORB_SLAM2 chomd +x build.sh ./build.sh
编译中出现
usleep
was not declared错误
直接在ORB-SLAM2/include/System中加上#include<unistd.h>即可 -
照常运行ORB-SLAM2
./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt Examples/RGB-D/TUM3.yaml ../rgbd_dataset_freiburg3_walking_static/../rgbd_dataset_freiburg3_walking_static/associate.txt