项目简介
本项目是基于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】