littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Python的直接稀疏视觉里程计系统

项目简介

本项目是基于Python的直接稀疏视觉里程计(Direct Sparse Odometry,DSO)系统。通过SWIG将DSO绑定到Python,从原始的DSO仓库复制而来,并对API做了一些小改动,目标是构建Python库而非C++库。DSO可用于估计相机的运动轨迹和场景的结构,在移动机器人和增强现实等领域有应用价值。

项目的主要特性和功能

  1. 采用直接稀疏方法,直接处理图像像素,不依赖关键帧或特征点,具备稀疏性。
  2. 具备实时性能,在合适硬件条件下可实现实时处理,满足移动机器人和增强现实等应用的实时需求。
  3. 无依赖校准,无需预先校准相机参数,使用更加灵活。
  4. 能进行场景结构估计,除估计相机运动外,还可对场景的三维结构进行估计。
  5. 支持多种依赖选项,支持OpenCV用于图像读写和显示,Pangolin用于3D可视化和GUI,ziplib用于读取压缩格式的数据集。

安装使用步骤

安装

  1. 复制仓库: bash
  2. 安装依赖:
    • 必备依赖:可以使用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
    • 可选依赖:
      • 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
  3. 编译: bash cd dso mkdir build cd build cmake.. make -j4

使用

  1. 运行数据集:从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
  2. 命令行选项:可参考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:注册示例输出包装器。
  3. 运行时选项:部分参数可在Pangolin GUI中实时重新配置。
  4. 访问数据:创建自定义的Output3DWrapper并添加到FullSystem.outputWrapper,以实时访问DSO计算的数据。默认情况下,dso_dataset会在序列结束时将所有关键帧位姿写入result.txt文件。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】