编译安装高翔的ORBSLAM2_with_pointcloud_map,获取点云地图

2023-12-17 21:50

本文主要是介绍编译安装高翔的ORBSLAM2_with_pointcloud_map,获取点云地图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:众所周知,开源版本的orbslam2没有地图的生成和保存模块。

这里高翔博士提供了一个自己加的一个点云模块在上面,供大家学习。


一、下载高翔的修改后的代码

git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git

数据集下载位置

https://vision.in.tum.de/data/datasets/rgbd-dataset/download#freiburg1_desk

补充:

orbslam2泡泡注释版:http://git.oschina.net/paopaoslam/ORB-SLAM2

有价值的参考资料:https://www.cnblogs.com/polobymulberry/p/6257616.html

http://www.liuxiao.org/2016/07/ubuntu-orb-slam2-%E5%9C%A8-ros-%E4%B8%8A%E7%BC%96%E8%AF%91%E8%B0%83%E8%AF%95/



二、分别编译安装

将其中的压缩包解压,用压缩包中的ORBSLAM2_with_pointcloud_map代替原来的根目录下的ORBSLAM2_with_pointcloud_map。

2.1 编译g2o_with_orbslam2

cd g2o_with_orbslam2

mkdir build

cd build

cmake ..

make

sudo make install

2.2 编译ORB_SLAM2_modified

cd  ORB_SLAM2_modified

mkdir build

cd build

make

这里我出错了,没有用到刚编译的Thirdparty中的g2o,反而用的是ROS下的g2o,先卸载掉ROS下的g2o,在需要的时候装回去。

卸载ROS下的g2o:

sudo apt-get remove ros-indigo-libg2o   

注意:这里先卸载掉,然后再在lsd_slam报错的时候再装上,命令为: sudo apt-get install ros-indigo-libg2o

