RGB-D SLAM——匹配篇(一)

本文介绍了在Ubuntu上使用CMake+QtCreator搭建RGB-D SLAM环境的过程,包括通过QtCreator导入CMake工程,相机模型及公式推导,从图片生成点云,以及图像配准来估计两帧之间的位姿。重点讲解了图像配准的最小二乘优化和ICP算法的应用,以及关键点检测和描述子计算的方法。
摘要由CSDN通过智能技术生成

之前跑过高博的一起做RGB-D SLAM,趁着放假,也稍微整理一下,顺便理一下思路, 由于本人是在Ubuntu上跑的代码,所以用的工具和IDE是CMake+QtCreator,先稍微介绍下如果用QtCreate建立CMake工程,正确来说应该是如何导入CMake工程,然后再进行RGB-D SLAM的搭建。

1.通过QtCreator导入CMake工程

在任意一个Directory中创建一个package,分别在package中创建如下空间:

这里写图片描述

如上图所示:在C_lib package中包含CMakeLists.txtsrc package (该Directory必须包含这俩个),然后进去 src 后,在该Directory再创建一个CMakeLists.txt 和任意一个 hello.cpp 文件,必须文档到这里结束。

其中,俩个CMakeList.txt 需要包含的内容有:

C_lib 目录下的CMakeLists

CMAKE_MINIMUM_REQUIRED( VERSION 3.5.1 )   #这里我用的CMake是3.5.1的
PROJECT( C_lib)    #工程名字

#SET(CMAKE_CXX_COMPILER "g++")    #设定编译器
SET( CMAKE_BUILD_TYPE Debug  )    #编译类型
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #将执行二进制文件输出到bin文件夹中
SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #生成的库输出到lib文件夹中

INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include ) #头文件放在include文件夹中
ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src )   #增加子文件,也就是进入源码文件夹中继续构建

src 目录下的CMakeLists:

CMAKE_MINIMUM_REQUIRED( VERSION 3.5.1 )  版本号
PROJECT( C_lib ) 工程名

set(CMAKE_CXX_FLAGS "-std=c++11 ")
add_executable(hello hello.cpp)  #生成可执行文件

src目录下的hello.cpp :

#include<iostream>
int main()
{
  std::cout<<"hello"<<std::endl;
  return 0;
}

至此,一个最简单的工程创建完毕,紧接着,打开QTCreator,file->open file or project ,然后选中 C_lib 下的CMakelists,至此则导入成功,然后再后面需要什么再往里加就行了。

2.相机模型及其公式推导

这里写图片描述

一个空间点 [X,Y,Z] [ X , Y , Z ] 和它在图像中的像坐标 [u,v,d] [ u , v , d ] ,有以下公式:

uv1=KXZYZ1 [ u v 1 ] = K [ X Z Y Z 1 ]

其中 K 为相机内参, k=

RGB-D SLAM是一种同时定位与地图构建(Simultaneous Localization and Mapping)的技术,它利用RGB-D图像来实现对环境的感知和建模。RGB-D图像由RGB图像和深度图像组成,其中RGB图像提供了颜色信息,深度图像则提供了物体距离传感器的实际距离信息。通过将RGB图像和深度图像进行配准,可以实现像素级别的对应关系。RGB-D SLAM可以通过对连续的RGB-D图像进行处理,实时地估计相机的运动轨迹,并同时构建环境的三维地图。 在RGB-D SLAM中,有多种算法和系统可供选择。例如,RGBDSLAM2是一个非常全面优秀的系统,它将SLAM领域的图像特征、优化、闭环检测、点云等技术融为一体,适合初学者使用并可以进行二次开发。然而,RGBDSLAM2的实时性较差,相机必须以较慢的速度运动,并且使用点云来表示三维地图会消耗较多的内存。此外,还有其他的RGB-D SLAM算法和系统可供选择,具体选择哪种算法和系统取决于具体的应用需求和硬件条件。 引用\[1\]中提到了RGB-D图像的组成和配准过程,引用\[2\]中提到了RGB双目相机的特点和限制,引用\[3\]中提到了RGBDSLAM2系统的特点和缺点。这些引用内容提供了关于RGB-D SLAM的基本概念和相关技术的信息。 #### 引用[.reference_title] - *1* [SLAM(二)——RGB-D的含义](https://blog.csdn.net/u013401766/article/details/78671939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RGBD-SLAM总结](https://blog.csdn.net/YOULANSHENGMENG/article/details/124141028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [RGB-D SLAM 相关总结](https://blog.csdn.net/qq_38167930/article/details/118879187)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值