项目简介
本项目是基于Python的直接稀疏视觉里程计(Direct Sparse Odometry,DSO)系统。通过SWIG将DSO绑定到Python,从原始的DSO仓库复制而来,并对API做了一些小改动,目标是构建Python库而非C++库。DSO可用于估计相机的运动轨迹和场景的结构,在移动机器人和增强现实等领域有应用价值。
项目的主要特性和功能
- 采用直接稀疏方法,直接处理图像像素,不依赖关键帧或特征点,具备稀疏性。
- 具备实时性能,在合适硬件条件下可实现实时处理,满足移动机器人和增强现实等应用的实时需求。
- 无依赖校准,无需预先校准相机参数,使用更加灵活。
- 能进行场景结构估计,除估计相机运动外,还可对场景的三维结构进行估计。
- 支持多种依赖选项,支持OpenCV用于图像读写和显示,Pangolin用于3D可视化和GUI,ziplib用于读取压缩格式的数据集。
安装使用步骤
安装
- 复制仓库:
bash
- 安装依赖:
- 必备依赖:可以使用apt或conda安装。
- apt:
bash sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-all-dev
- conda:
bash conda install -c conda-forge boost suitesparse eigen numpy
- apt:
- 可选依赖:
- OpenCV:
bash sudo apt-get install libopencv-dev
- ziplib:
bash sudo apt-get install zlib1g-dev cd dso/thirdparty tar -zxvf libzip-1.1.1.tar.gz cd libzip-1.1.1/ ./configure make sudo make install sudo cp lib/zipconf.h /usr/local/include/zipconf.h
- sse2neon(ARM构建需要):复制后运行以下命令:
bash git submodule update --init
- OpenCV:
- 必备依赖:可以使用apt或conda安装。
- 编译:
bash cd dso mkdir build cd build cmake.. make -j4
使用
- 运行数据集:从https://vision.in.tum.de/mono-dataset获取数据集并运行:
bash bin/dso_dataset \ files=XXXXX/sequence_XX/images.zip \ calib=XXXXX/sequence_XX/camera.txt \ gamma=XXXXX/sequence_XX/pcalib.txt \ vignette=XXXXX/sequence_XX/vignette.png \ preset=0 \ mode=0
- 命令行选项:可参考
main_dso_pangolin.cpp
,例如:mode=X
:指定运行模式。preset=X
:指定预设配置。nolog=1
:禁用特征值等日志记录。reverse=1
:反向播放序列。nogui=1
:禁用GUI。nomt=1
:单线程执行。prefetch=1
:在运行DSO前加载并校正所有图像。start=X
:从第X帧开始。end=X
:在第X帧结束。speed=X
:强制以X倍实时速度执行。save=1
:保存大量图像用于视频创建。quiet=1
:禁用大多数控制台输出。sampleoutput=1
:注册示例输出包装器。
- 运行时选项:部分参数可在Pangolin GUI中实时重新配置。
- 访问数据:创建自定义的
Output3DWrapper
并添加到FullSystem.outputWrapper
,以实时访问DSO计算的数据。默认情况下,dso_dataset
会在序列结束时将所有关键帧位姿写入result.txt
文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】