1. Docker安装
https://segmentfault.com/a/1190000041265342
1.1 设置 Docker Engine源
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common
sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
1.2 安装 Dokcer
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
1.3 测试是否安装成功
sudo docker-compose --version
sudo docker run hello-world
2. Nvidia Cuda based设置 nvidia-docker
Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.17.0 documentation
2.1 安装nvidia-container-toolkit
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/stable/deb/nvidia-container-toolkit.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-container-toolkit
2.2 配置docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
3. Compilation and Running
共尝试运行了三个ORBSLAM3的算法,基本在readme都有说怎么构建。
第一个在非ros环境下可以运行,但非ros环境需要对rosbag包进行特殊处理,需要额外编写程序提取图片和时间戳,运行公开数据集较为方便,运行自己的数据集非常不便;且使用这个算法的ros版本在make阶段就有很多的问题,好不容易make成功了,却存在图像输入问题,可能和docker宿主机和容器相关,尝试解决问题无果,只有换一个算法了。
第一个代码运行公开数据集:build_container_cpu.sh
或build_container_cuda.sh
具体取决于CPU或GPU。
git clone https://github.com/jahaniam/orbslam3_docker
./download_dataset_sample.sh
build_container_cuda.sh
mkdir -p Datasets/EuRoC
wget -O Datasets/EuRoC/MH_02_easy.zip http://robotics.ethz.ch/~asl-datasets/ijrr_euroc_mav_dataset/machine_hall/MH_02_easy/MH_02_easy.zip
unzip Datasets/EuRoC/MH_02_easy.zip -d Datasets/EuRoC/MH02
docker exec -it orbslam3 bash
cd /ORB_SLAM3/Examples && bash ./euroc_examples.sh
第二个代码还是跟第一个一样的问题,rosrun可以启动节点,但rosbag play的时候没有信息输入,而且在make阶段就有很多的问题,最后make成功了却还是无法运行,可能系统环境有问题。然后试了第三个代码。
第三个代码可以运行。 运行dockerfile文件要添加一个libepoxy-dev的库:
构建镜像:docker build [OPTIONS] PATH | URL | -
PATH是Dockerfile所在的目录路径(通常是当前目录 . )。OPTIONS可以包括一些可选参数,比如-t来指定镜像的名称和标签,例如:
docker build -t orbslam3 .
但是运行之后,更改ros_mono.cc文件再次catkin_build不能运行了,把代码改回来也还是不能运行:
重新下载编译之后可以运行。
代码链接:
https://github.com/jahaniam/orbslam3_docker
https://github.com/UZ-SLAMLab/ORB_SLAM3
https://github.com/thien94/orb_slam3_ros
Ubuntu20.04在ROS下运行ORB-SLAM3_ros运行orbslam3-优快云博客
(2024年11月)ORB_SLAM3复现记录 : 配置环境->跑EuRoC->跑自己的数据集->理解代码 - asandstar - 博客园ORB-SLAM3笔记(编译、踩坑、论文、看代码)_计算机视觉_菜饭骨头汤无锡总代理(销售王子臧)-GitCode 开源社区
【SLAM】ORB_SLAM3 初步调试运行详细记录_51CTO博客_orb-slam3
(记录)ORB-SLAM3跑自己的双目相机(ZED相机)数据_orb slam3 双目-优快云博客
4. Docker基本使用
Docker安装和基本使用【详解】_docker 安装-优快云博客
基于VSCODE,在DOCKER内运行ORBSLAM2_vscode 运行docker-优快云博客
Docker搭建ORB-SLAM3相关开发环境_orbslam3 docker-优快云博客
-
4.1 查看容器:
查看正在运行的:
docker ps
查看所有容器(包括已停止的):
docker ps -a --size
-a 查看所有容器 --size 显示容器大小。
-
4.2 创建并启动容器:
docker run -dit --name docker-name IMAGE
-dit 表示交互模式后台运行容器,并分配一个伪终端;--name 用于指定容器的名称;
-
-d:这个选项表示以“分离模式”运行容器,即容器在后台运行。
-
-i:这个选项表示“交互式”,即使容器在后台运行,也保持标准输入(STDIN)打开。
-
-t:这个选项分配一个伪终端(pseudo-TTY)到容器,这样可以通过命令行与容器进行交互。
-
4.3 启动容器:
docker start 容器名/容器ID
-
4.4 重启容器:
docker restart 容器名/容器ID
-
4.5 停止容器:
docker stop 容器名/容器ID
强制停止容器:
docker kill 容器名/容器ID
-
4.6 删除容器:
docker rm 容器名/容器ID
注意,只能删除已停止的容器。
-
4.7 进入容器:
docker attach 容器ID
常用的:
docker exec -it 容器ID /bin/bash
前者进入容器正在执行的终端,不会开启新的终端;后者可以在正在运行的容器中启动一个新的shell。
-
4.8 退出容器:
exit
直接停止容器并退出。
ctrl + p + q
不停止容器,只退出
-
4.9 查看所有本地镜像:
docker images
-
4.10 从远程仓库拉取镜像:
docker pull 镜像名
-
4.11 删除镜像:
docker rmi -f IMAGE IMAGE IMAGE
强制删除多个指定镜像。
-
4.12 复制宿主机的文件
docker cp /路径 容器名:/路径