Ubuntu 18.04上跑通LSD SLAM
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相关推荐
- skype linux 安装,如何在Ubuntu 18.04上安装Skype
Skype是世界上最流行的通信应用程序之一,它使您可以拨打免费的在线音频和视频电话,以及可负担得起的拨打全球移动电话和固定电话的国际电话. Skype不是开源应用程序,也不包含在Ubuntu存储库中. ...
- Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试
Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...
- 服务器接收消息写日志,在Ubuntu 18.04上配置Rsyslog集中式日志服务器的方法
本文介绍在Ubuntu 18.04操作系统上配置Rsyslog集中式日志服务器的方法. 前言 登录任何Linux系统对于分析和排除与系统和应用程序相关的任何问题至关重要,借助Graylog等工具(参考 ...
- 在Ubuntu 18.04上安装和使用Tesseract 4
量子指南 (QUANTRIUM GUIDES) Today, the extraction of information from scanned documents such as letters, ...
- ubuntu memcached php,如何在 Ubuntu 18.04 上安装 Memcached
Memcached 是一个免费的开源高性能内存中键值数据存储. 它最常用于通过从数据库调用的结果缓存各种对象来加速应用程序. 在本教程中,我们将介绍在 Ubuntu 18.04 上安装和配置最新版 M ...
- linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
如果您需要配置一个FTP服务器快速启动运行,那么VSFTP的易用性是无与伦比的. 如果你想将应用程序迁移到最新版本Ubuntu Linux服务器中,并且需要快速启动并运行FTP服务器.如何操作?这实际 ...
- ubuntu19 安装git_在Ubuntu 18.04上安装Git
步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新: apt-get update -y apt-get upgrade -y 第2步.在Ubuntu 18.04上安装Git. 现在让我 ...
- ubuntu18.04安装python3_如何在 Ubuntu 18.04上安装 Python3.7
Python 是世界上最流行的编程语言之一,凭借其简单易学的语法,Python是初学者和经验丰富的开发人员的绝佳选择.随着近几年人工智能和大数据的火热,Python流行度更是进一步飙升,有冲顶编程语言 ...
- 如何在Ubuntu 18.04上安装Django
Django是一个免费的开源高级Python Web框架,旨在帮助开发人员构建安全,可扩展和可维护的Web应用程序. 根据您的需要,有不同的方法来安装Django.它可以使用pip在系统范围内安装或在 ...
- 如何在Ubuntu 18.04上创建多节点MySQL集群
翻译转载:https://www.digitalocean.com/community/tutorials/how-to-create-a-multi-node-mysql-cluster-on-ub ...
最新文章
- regexpal 正则表达式实时调试工具
- 学习笔记Kafka(五)—— Kafka 开发环境配置及Producer API
- SharePoint自动化系列——Add/Remove Record from items
- 【学习笔记】硬件设备选型
- java界面化_java怎么实现图形化界面
- 预编译对象解决SQL注入问题
- Eclipse构建Maven分包分模块项目并构建服务端
- C语言手写自定义三维数组
- Atitit 获取ip的http标头 目录 1.1. REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP	1 1.2. HTTP_CLIENT_IP 客户ip。握手ip	1 1.3
- 深圳465亿建11代生产线,TCL三星带头认购股权
- c语言数组用户注册登入管理系统_[内附完整源码和文档] 基于JAVA的干部档案管理系统...
- 职业规划报告!草草了事,看看得了
- Android实现查看预览PDF文件功能
- drupal html5,基于Drupal 7HTML5布局模板二次开发.doc
- 计算机的未来无可限量英文,(整理笔记)Day86【BBC】无人驾驶5:无人驾驶已是大势所趋 The trend of driverless cars is unstoppable...
- 【源码分析】Android触摸事件的分发拦截
- 通过数据分析找出Netflix最适合学习英语的电影和电视剧
- sql server 入门篇
- MMD初尝试1(骨骼系统)
- 趣发现 资源页面请求链接分析
热门文章
- java毕业设计——基于java+AngularJS+jsp的配件营销系统设计与实现(毕业论文+程序源码)——配件营销系统
- python中reduce是什么意思_Python----reduce原来是这样用的
- 基于python的智能家居系统_基于MicroPython的智能家居实验平台设计
- srsRAN源码分析----enb端协议栈是如何运作
- VIOS 磁盘映射简介
- optimizer.zero_grad()
- composer.lock(锁文件)到底要不要提交到项目的版本库中?
- 大黄,不懂 HTTP 行嘛?
- 山科OJ:Problem C: Lemon
- [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks