rgbd slam v2_rgb数据格式

rgbd slam v2_rgb数据格式系统版本:Ubuntu16.04+ROS-Kinect1、安装运行首先rgbdslamv2是2014年开源出来的一个机遇RGBD相机构建点云地图的框架【1】,作者已经在github上开源出了代码【2】,并且给出了一个一键安装的脚本(install.sh)。但是我们会发现,我们直接运行这个install脚本会在~/Code目录下创建一个rgbdslam_catkin_ws工作空间,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

系统版本: Ubuntu16.04 + ROS-Kinect

1、安装运行

首先rgbdslamv2 是2014年开源出来的一个机遇RGBD相机构建点云地图的框架【1】,作者已经在github上开源出了代码【2】,并且给出了一个一键安装的脚本(install.sh)。但是我们会发现,我们直接运行这个install脚本会在~/Code目录下创建一个rgbdslam_catkin_ws 工作空间,然后我们按照传统的catkin_make命令进行编译会发现代码直接编译通过,,不会提示任何错误信息,但是在使用命令

roslaunch rgbdslam rgbdslam.launch

启动rgbdslam节点的时候会提示你 “required process[rgbdslam-2] has died” 这样的问题。在博客【3】中作者也给出了一个解决的方法,但是其中有些操作是不需要的,本质上来讲主要是作者使用的g2o和PCL版本的问题,我们只需要把ROS中自动安装的g2o版本卸载掉,然后安装作者提供的 g2o和PCL(1.8.0)版本即可。

1.安装依赖项

sudo apt-get install libsuitesparse-dev libeigen3-dev

2.删除之前安装的g2o (保证g2o完全删除)  

 sudo apt-get purge ros-kinetic-libg2o libqglviewer-dev 
 sudo rm -rf /usr/local/include/g2o
 sudo rm -rf /usr/local/lib/libg2o_*

3.下载作者使用的g2o:

    git clone https://github.com/felixendres/g2o.git
    mkdir build
    cd build
    cmake ..
    make
    sudo make install 

4.下载安装PCL1.8

   cd ~/Code/
   wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.0.tar.gz  

按照博客【3】的说明:修改PCL1.8 中的 cmakelist.txt,在其第146行加入并保存 “SET(CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -std=c++11”)”

随后开始编译安装点云库

   cd pcl-pcl-1.8.0
    mkdir build
    cd build
    cmake ..
    make VERBOSE=1
    sudo make install 

5. 根据博客【3】的说明,修改rgbdslam_v2包下的CMakeList.txt文件,

  • a. 将rgbdslam_v2包下的cmakelist.txt文件的第79行,find_package(PCL 1.7 REQUIRED COMPONENTS common io) 改为 find_package(PCL 1.8 REQUIRED COMPONENTS common io)
  • b.同时关闭使用GPU ,将rgbdslam_v2包下的cmakelist.txt文件的第7行,set(USE_SIFT_GPU  1 CACHE BOOL “build with support for siftgpu”) ,改为 set(USE_SIFT_GPU  0 CACHE BOOL “build with support for siftgpu”) 

安装了作者使用的g2o和PCL1.8版本的点云库以后,删除掉 rgbdslam_catkin_ws 目录下的 devel 目录和 build目录 重新编译这个ROS工作空间就可以正常运行rgbdslamv2 

roslaunch rgbdslam rgbdslam.launch

rgbd slam v2_rgb数据格式

随后我们修改包中的rgbdslam.launch文件,将算法接收的topic改为以下值。并启动rgbdslam节点

    <param name=”config/topic_image_mono”              value=”/camera/rgb/image_color”/> 
    <param name=”config/topic_image_depth”             value=”/camera/depth/image”/>

新开一个终端,播放TUM RGBD的数据集【5】中任意一个包就可以运行建图程序了

rosbag play rgbd_dataset_freiburg1_xyz.bag

 效果如下:

rgbd slam v2_rgb数据格式

我自己修改注释后的代码放在了这个地址【4】

 

2、算法流程解析

rgbdslam结合了QT界面,使得保存地图,轨迹和octomap的操作界面化了,因此我想深入挖掘以下其中的代码框架,从作者的论文【1】来看,rgbdslam的算法并不复杂,该算法主要分为4个部分:

  • 1、对每一帧RGB图像提取特征点、计算特征点描述子。作者使用的特征点包括SIFT特征点和ORB特征点,使用的特征点种类可以通过launch文件进行选择,同时该框架也支持使用gpu加速SIFT(做工程的同学可以尝试尝试)
  • 2、利用RANSAC和ICP算法计算两帧图像之间的相对旋转和平移(R,t),这是RGBD SLAM中的常用算法
  • 3、利用作者提出的EMM测量模型判断估计值是否可以接受(判断投影点的深度),这也是作者的核心贡献
  • 4、作者使用最小生成树模型进行回环检测(这与我们接触到的BOW词袋库模型有所不同),构建位姿图优化模型,最后利用g2o优化工具求解这个优化问题。

