/DPV-SLAM_Comment

learning-based VO with Global Optimization

Primary LanguageC++MIT LicenseMIT

DPV-SLAM (复现及中文注释版~仅供个人学习记录用)

配置过程记录

  • 下载源码并配置conda环境。虽然之前已经配置过dpvo的环境了,但是看yaml代码似乎变换比较大,重新配置为dpv_slam
git clone https://github.com/princeton-vl/DPVO.git --recursive

conda env create -f environment.yml
conda activate dpv_slam
conda remove --name dpv_slam --all
  • 下载安装eigen库以及安装DPVO包
#如果直接用本仓库的代码不需要下载
wget https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.zip
unzip eigen-3.4.0.zip -d thirdparty

# install DPVO (感觉配置文件有点问题,尝试换回DPVO conda环境。conda activate dpvo但是这又导致需要重新配置,为此还是修改environment里面的版本吧~)
pip install .

#模型直接用回之前的试试
地址为:
/home/gwp/DPVO/dpvo.pth
数据地址为:
/home/gwp/DPVO/movies/
  • 安装可视化工具
./Pangolin/scripts/install_prerequisites.sh recommended #前面应该已经安装过的了~
mkdir Pangolin/build && cd Pangolin/build
cmake ..
make -j8
sudo make install
cd ../..
pip install ./DPViewer #这个应该是安装到conda环境中的~
  • 对于回环部分
# 首先需要安装opencv
sudo apt-get install -y libopencv-dev

cd DBoW2
mkdir -p build && cd build
cmake .. # tested with cmake 3.22.1 and gcc/cc 11.4.0 on Ubuntu
make # tested with GNU Make 4.3
sudo make install
cd ../..
pip install ./DPRetrieval #这个应该是安装到conda环境中的~

运行测试

python demo.py \
    --imagedir=<path to image directory or video> \
    --calib=<path to calibration file> \
    --viz # enable visualization
    --plot # save trajectory plot
    --save_ply # save point cloud as a .ply file
    --save_trajectory # save the predicted trajectory as .txt in TUM format
    --save_colmap # save point cloud + trajectory in the standard COLMAP text 
    --opts LOOP_CLOSURE True # To run DPVO with a SLAM backend (i.e., DPV-SLAM), add
    
# 采用iphone数据
conda activate dpv_slam

#重新下载数据和模型
python demo.py \
    --imagedir=movies/IMG_0495.MOV  \
    --calib=calib/iphone.txt\
    --viz \
    --plot \
    --save_trajectory \
    --save_colmap\
    --opts LOOP_CLOSURE True
  • 测试效果请见B站链接1, 2.感觉可视化效果有待改进吧

Debug及代码阅读记录

  • 提供了debug的脚本
  • 运行时可视化pose轨迹:B站链接1
  • DPVO中有5种特征(前面3中是CNN产生的,后面3中是RNN中要用的):
    • image对应的fmap(matching feature)
    • patch特征图gmap(matching feature)
    • patch对应的imap (context feature)
    • net 是RNN迭代更新的hidden state
    • corr是correlation feature,是由image对应的fmap(matching feature)patch特征图gmap(matching feature)执行相关操作中产生的