Docker下运行ORB-Slam2
Posted feisonzl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker下运行ORB-Slam2相关的知识,希望对你有一定的参考价值。
1 硬件介绍
主机:
–系统:ubuntu 18.04
–显卡:NVIDIA GeForce GT 1030 驱动版本:460.80
2 软件安装:
2.1 docker
参考:https://docs.docker.com/engine/install/ubuntu/
sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install \\
apt-transport-https \\
ca-certificates \\
curl \\
gnupg \\
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \\
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world # check docker installed success
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world # Verify that you can run docker commands without sudo
2.2 libnvidia-container
参考:
https://nvidia.github.io/libnvidia-container/
https://www.cnblogs.com/journeyonmyway/p/11234572.html
DIST=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | \\
sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$DIST/libnvidia-container.list | \\
sudo tee /etc/apt/sources.list.d/libnvidia-container.list
sudo apt-get update
sudo apt-get install nvidia-container-toolkit
sudo apt-get install libnvidia-container-tools
sudo systemctl restart docker
docker run --gpus all nvidia/cuda:9.0-base nvidia-smi # check nvidia container installed success
2.3 orbslam2的导入
- 宿主机软件安装:
sudo apt install libglew-dev
sudo apt install libglu1-mesa-dev
- orbslam2 docker项目
继承:
https://gitee.com/wycan/orbslam2_runin_docker
修改:
https://gitee.com/feisonzl/orbslam2_runin_docker/commit/93a6d266c4ddc2c067a3a6cd786f13e88cb10470
这里主要是坑在运行pangolin的时候,会出现:
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X11 Error: BadMatch (invalid parameter attributes)
X11 Error: BadValue (integer parameter out of range for operation)
terminate called after throwing an instance of 'std::runtime_error'
what(): Pangolin X11: Failed to create an OpenGL context
Aborted (core dumped)
导致coredump
最后通过添加宿主机的库路径解决:
"-v", "/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu",
不过需要在宿主机上安装 libglew-dev libglu1-mesa-dev才能解决,否则slam工程无法编译通过
3.小结
本次在docker中成功运行ORB-SLAM2,历经坎坷,自己本身在工作,林林总总花了两个周末才最终run起来,感谢各路大神提供的文章,也希望给需要的小伙伴一些参考
以上是关于Docker下运行ORB-Slam2的主要内容,如果未能解决你的问题,请参考以下文章