Ubuntu 18.04上跑通LSD SLAM

  • 简介
  • 准备工作
    • 1. ROS-melodic安装
    • 2. OpenCV(>3.0)安装
    • 3. Eigen 3.2.5 安装
    • 4. 下载依赖
  • 编译源码
  • 测试
    • Test1
    • Test2

简介

LSD SLAM是经典的使用直接法的单目SLAM框架。我打算学习一下它的源码,因此想把代码弄下来跑一下效果,但这过程也折腾了不少时间,需要记录一下。而且网上很少在ubuntu 18.04上跑的,源代码是在12.04 和 14.04上,不少大佬改成了16.04,我参考了不少博客,终于在我的18.04的环境上跑通了。

  • 源码链接:https://github.com/tum-vision/lsd_slam
  • 参考链接(据说可以在16.04上直接跑通,但没亲自试过):https://github.com/YaoZhiwen/lsd_slam_catkin_16.04
  • 我的链接:https://github.com/Rick0514/Ubuntu18.04-LSD-SLAM

准备工作

1. ROS-melodic安装

可以参考我的记录link。

2. OpenCV(>3.0)安装

这里说两种情况:第一种是电脑本来就没有opencv,那么去官网下载源码,通过cmake安装(重点,下面说),网上很多教程。第二种是,你已经安装好了opencv,这个时候开始说要注意的重点。LSD SLAM需要的opencv是使用GTK而不是用QT的,所以一开始cmake的时候,需要把GTK打开而关闭QT。所以如果是第一次安装opencv,需要注意cmake的配置,如果已经安装了的话,需要重新配置cmake重新编译opencv。过程如下:

# 假如你的opencv源码在 ~/opencv/
$ cd ~/opencv/build
$ sudo make uninstall   # 卸载opencv
$ make clean
$ cmake-gui     #打开gui版的cmake

# 编译并重新安装
make -j4
sudo make install

3. Eigen 3.2.5 安装

同样分两种情况,如果没有安装过eigen,那么直接安装Eigen 3.2.5,一定按照这个版本,太高会有问题。而如果已经安装过,但是版本不同,建议是可以先跳过看看能不能把代码跑起来,如果在运行时报内存错误,那么把原来的卸载了,安装这个版本。

  • 查看eigen版本的方法是:
# 看前面几行有版本信息
$ sudo cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h
  • 卸载eigen的办法是:
# 找到所有包含eigen的路径
$ sudo updatedb
$ locate eigen3
$ sudo rm <上面locate打印出来的路径>
  • 重新安装:
# 把安装包解压并改名为eigen3
$ sudo mv eigen3 /usr/include/

4. 下载依赖

$ sudo apt-get install ros-melodic-libg2o ros-melodic-cv-bridge liblapack-dev libblas-dev freeglut3-dev libsuitesparse-dev libx11-dev
$ sudo apt install libqglviewer-dev-qt4
$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libQGLViewer-qt4.so libQGLViewer.so

编译源码

$ mkdir -p ~/ros_lsd/src
$ cd ~/ros_lsd/src
$ git clone https://github.com/Rick0514/Ubuntu18.04-LSD-SLAM.git lsd_slam
$ cd ../
$ catkin_make

测试

Test1

下载LSD_room.bag并解压。

# 打开终端1
$ roscore# 打开终端2
$ source ./devel/setup.bash
$ rosrun lsd_slam_viewer viewer# 打开终端3
$ source ./devel/setup.bash
$ rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info# 打开终端4
$ rosbag play ~/LSD_room.bag

Test2

下载图片数据集fr1/xyz并解压。

# 假设数据集放在 ~/dataset/
# 数据集解压后改名为fr1 --> ~/dataset/fr1
$ cd ~/dataset/fr1
$ touch calib.cfg   # 添加相机参数文件
$ gedit calib.cfg

复制以下参数:

0.820315 1.09375 0.49921875 0.498958333 0
640 480
none
640 480

# 打开终端1
$ roscore# 打开终端2
$ source ./devel/setup.bash
$ rosrun lsd_slam_viewer viewer# 打开终端3
$ source ./devel/setup.bash
$ rosrun lsd_slam_core dataset _files:=~/dataset/fr1/rgb _hz:=30 _calib:=~/dataset/fr1/calib.cfg

程序执行可能会报如下错误:

OpenCV Error: Assertion failed (tlsSlots.size() > slotIdx) in releaseSlot, file /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/system.cpp, line 1092 terminate called after throwing an instance of ‘cv::Exception’ what(): /build/opencv-L2vuMj/opencv-3.2.0+dfsg/modules/core/src/system.cpp:1092: error: (-215) tlsSlots.size() > slotIdx in function releaseSlot

