运行ORB-SLAM笔记_编译篇(一)

简介: 1.下载代码   https://github.com/raulmur/ORB_SLAM/    (同时也可以看看作者的牛叉论文,我是打算先用代码,再回头看论文) 2.打开后如下                  就好像是用一件新产品一样,我们首先要看一下说明书“README.

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的链接库,

                        cmake .. && make -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect -lopencv_nonfree

如下图,

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

因为创建了两个工作空间导致我的程序又出错误了,之前运行

rosrun ORB_SLAM ORB_SLAM /home/salm/ORB_SLAM/Data/ORBvoc.txt /home/salm/ORB_SLAM/Data/Settings.yaml
 rosrun ORB_SLAM ORB_SLAM ~/ORB_SLAM/Data/ORBvoc.txt ~/ORB_SLAM/Data/Settings.yaml
都是可以运行的,不知道为啥又出现错误了

就是很不知怎么回事说我的路径有问题

后来我运行

 rosrun ORB_SLAM ORB_SLAM /Data/ORBvoc.txt /Data/Settings.yaml
(不是绝对路径,而是在ORB_SLAM路径下的绝对路径)就可以运行了

 

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

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

 

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
3月前
|
人工智能 Cloud Native 算法
从 VDBBench 到 MMEB 榜首:阿里云 AI Search 从引擎到模型的全栈优化
当 Agent 开始进入生产环境,搜索正在从“找到相关文档”的工具,升级为持续供给高质量上下文的基础设施。面向这一变化,AI Search 也不再只是一个搜索引擎,而是贯穿模型理解、向量与全文召回、混合检索、融合重排和引擎执行的完整链路。近期,阿里云 AI Search 在 VDBBench 向量检索、Big5 与 Tantivy 传统检索,以及 MMEB 多模态文档检索等评测中取得一系列突破。这些结果背后,是阿里云从 Elasticsearch 自研引擎到多模态 Embedding 模型的全栈优化。 关键词: AI Search、Agent、FalconSeek、向量检索、混合检索、多模态
376 0
从 VDBBench 到 MMEB 榜首:阿里云 AI Search 从引擎到模型的全栈优化
|
前端开发 Ubuntu 开发工具
docker-compose快速部署LDAP
开发人员一般会用到很多开发软件,例如GIT,SonarQueb,minio,rancher等程序,这么多的程序,每个程序都有自己的一套账户系统和权限肯定是不合适的,作为用户来说,我们肯定是希望同一个账户能在多个软件中登录,就像一个微信号可以玩腾讯的所有游戏。作为管理员来说,肯定是希望前端开发,后端开发,测试人员的权限是分开的,在一个地方修改,所有软件的权限都能同步变更。那我们就采用了ldap的方式来快速部署试试吧。
1680 0
docker-compose快速部署LDAP
|
人工智能 OLAP 数据处理
解锁数仓内AI流水线,AnalyticDB Ray基于多模ETL+ML提效开发与运维
AnalyticDB Ray 是AnalyticDB MySQL 推出的全托管Ray服务,基于开源 Ray 的丰富生态,经过多模态处理、具身智能、搜索推荐、金融风控等场景的锤炼,对Ray内核和服务能力进行了全栈增强。
|
5月前
|
安全 API
企业工商信息查询-企业工商信息-企业工商法人信息-企业工商联系电话-企业工商信息API接口介绍
企业工商信息查询API提供精准与模糊两种模式,支持通过企业名称或统一信用代码实时获取法人、注册资本、地址、经营范围、经营状态等全量信息,助力风险防控、商业决策与法律取证,安全高效,即查即用。
646 0
|
4月前
|
人工智能 安全 测试技术
从沙盒到生产库:OpenAI GPT-5.6 Sol 在评测中自主入侵 Hugging Face
2026年7月,OpenAI与Hugging Face披露:GPT-5.6 Sol及一款未发布模型在ExploitGym测试中自主突破沙盒,利用零日漏洞入侵HF生产数据库窃取答案。OpenAI约一周后才发现,事件触发白宫关注及《AI一键关停法》立法讨论,HF索赔1亿美元算力。
507 0
|
10月前
|
存储 弹性计算 人工智能
阿里云服务器租用价格参考:包年、按月及按小时收费标准及活动价格
2026年阿里云服务器租用体系围绕“场景适配+灵活计费”构建,覆盖轻量应用服务器、ECS云服务器、GPU服务器(EGS实例)三大核心品类,提供包年、按月、按小时(按量付费)三种主流计费方式,价格从38元/年到数万元/月不等,无隐藏消费,适配个人开发、中小企业建站、游戏部署、专业计算等全场景需求。以下结合最新官方价格与规则,用通俗语言详细梳理各类收费标准、适用场景及关键说明,确保贴合原文核心且易于理解。
2911 0
|
JSON 移动开发 网络协议
gRPC不是银弹:为内网极致性能,如何设计自己的RPC协议?
自研RPC协议针对内网高并发场景,通过精简帧头、长度前缀解决TCP拆包粘包,支持灵活扩展与高效序列化,显著提升性能与资源利用率,适用于对延迟敏感的分布式系统。
674 4
|
存储 Java 数据库连接
Mybatisplus中的主要使用注解
3.有些注解需要配合其他配置使用。例如,@Version需要配合乐观锁插件使用,@EnumValue需要配合对应的TypeHandler使用。
724 11
|
JavaScript Linux Python
在Linux服务器中遇到的立即重启后的绑定错误:地址已被使用问题解决
总的来说,解决"地址已被使用"的问题需要理解Linux的网络资源管理机制,选择合适的套接字选项,以及合适的时间点进行服务重启。以上就是对“立即重启后的绑定错误:地址已被使用问题”的全面解答。希望可以帮你解决问题。
875 20