Docker搭建VSLAM环境

VSLAM

1、在Win10上Docker安装openvSLAM

    第一步:开始-设置(拉到最下面:程序和功能)-打开启用和关闭Window功能-选中Hyper-H

    第二步:下载Docker:https://store.docker.com/editions/community/docker-ce-desktop-windows 下载安装包:2.2.0.4,安装完成重启电脑

    第三步:双击桌面快捷图标:Docker,启动成功后在托盘处有一个小鲸鱼图标。在命令行输入命令:docker version可查看docker版本号

    第四步:更换镜像源地址:https://registry.docker-cn.com,在Docker-Settings里设置,设置完成后点击Apply保存。

    第五步:加载测试镜像:docker run hello-world

2、生成Docker镜像

    下载Openvslam源代码,进入Openvslam目录

    执行命令:docker build -t openvslam-desktop -f Dockerfile.desktop [--build-arg NUM_THREADS=4 多线程编译]

3、启动Docker容器

    1、xhost +local: {before launching the container,allow display access from local users} 

     但本人在Win10的Mingw上操作报错,无此命令!

     安装Cgywin,x11:

        export DISPLAY=:0

        xhost +[win主机 ip]:xdpyinfo可正常执行  

     挂载Win目录进Docker:docker run -t -i -v /e/.../openvslam-master:/.../openvslam openvslam-desktop  [最后的Container id不能缺]

    2、launch the container

         进入Docker容器界面:docker run -it --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix:ro openvslam-desktop

4、运行测试脚本

跟踪和建图

./run_video_slam -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_1/video.mp4

 -c ./aist_living_lab_1/config.yaml --frame-skip 3 --no-sleep --map-db map.msg

定位

./run_video_localization -v ./orb_vocab/orb_vocab.dbow2 -m ./aist_living_lab_2/video.mp4

  -c ./aist_living_lab_2/config.yaml --frame-skip 3 --no-sleep --map-db map.msg

单目EUROC测试:

./run_euroc_slam -v ./orb_vocab/orb_vocab.dbow2

   -d ./EuRoC/MAV/mav0/  -c ./example/euroc/EuRoC_mono.yaml

挂载windows指定目录进Docker方法:

docker run -t -i -v /e/code/github/openvslam-master/openvslam-master:/openvslam-master openvslam-desktop

下载词袋文件:orb_vocab.dbow2,并通过挂载方法复制测试脚本所需要文件进当前运行目录。

 Docker常用操作:

docker run -it --name=test ubuntu(-t在新容器内指定一个终端,-i允许对容器内标准输入进行交互)  :docker run --name=test -itd ubuntu (-d:后台运行容器)
exit 退出Docker容器
docker ps:查看正在运行的容器
docker ps -a :查看所有容器
docker images :查看所有镜像
docker pull nginx  :
docker run --name=nginx -p 80:80 -itd nginx:latest:默认在宿主机无法访问虚拟机端口,-p实现端口转发
docker stop Container id(Container id可通过命令docker ps -a查询)
docker start Container id
docker rm  Container id(删除镜像,需先停止,后删除)
docker rmi image id(删除镜像,可通过命令docker images查询)
docker run --name=nginx -itd -p 80:80 -v ~/nginx:/usr/share/nginx 挂载主机目录到容器作为数据卷(-v 宿主目录:容器目录)

Openvslam运行在SocketViewer上:

启用Git cmd,开启服务器端:
[Building Docker Images]
   cd openvslam-master
一、修改源代码后需要编译,编译命令如下: docker build -t openvslam-socket -f Dockerfile.socket .(多线程编译会报错怀疑和我CPU有关)
二、没有修改源代码,直接启动OpenVSLAM的Container
docker run --rm -it --name openvslam-server --net=host openvslam-server
[WebSocket:listening on *:3000
HTTP server:listening on *:3001
Connected - ID:SbjbTIsAp3cBxGEuAAAA]
[Docker Image of Server] cd openvslam-master docker build -t openvslam-server . 再开启一个Git cmd,开启客户端:
docker run --rm -it --name openvslam-socket --net=host openvslam-socket #进入Docker环境root@hostname:/openvslam/build#
[运行跟踪和建图] ./run_euroc_slam -v ./orb_vocab/orb_vocab.dbow2 -d ./mav0 -c ../example/euroc/EuRoC_momo.yaml
[运行定位]
./run_euroc_localization
  -v ./orb_vocab/orb_vocab.dbow2
  -d ./mav0
  -c ../example/euroc/EuRoC_momo.yaml


打开:http://localhost:3001/

正常运行的话,Log显示如下:

Pangolin安装:

sudo apt-get install libglew-dev
sudo apt-get install cmake
sudo apt-get install libboost-dev libboost-thread libboost-thread-dev libboost-filesystem-dev


git clone https://github.com/stevenlovegrove/Pangolin
cd Pangolin
mkdir build
cd build
cmake -DCPP11_NO_BOOST=1 ..
make -j
原文地址:https://www.cnblogs.com/jimchen1218/p/12466064.html