[ros下的g2o是libg2o:http://wiki.ros.org/libg2o] 

然后继续编译没有出现该问题

但是又出现问题了:

 No rule to make target `/opt/ros/indigo/lib/librealsense.so', needed by `../lib/libORB_SLAM2.so'.  Stop.

表明需要librealsense下载安装这个包。查阅发现ROS下有这个包http://wiki.ros.org/librealsense,安装之:

sudo apt-get install ros-indigo-librealsense

安装完成后,重新make

make[2]: *** No rule to make target `/usr/lib/libOpenNI2.so', needed by `../lib/libORB_SLAM2.so'.  Stop.

安装OpenNI

方法一:

OpenNI2安装一些依赖软件:

$ sudo apt-get install git g++ make python libusb-1.0-0-dev libudev-dev pkg-config

Clone OpenNI2:

下载openni:

https://github.com/occipital/OpenNI2/tree/2.2-beta2

或用git:

$ git clone https://github.com/occipital/OpenNI2

$ git checkout -b 2.2-beta2

$ cd OpenNI2

//未完待续

//参考博客https://blog.csdn.net/billbliss/article/details/56489674

方法二、

openni2_camera

http://wiki.ros.org/openni2_camera

sudo apt-get inatsll ros-indigo-openni2-*

【一条ROS指令能解决的事情,为什么要那么复杂,哈哈】

再次make(不需要先make clean)

搞定

至此,高翔修改过的orbslam2-带点云地图版本就配置完成了。

******************************我是萌萌哒的分割线*********************

//TODO

//用单目或者双目或者rgbd来做做实验,看下效果怎么样,生成的点云地图再转换成为八叉树地图

//运行方法

./Example/RGB-D/rgbd_tum      Vocabulary/ORBvoc.bin      path_to_settings     path_to_sequence    path_to_association

such as

./Example/RGB-D/rgbd_tum ../../Vocabulary/ORBvoc.txt TUM2.yaml ../../rgbd-data/ ../../rgbd-data/associations.txt

我的运行指令如下:      

       ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.bin Examples/RGB-D/TUM1.yaml ~/all_SLAM_ws/data/rgbd_dataset_freiburg1_xyz Examples/RGB-D/associations/fr1_xyz.txt
       运行RGB-D实例时需要RGBD(depth)图像和RGB图像,所以需要把每一张RGB图像与之对应的RGBD图像建立关联(在Examples/RGB-D/associations/目录下有一部分关联文件,可以直接使用),关联python文件associate.py(根据timestamp进行关联)。

但是报了一个错,如上面所示。无法打开ORBvoc.bin文件【这个ORBvoc.bin文件是我从原始的ORB_SLAM2中下载得到的】

是要我生成自己的ORBvoc.bin吗?不应该呀,应该都是一样的。

发现,这里其实加载的不是bin文件,而是txt文件。


我去。。。说好的加入对ORBvoc.bin文件的支持呢?

那么命令改为:

  ./Examples/RGB-D/rgbd_tum Vocabulary/ORBvoc.txt  Examples/RGB-D/TUM1.yaml ~/all_SLAM_ws/data/rgbd_dataset_freiburg1_xyz Examples/RGB-D/associations/fr1_xyz.txt

这里我们可以根据实际相机的标定结果,修改参数


正在加载词袋和相机参数哦!等会我们就看到结果了


注意:EXAMPLE下的RGB目录中有将RGB图像与深度depth关联的associate.py文件

这里的修改版https://www.cnblogs.com/polobymulberry/p/6257616.html中的泡泡注释是https://gitee.com/paopaoslam/ORB-SLAM2/blob/master是加载ORBvoc.bin文件

bug:运行一会卡机??变成灰色了WTF。。。



卡住了就ctrl+c吧。。。多运行几次发现也还ok,在回放数据包的时候注意不要操作电脑看就好了,想想有道理。。毕竟我电脑配置渣渣。。


三、PCL地图保存

高博士通过加了一个pcl_viewer和点云拼接的线程,来实现实时显示拼接的点云图像。

那我们的点云地图保存在哪里了呢?后面我还要用点云地图来生成octomap三维栅格地图呢!!

//看看源代码中保存路径。


在include文件夹中的system.h里,我们来一睹真容。。。。


//具体代码怎么改呢?

//orbslam2生成的地图又是什么样子的呢?

看了下吴博注释版本,也没写啊,这是要我自己写的节奏?


//TODO

//编写SaveMap和LoadMap代码(有哪位大佬写好的吗再见

//那就只能把octomap生成这部分代码写一个线程加进来吗?这个好难

//还是先做做离线的点云地图转换成为octomap三维地图吧,心好累。


******我是萌萌哒的分割线***********2018.4.12***********


四、编译ROS下的接口

有问题,不要往下做!!!


找不到pcl相关头文件,搜索发现我是安装了PCL的,其实与ORB代码中的引用路径有关系,查看


/home/nvidia/catkin_ws/src/ORBSLAM2_with_pointcloud_map/ORB_SLAM2_modified/Examples/ROS/ORB_SLAM2/../../../include/pointcloudmapping.h:25:35: fatal error: pcl/common/transforms.h: No such file or directory
 #include <pcl/common/transforms.h>

说在pointcloudmapping.h中引用的PCL相关头文件找不到,他这个是在当前目录下找相应头文件,可以把整个PCL相关头文件复制过来

sudo cp -r /usr/include/pcl-1.7/pcl/* /home/nvidia/catkin_ws/src/ORBSLAM2_with_pointcloud_map/ORB_SLAM2_modified/include/pcl

然后make

这个问题解决,但又遇到一个问题

No rule to make target `../../../../Thirdparty/g2o/lib/libg2o.so'

缺少libg2o.so库文件,说明g2o未正确编译安装

发现Thiedparty中确实没有相关g2o文件。从高翔的github上复制过来用

将ORB_SLAM2_modified中的编译好的libg2o.so拷贝出来。

//TOSO

//给我的感觉好像是ROS下的接口本身就没处理好?

//有待解决,还是这个错误

这篇关于编译安装高翔的ORBSLAM2_with_pointcloud_map,获取点云地图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/505986

相关文章

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是