之前跑过高博的一起做RGB-D SLAM,趁着放假,也稍微整理一下,顺便理一下思路, 由于本人是在Ubuntu上跑的代码,所以用的工具和IDE是CMake+QtCreator,先稍微介绍下如果用QtCreate建立CMake工程,正确来说应该是如何导入CMake工程,然后再进行RGB-D SLAM的搭建。
1.通过QtCreator导入CMake工程
在任意一个Directory中创建一个package,分别在package中创建如下空间:
如上图所示:在C_lib package中包含CMakeLists.txt 和 src 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⎤⎦⎥=K⎡⎣⎢⎢XZYZ1⎤⎦⎥⎥ [ u v 1 ] = K [ X Z Y Z 1 ]
其中 K 为相机内参, k=⎡⎣⎢