本文将带领读者本身动手去写一个RGB-D SLAM程序。html
由于我相信只有经过本身写程序,才能真正懂得slam的原理。算法
小萝卜:为何要写一个SLAM程序,而不采用现有的代码呢?编程
- 师兄:为了更深的理解。ubuntu
另外一方面,本身写程序,不表明要用C++实现矩阵的线性代数。基本的库咱们仍是会用的。函数
咱们要用的库:OpenCV, PCL, g2o. 工具
还等什么?赶忙动手吧!post
1. 必备软件的安装: OpenCV学习
参考:www.cnblogs.com/zb-ml/p/8883055.html开发工具
2.PCL
PCL就是Point Cloud Library啦,处理点云的必备工具。
小萝卜:师兄!为何要处理点云?
师兄:啊……忘了说了,这篇文档是讲RGB-D SLAM的呀,深度相机采出来的原本就是点云数据啦。
小萝卜:这么重要的事情为何你不放到开头去讲啊!
师兄:我忘了……
无论如何,PCL官网(http://pointclouds.org)上已经给出了ubuntu的安装方法。由于不少开发工具在ubuntu上装起来最方便,也比较适合小萝卜这种新手,因此咱们才选用了ubuntu。
在Ubuntu 1404或更低版本,你须要经过私有源来安装PCL库
Step 1.
1 sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl 2 sudo apt-get update 3 sudo apt-get install libpcl-all
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/home/louis/slam做为代码根目录
bin 用来放编译好的可执行二进制文件。
src 用来放源代码。
lib 用来放编译好的库文件。
include 用来放头文件。
咱们要把目录结构告诉cmake。因此咱们在代码根目录下写一个CMakeLists.txt。cmake在生成代码时,会读这个文件,并按照它来编译你的代码。刚才咱们对opencv进行编译时,也采用了这个步骤。好,如今在代码根目录下新建一个CMakeLists.txt:
touch CMakeLists.txt
写入:
CMAKE_MINIMUM_REQUIRED( VERSION 2.8.12.2 ) #设定版本 PROJECT( slam ) #设定工程名,也就是代码根目录的名字 SET( CMAKE_CXX_COMPILER "g++") #设定编译器 #设定可执行二进制文件的目录 SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) #设定存放编译出来的库文件的目录 SET( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) #而且把该目录设为链接目录 LINK_DIRECTORIES( ${PROJECT_SOURCE_DIR}/lib) #设定头文件目录 INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/include) #增长子文件夹,也就是进入源代码文件夹继续构建 ADD_SUBDIRECTORY( ${PROJECT_SOURCE_DIR}/src)
注:二进制就是能够直接运行的程序啦,库文件,就是为这些二进制提供函数。有main函数的代码能够编译成二进制,其余的则编译成库文件。连接时,把库文件链到二进制上,就能够运行啦。