如果OpenCV版本不是3.2.0的话,就会报错。因为ros-melodic默认安装了这个版本的opencv,两个版本的冲突会造成错误,而错误是由库cv_bridge引起的。修改方法参考一下两个链接:

  • https://www.cnblogs.com/pine-apple/p/14545448.html
  • https://blog.csdn.net/bigdog_1027/article/details/79092263

Ubuntu 18.04上跑通LSD SLAM相关推荐

  1. skype linux 安装,如何在Ubuntu 18.04上安装Skype

    Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...

  2. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试

    Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...

  3. 服务器接收消息写日志,在Ubuntu 18.04上配置Rsyslog集中式日志服务器的方法

    本文介绍在Ubuntu 18.04操作系统上配置Rsyslog集中式日志服务器的方法. 前言 登录任何Linux系统对于分析和排除与系统和应用程序相关的任何问题至关重要,借助Graylog等工具(参考 ...

  4. 在Ubuntu 18.04上安装和使用Tesseract 4

    量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...

  5. ubuntu memcached php,如何在 Ubuntu 18.04 上安装 Memcached

    Memcached 是一个免费的开源高性能内存中键值数据存储. 它最常用于通过从数据库调用的结果缓存各种对象来加速应用程序. 在本教程中,我们将介绍在 Ubuntu 18.04 上安装和配置最新版 M ...

  6. linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器

    如果您需要配置一个FTP服务器快速启动运行,那么VSFTP的易用性是无与伦比的. 如果你想将应用程序迁移到最新版本Ubuntu Linux服务器中,并且需要快速启动并运行FTP服务器.如何操作?这实际 ...

  7. ubuntu19 安装git_在Ubuntu 18.04上安装Git

    步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新: apt-get update -y apt-get upgrade -y 第2步.在Ubuntu 18.04上安装Git. 现在让我 ...

  8. ubuntu18.04安装python3_如何在 Ubuntu 18.04上安装 Python3.7

    Python 是世界上最流行的编程语言之一,凭借其简单易学的语法,Python是初学者和经验丰富的开发人员的绝佳选择.随着近几年人工智能和大数据的火热,Python流行度更是进一步飙升,有冲顶编程语言 ...

  9. 如何在Ubuntu 18.04上安装Django

    Django是一个免费的开源高级Python Web框架,旨在帮助开发人员构建安全,可扩展和可维护的Web应用程序. 根据您的需要,有不同的方法来安装Django.它可以使用pip在系统范围内安装或在 ...

  10. 如何在Ubuntu 18.04上创建多节点MySQL集群

    翻译转载:https://www.digitalocean.com/community/tutorials/how-to-create-a-multi-node-mysql-cluster-on-ub ...

最新文章

  1. regexpal 正则表达式实时调试工具
  2. 学习笔记Kafka(五)—— Kafka 开发环境配置及Producer API
  3. SharePoint自动化系列——Add/Remove Record from items
  4. 【学习笔记】硬件设备选型
  5. java界面化_java怎么实现图形化界面
  6. 预编译对象解决SQL注入问题
  7. Eclipse构建Maven分包分模块项目并构建服务端
  8. C语言手写自定义三维数组
  9. Atitit 获取ip的http标头 目录 1.1. REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP 1 1.2.  HTTP_CLIENT_IP 客户ip。握手ip 1 1.3
  10. 深圳465亿建11代生产线,TCL三星带头认购股权
  11. c语言数组用户注册登入管理系统_[内附完整源码和文档] 基于JAVA的干部档案管理系统...
  12. 职业规划报告!草草了事,看看得了
  13. Android实现查看预览PDF文件功能
  14. drupal html5,基于Drupal 7HTML5布局模板二次开发.doc
  15. 计算机的未来无可限量英文,(整理笔记)Day86【BBC】无人驾驶5:无人驾驶已是大势所趋 The trend of driverless cars is unstoppable...
  16. 【源码分析】Android触摸事件的分发拦截
  17. 通过数据分析找出Netflix最适合学习英语的电影和电视剧
  18. sql server 入门篇
  19. MMD初尝试1(骨骼系统)
  20. 趣发现 资源页面请求链接分析

热门文章

  1. java毕业设计——基于java+AngularJS+jsp的配件营销系统设计与实现(毕业论文+程序源码)——配件营销系统
  2. python中reduce是什么意思_Python----reduce原来是这样用的
  3. 基于python的智能家居系统_基于MicroPython的智能家居实验平台设计
  4. srsRAN源码分析----enb端协议栈是如何运作
  5. VIOS 磁盘映射简介
  6. optimizer.zero_grad()
  7. composer.lock(锁文件)到底要不要提交到项目的版本库中?
  8. 大黄,不懂 HTTP 行嘛?
  9. 山科OJ:Problem C: Lemon
  10. [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks