运行ORB-SLAM笔记(一)

1.下载代码   https://github.com/raulmur/ORB_SLAM/    (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文)

2.打开后如下

就好像是用一件新产品一样,我们首先要看一下说明书“README.md”,

README.md介绍了很多关于这个工程的东西,比如作者,发表的论文,研究的人员,代码的下载以及更新

那么我们首先从有用的信息开始操作:(备注:以下内容都是我的个人理解,都是别人的东西,我拿来学习而已)

3.解决依赖项

3.1 Boost   :用这个Boost库在SLAM运行过程中开辟不同的线程

3.2 ROS:使用ROS采集摄像头或者记录下来的视频(rosbag)的图像信息,进行可视化

我的电脑安装的是indigo版本的所以安装教程是:wiki.ros.org/indigo/Installation/Ubuntu

安装完成运行  roscore 出现如下界面说明安装成功,同时也就可以学习ROS的基本教程了

wiki.ros.org/ROS/Tutorials

3.3 OpenCV 使用OpenCV去处理图像特征,ORB-SLAM的OpenCV版本是OpenCV 2.4,下载和安装OpenCV

http://opencv.org/  或者任意百度一下都有好多教程。

3.4 g20(第三方库) 这里用的是修改后的G2O版本,那么原始代码在 https://github.com/RainerKuemmerle/g2o ,G2O即是通用图优化,g2o是一个算法集的C++实现,根据前人求解非线性最小二乘的理论,根据具体的问题,选用最合适的算法,

为了能够编译G2O,需要安装一些东东是:BLAS, LAPACK and Eigen3,直接命令:

sudo apt-get install libblas-dev
                          sudo apt-get install liblapack-dev
                          sudo apt-get install libeigen3-dev

3.5 DBow2(第三方库)DBow2是一种高效的回环检测算法,DBOW2算法的全称为Bags of binary words for fast place recognition in image sequence,使用的特征检测算法为Fast,描述子使用的是brief描述子,是一种离线的方法。使用了DBow2和DLib库的一些算法,进行位置识别和特征匹配,不需要为它添加其他依赖项(代码地址: https://github.com/dorian3d/DBoW2)

4.安装

4.1  确认已经安装了ROS以及他的依赖项 (boost, eigen3, opencv, blas, lapack).

添加所下在的ORB-SLAM的路径到环境变量下,比如我的ORB-SLAM的路径为:

所以需要打开配置ubuntu环境变量的~/.bashrc文件,在文件最底处添加如图所示的命令行:然后source ~/.bashrc.

4.2 build g2o 安照说明一步一步来

前往 /home/salm/Monocular/ORB_SLAM/Thirdparty/g2o ;

依次命令为:     cd  ~/Monocular/ORB_SLAM/Thirdparty/g2o

mkdir build
                              cd build
                              cmake .. -DCMAKE_BUILD_TYPE=Release
                              make

g2o编译成功。

4.3 Buid DB0W2  与编译g2o时相似命令如下

cd ~/Monocular/ORB_SLAM/Thirdparty/DBoW2

mkdir build
                              cd build
                              cmake .. -DROS_BUILD_TYPE=Release
                              make

4.4 Build ORB-SLAM,这里有一个提示**If you use ROS Indigo, remove the depency of opencv2 in the manifest.xml.**

(按照理解就是把manifest.xml中的opencv2注释就好了呗),如下图:

然后就按照步骤来执行,

更改之后就可以进入编译:

cd  ~/Monocular/ORB_SLAM

mkdir build
                                  cd build
                                  cmake .. -DROS_BUILD_TYPE=Release
                                  make

但是在执行到cmake .. -DROS_BUILD_TYPE=Release发现会有错误,

然后就开始百度搜索答案呗,我也是这样想的,就会看到此博客  http://blog.csdn.net/wishchin/article/details/50468950

就会提示说路径设置有问题,然后我就各种设置,每设置一次就编译一次,只记得用了好长时间,都没有成功,过了一段时间

想想  我应该把这三个都注释掉就有

<!--<depend package="opencv2"/>
            <depend package="image_transport"/>
            <depend package="cv_bridge"/> -->

如下图然后执行cmake .. -DROS_BUILD_TYPE=Release这样虽然生成了Makefile,但是在接下来的make肯定会出错的,因为我们把所有关于opencv的依赖项都给注释了

所以就导致编译出错了(但是这里可以我也没找到什么原因,为什么我按照说明书,却行不通,我怀疑是我的opencv没有安装好,或者路径设置不对,但是这些都不管了,我知道我已经安装了opencv)

(注释了三个依赖项然后make 的结果如下图)

可能也会出现其他错误,提示找不到opnecv的库函数,或者说找不cv_bridge等函数

所以我就按照网上找各种方案的就结合我就只是把manifest.xml文件注释了OPENCV2,进去到ORB_SALM文件下:

执行:

后面是我手动添加的opencv的链接库,如下图,

(也就是说在我的电脑上(ubuntu14.04 32位 ros_indigo)在camke 和make 都需要添加opencv 的链接库,编译成功了)

以下是我在整理问题是所遇到的有关的网页

askubuntu.com/questions/510606/error-adding-symbols-dso-missing-from-command-line

blog.csdn.net/dreamer_lhs/article/details/51297432

www.voidcn.com/blog/wishchin/article/p-4970975.html

blog.csdn.net/real_myth/article/details/51798557

blog.csdn.net/dourenyin/article/details/48055441

时间: 2024-10-02 11:36:17

运行ORB-SLAM笔记(一)的相关文章

M100 (2) 运行sifit slam

M100  运行slam 1 M100+X3摄像头+采集卡-电脑 1运行ROS roscore 2运行ROS_USB_cam发布图像话题 usb_cam siftsalm 3打开X3对应的SLAM 打开SLAM/slam_ws/src/sift_slam/launch/ X3.launch roslaunch sift_slam x3.launch 二 虚拟界面Airsim-电脑控制端 1 连接网线在同一个局域网  一台笔记本当控制端   一台服务器运行Airsim 服务器把图像数据经过局域网给

手把手搭建UBUNTU版ORB—SLAM

对于视觉SLAM来说,目前主流的开源框架使用较贫的莫过于ORB-SLAM 接下来就从零开始搭建开发环境,在UBUNTU上运行ORB-SLAM需要一些支持包: 1.git sudo apt-get install git 2.cmake sudo apt-get install cmake 3.Pangolin sudo apt-get install libglew-dev libpython2.7-dev git clone https://github.com/stevenlovegrove

Windows应用程序运行机制(笔记)

Windows应用程序:以windows作为平台运行的应用程序. API函数 API函数:windows提供了大量可以在应用程序中调用的,用C语言编写的函数. Windows API 函数的功能如下: 1.窗口管理函数:实现窗口的创建.移动和修改等功能. 2.图形设备函数:实现图形的绘制及操作功能,这类型函数的集合又叫做图形设备接口. 3.系统服务函数:实现与操作系统有关的一些功能. 窗口与句柄 在Windows应用程序中,窗口是通过窗口句柄(HWND)来标识的:要对某个窗口进行操作,就必须要得

dos命令登陆mysql显示“无法在电脑上运行”后续处理笔记

实训课老师用dos登mysql我跟着做结果 - -||这个鬼样子!wtf?我不宠幸他的一两个月里他经历了什么?哦闹脾气了. 然后百度,大部分(我搜到的)都是"系统错误5"然后"拒绝访问",那个是权限问题,具体的可以搜一下改改权限就ok(大概是酱紫),可我不是啊?? 于是我竟然琢磨出另一套通过dos进入mysql的方法(求大神轻喷...(((m -__-)m): 依次这样输入:d:--------->mysql -uroot -p------------->

LSD_SLAM编译运行

基本操作之甩锅先:--(你懂得) 编译环境:Ubuntu14.04 LTS(64位),ROS Indigo,OpenCV2.4.9 这次给出 64位 这个信息,有没有感到困惑?其实真正原因是,我之前编译总是失败以至于都怀疑是不是只有32位的才可以.实践证明,64也是可以哒,放心撒~~~ 同理也给出了OpenCV的版本,这是因为我在编译的时候遇到了ROS找不到Opencv的问题,其实,在安装ROS的时候由于安装的是 full 版所以 OpenCV 自然也是已经安装上了,但是安装路径我却没有查到.I

SQL 笔记 By 华仔

-------------------------------------读书笔记------------------------------- 笔记1-徐 最常用的几种备份方法 笔记2-徐 收缩数据库的大小的方法 笔记3-徐 设置数据库自动增长注意要点 笔记4-徐 模仿灾难发生时还原adventurework数据库 示例 stopat 笔记5-徐 检查日志文件不能被截断的原因 笔记6-徐 检测孤立用户并恢复孤立用户到新的服务器 解决数据库镜像孤立用户问题 笔记7-徐 SQLSERVER日志记录

iOS: 学习笔记, 用代码驱动自动布局实例

iOS自动布局是设置iOS界面的利器. 本实例展示了如何使用自动布局语言设置水平布局, 垂直布局 1. 创建空白iOS项目 2. 添加一个控制器类, 修改YYAppDelegate.m文件 #import "YYAppDelegate.h" #import "YYViewController.h" @implementation YYAppDelegate - (BOOL)application:(UIApplication *)application didFin

iOS: 学习笔记, 使用performSelectorOnMainThread及时刷新UIImageView

在iOS中, 界面刷新在主线程中进行, 这导致NSURLSession远程下载图片使用UIImageView直接设置Image并不能及时刷新界面. 下面的代码演示了如何使用 performSelectorOnMainThread: withObject:  waitUntilDone: 方法来及时刷新图片 1. 创建iOS空应用程序(Empty Application). 2. 加入一个控制器类. 在YYAppDelegate.m中修改 #import "MainViewController.h

iOS: 学习笔记, 用代码驱动自动布局实例(swift)

iOS自动布局是设置iOS界面的利器.本实例展示了如何使用自动布局语言设置水平布局, 垂直布局1. 创建空白iOS项目(swift)2. 添加一个控制器类, 修改YYAppDelegate.swift文件 @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFi

ubuntu下编译为知笔记

先把为知笔记官方的教程放在前面 一. 准备环境 Linux (Ubuntu) Qt 安装 5.7.0 for Linux 64-bit (715 MB) 或者更高版本 http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-linux-x64-5.7.0.run 下载下来的安装文件,更改权限为可执行,然后执行安装程序.不要用管理员权限安装,直接安装到home目录即可,例如~/Qt5.7.0 Git sudo apt-g