最近在做SLAM相关的工作,用思岚的A2激光雷达在turtlebot3上测试SLAM建图效果,感觉还是不错的。由于项目在方案上还没有确定选择哪种作为SLAM的最终方案,在我测试奥比中光ASTRA mini 3D摄像头,看看在构建地图上有什么优势。所以在查询资料中我看到了DSO,感觉DSO还是比较简单的,使用的稀疏直接法,虽然遇到过很多坑,但最终还是一一的解决了。DSO(Direct Sparse Odometry)是慕尼黑工业大学Engel于2016年发布在arXiv上的一种基于直接法,构建稀疏点云地图的视觉里程计。在VSLAM中还是独树一帜的吧,虽然相关资料比较少,但是进行一些简单测还是没问题的啦,废话不多说,开始进入正题。(本人使用的是zshell)

安装dso:

1.首先安装相关依赖包(如果你没有安装的话):

➜  ~  sudo apt-get install libsuitesparse-dev libeigen3-dev libboost-dev
➜  ~  sudo apt-get install libopencv-dev

2. 下载dso包:

➜  ~  mkdir ~/dso_pkg
➜  dso_pkg  git clone https://github.com/JakobEngel/dso.git

3 .根据DSO官方的要求是要配置Pangolin(用于3D可视化和GUI)和ziplib(用于读取图像为.zip的数据集):

安装zlibzp并编译dso
➜  ~  sudo apt-get install zlib1g-dev
➜  ~  cd ~/dso_pkg/dso/thirdparty
➜  thirdparty git:(master)  tar -zxvf libzip-1.1.1.tar.gz
➜  thirdparty git:(master)   cd libzip-1.1.1/
➜  libzip-1.1.1 git:(master)  ./configure
➜  libzip-1.1.1 git:(master)   make
➜  libzip-1.1.1 git:(master)  sudo make install
➜  libzip-1.1.1 git:(master)  sudo cp lib/zipconf.h /usr/local/include/zipconf.h
安装Pangolin
➜  ~  cd dso_pkg
➜  dso_pkg  git clone https://github.com/stevenlovegrove/Pangolin.git
➜  ~  cd Pangolin
➜  Pangolin git:(master)   mkdir build
➜  build git:(master)   cd build
➜  build git:(master)   cmake -DCPP11_NO_BOOST=1 ..
➜  build git:(master)   make -j

4.在TUM单目数据集上运行DSO

下载TUM单目数据集请到https://vision.in.tum.de/data/datasets/mono-dataset?redirect=1下载你所需要的zip包,我下载的是sequence_14,根据需要自行下载。下载好把zip包放到dso的bin目录下并解压,我的是

➜  bin git:(master) pwd
/home/zpq/dso_pkg/dso/build/bin
➜  bin git:(master) unzip sequence_14.zip 
在bin目录下运行启动数据集:
./dso_dataset files=./sequence_14/images.zip calib=./sequence_14/camera.txt gamma=./sequence_14/pcalib.txt vignette=./sequence_14/vignette.png preset=0 mode=0

运行成功啦....那我们接下来运行dso_ros把,这个有点坑,好吧,身为程序猿的我们不怕坑踩不过,就拍没有坑!来吧。

利用外接摄像头实时运行DSO

Engel同时发布了dso_ros,用ROS来实时获取图片,程序代码很简短,实际上它是作者提供的一个如何把DSO当做一个黑盒子来使用的样例。这里需要用到ros啦,没有装好ros系统的同学,可以先装好ros并搭建好一个工作空间,传送门https://blog.csdn.net/bflong/article/details/80936914,

第一个坑:原作者提供的源代码有两个分支,master分支对应rosbuild版,catkin分支对应catkin版。对于现代ROS版本,推荐使用catkin版本,安装使用更方便。但是作者的catkin分支存在代码缺陷,rosmake 找不到包,实际无法安装使用,这让是人百思不得其解,之后我就查了好多的资料,绝大数的都不适用,也许是我的版本配置的问题吧,最后我找到蓝鲸智能修改之后的dso_ros版本,终于是看到希望啦,真是谢谢大佬:https://blog.csdn.net/smilinglamb/article/details/80656872?utm_source=blogxgwz2

下载并编译
➜  ~ cd catkin_ws/src
➜  src git clone https://github.com/BlueWhaleRobot/dso_ros.git 
➜  ~ cd ..
➜  catkin_ws export DSO_PATH=/home/zpq/dso_pkg/dso
➜  catkin_ws catkin_make
安装编译usb_cam
➜  ~ cd ~/catkin_ws/src
➜  src git clone https://github.com/bosch-ros-pkg/usb_cam.git 
➜  catkin_ws cd ..
➜  catkin_ws catkin_make
➜  catkin_ws source ~/catkin_ws/devel/setup.bas

如果使用外接USB摄像头的话:修改launch中的usb_cam-test.launch的video0为video1就可以了

修改相机参数文件
➜  ~ gedit ~/catkin_ws/src/dso_ros/camera.txt
我的是(根据需求你们自行修改):
446.867338 446.958766 298.082779 234.334299 -0.324849 0.1205156     -0.000186 -0.000821
640 480
crop
640 480
运行dso_ros:
新开终端运行:roscore
再开一终端运行usb_cam:roslaunch usb_cam usb_cam-test.launch
再开一终端运行dso_live:rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/zpq/catkin_ws/src/dso_ros/camera.txt mode=1

