Ubuntu20.04使用Docker运行ORB_SLAM3

1. Docker安装

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.shbuild_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

参考:  Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM+Gazebo仿真运行ORB-SLAM2+各种相关库的安装_ubuntu使用slam-优快云博客

Dockerfile 详解-优快云博客 

Ubuntu20.04在ROS下运行ORB-SLAM3_ros运行orbslam3-优快云博客

(2024年11月)ORB_SLAM3复现记录 : 配置环境->跑EuRoC->跑自己的数据集->理解代码 - asandstar - 博客园ORB-SLAM3笔记(编译、踩坑、论文、看代码)_计算机视觉_菜饭骨头汤无锡总代理(销售王子臧)-GitCode 开源社区

 【SLAM】ORB_SLAM3 初步调试运行详细记录_51CTO博客_orb-slam3

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 /路径 容器名:/路径

5. 其它

docker中无法访问github_mob64ca12de24b0的技术博客_51CTO博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值