作者将前三个步骤作为前端,第四部分作为后端。作者在后端优化中只优化了相机的位姿,没有像ORB-SLAM那样同时优化3D点的位置和相机位姿,这可能是rgbdslam建图不准确的原因之一。因为深度相机在物体边缘处的深度值通常有很大的跳变,因此我们不能完全相信特征点的 值,尤其是边缘处的特征点的深度。 这个现象在高博的论文中也提到过,所以高翔博士使用了平面特征和边缘特征对特征进行了分类。

这里我们先简要的分析了算法的流程和功能模块,接下来我们将深入阅读作者的代码,分析代码的逻辑结构。

 

(未完待续)

参考资料:

【1】”3D Mapping with an RGB-D Camera”, F. Endres, J. Hess, J. Sturm, D. Cremers, W. Burgard, IEEE Transactions on Robotics, 2014.

【2】代码链接:https://github.com/felixendres/rgbdslam_v2

【3】 https://blog.csdn.net/zhuoyueljl/article/details/78536996?reload

【4】修改后的代码:https://gitee.com/cenruping/rgbdslam-v2

【5】TUM数据集 http://vision.in.tum.de/data/datasets/rgbd-dataset

【6】rgbdslam分析:https://www.cnblogs.com/voyagee/p/7027076.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193582.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • adb 安装应用程序「建议收藏」

    adb 安装应用程序「建议收藏」应用程序安装-将一个包推送到设备上并安装它。 adbinstalltest.apk APP安装-将多个APK推送到一个包的设备上并安装它们 adbinstall-multipletest.apktest2.apk 应用程序安装-将一个或多个包推送到设备上,并以原子方式安装它们。 adbinstall-multi-packagetest.apkdemo.apk 替换现有应用程序 重新安装现有的应用…

    2022年5月16日
  • 反转每对括号间的子串java_利用栈判断字符串括号是否匹配

    反转每对括号间的子串java_利用栈判断字符串括号是否匹配给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:”dcba”示例 2:输入:s = “(u(love)i)”输出:”iloveu”示例 3:输入:s = “(ed(et(oc))el)”输出:”leetcode”示例 4:输入:s = “a(bcdefghijkl(mno)p)q”输出:”apmnolkjihgf

    2022年8月9日
  • STM32F407 + LAN8720A + LWIP 实现TCP服务器

    STM32F407 + LAN8720A + LWIP 实现TCP服务器STM32F407+LAN8720A+LWIP实现TCP客户端环境说明:开发板:某宝买的,STM32F407IGSTM32CUBEMX5.6HALLibVersion1.25(一)配置时钟(二)配置调试串口(三)配置以太网ETH(1)基础配置顺序依次说明:LAN8720A使用的是RMII接口进行配置寄存器自动重连使能MAC地址LAN8720A的物理地址(类似IIC的从设备地址),可配置为0或者1,由LAN8720A的RXER/PHYAD0引脚控制

    2022年6月17日
  • A股30年历史的拐点和暗示(大盘篇)

    A股30年历史的拐点和暗示(大盘篇)转A股30年,历史的拐点和暗示(大盘篇)来源:主动型量化   作者:刘帅路————————————————————————————–拓展阅读:1.集合竞价选股2.七种量化选股模型…

    2022年6月23日
  • centos7.0 web服务器搭建「建议收藏」

    centos7.0 web服务器搭建「建议收藏」centos7.0web服务器搭建前言按照先易后难排序,在vmware虚拟机环境下模拟,统一防火墙为Firewall,统一在xshell下操作终端实现搭建.(强烈建议新手安装选择带gui服务器这样终端操作可以复制,分析文件,熟系操作之后可以最小安装(如果没有桌面,用xshell连接操作终端比较方便),我就是进过这样的坑)关于搭建分为三步,第一步配置网络(非虚拟机…

    2022年5月28日
  • IOS安全、逆向、反编译1-越狱知识讲解[通俗易懂]

    IOS安全、逆向、反编译1-越狱知识讲解[通俗易懂]之前开发了一个对安全性要求比较高的APP,所以对安全、逆向和反编译有了一些认识,最近有时间就想系统的把这些知识做一个整理。今天就开始把我的学习过程记录下来。iOS越狱环境搭建在学习iOS越狱之前,我们当然需要一台iOS设备,由于现在基本上都是64位系统为主,所以最好是使用ARM64架构的设备,因此首先我们的手机至少需要iPhone5S或者之后的iPhone设备,平板至少是iPadAir、…

    2022年5月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号