第二个坑运行usb_cam时提示我的相机没有进行光度校准的,一般这个是不会影响我的dso_ros的运行,但是在后遇见的问题中我也不确定是否与这个问题有关,因此我查找了大量有关资料,终于找到一位大佬的博客解决的 传送门:https://blog.csdn.net/qq_25241325/article/details/82705003

第三个坑是我根据别人的运行启动dso_live的时候,我可以看我的rostopic ,导致我的imge view 设置错误,我的usb_cam的topic是/usb_cam  因此我的启动dso_live 的image参数是:rosrun dso_ros dso_live image:=/usb_cam/image_raw calib=/home/zpq/catkin_ws/src/dso_ros/camera.txt mode=1

好啦,整个DSO 的运行测试流程以及我所遇到的坑都在这里啦,希望可以帮助各位学习DSO !

初探DSO-SLAM并运行dso_ros相关推荐

  1. dso与Android,DSO 安装及运行 —— dso_ros + Android 手机摄像头

    转载请注明出处,谢谢 原创作者:Mingrui 原创链接:https://www.cnblogs.com/MingruiYu/p/12425855.html 本文要点: dso 配置安装 dso 离线 ...

  2. 视觉SLAM——ORB-SLAM3运行本地视频文件

    一.采用D435i摄像头采集一段视频video.mp4 二.准备好两个文件:myvideo.yaml和myvideo.cpp myvideo.yaml %YAML:1.0#-------------- ...

  3. f12控制台如何查看consul_Consul初探-从安装到运行

    前言 伟大领袖毛主席说过:实践是检验真理的唯一标准!经过上一篇的学习,我基本掌握了 Consul 的基本原理,接下来就是动手实践了:Consul 的部署方式分为两种,分别是二进制包和docker方式, ...

  4. 视觉SLAM——ORB-SLAM2运行tum数据集,kitti数据集,euroc数据集

    添加环境变量 echo "source ~/catkin_orb_slam2_ws/devel/setup.bash" >> ~/.bashrc source ~/.b ...

  5. 视觉SLAM——D435i运行ORB-SLAM3-mono(依赖ros版)

    一.下载和编译ORB_SLAM3 git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod +x build.s ...

  6. 视觉SLAM——D435i运行ORB-SLAM2-RGB-D(依赖ros版)

    我的.bashrc文件配置 我自己遇到的错误 配置相机内参 D435i.yaml %YAML:1.0#------------------------------------------------- ...

  7. 从零开始的三维激光雷达SLAM教程第一讲(搭建运行环境,并跑Kitti数据集)

    文章目录 引言 第一节:运行xx-LOAM与数据集 编译A-LOAM 安装ceres(最小二乘求解库) 安装pcl(最常见的点云处理库) 安装OPENCV catkin_make 制作Kitti数据集 ...

  8. 史上最全DSO学习资料

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 DSO(Direct Sparse Odometry)是一种视觉里程计方法.在SLAM领域,DSO属于 ...

  9. (转载) 漫谈 SLAM 技术(下)

    原文链接:https://cloud.tencent.com/developer/article/1005893?fromSource=gwzcw.700232.700232.700232 接< ...

最新文章

  1. Windows内核 基本汇编指令
  2. C++ Primer 第9章 顺序容器 第一次学习笔记
  3. 用pip安装tensorflow报错SyntaxError: invalid syntax
  4. IPSec逻辑体系架构
  5. matlab求借带参数的方程组
  6. Linux 命令之 pico -- 文本编辑器
  7. hdu-4417-Super Mario
  8. 2020 开春程序员面试必备!拿走不谢!
  9. .NetCore Session.Redis (转载)
  10. 玩Mega8 智能充电器-12. 终于实现-dV检测(转)
  11. MATLAB_R2018b安装教程
  12. 酒店计算机管理系统维护合同,酒店计算机管理系统维护合同协议书范本(4页)-原创力文档...
  13. 关于公司建设的一些思考
  14. 爬取斗鱼4300W热度的小姐姐是一种什么样的体验?
  15. 我这一辈子-老舍自传
  16. 文明与征服汉尼拔阵容技能推荐
  17. [转载] 支持支付宝付款的四大国外主机
  18. Linux(Ubuntu)下WiFi网卡(intel ax201)驱动与Nvidia显卡驱动冲突的解决办法
  19. 软件壳的概念和如何脱壳基础
  20. javaScript常用

热门文章

  1. bzoj2876 [Noi2012]骑行川藏 [二分+拉格朗日乘数法]
  2. 【蓝桥杯】python进制转换16进制转8进制。16进制转10进制。10进制转16进制。
  3. Django项目中浏览器显示127.0.0.1拒绝我们的连接请求
  4. 安卓系统源码编译系列(一)——下载安卓系统源码教程
  5. 报错ValueError: row index was 65536, not allowed by .xls format
  6. 微商卖茶叶如何通过微博引流?要先熟悉并利用好微博自身这个平台
  7. IE浏览器不能上网其他浏览器可以解决办法
  8. 郑豪8.6非农数据提前布局,黄金是延续跌势还是多头反击?美盘操作建议
  9. awk 字符串转时间戳
  10. 基于CAN总线的多路温度检测系统设计-毕设课设资料