第1讲 前沿

  本文将带领读者自己动手去写一个RGB-D SLAM程序。

  因为我相信只有通过自己写程序,才能真正懂得slam的原理。

  小萝卜:为什么要写一个SLAM程序,而不采用现有的代码呢?

  - 师兄:为了更深的理解。

  1. 一个完整的程序含有大量的算法与GUI的代码,你读一遍需要多久?弄清楚原理要多久?
  2. 别人工具都做好了,代码都写完了,参数也调好了,你拿过来运行。那顶多给别人做一下评测。
  3. 你迟早要自己写代码。

  另一方面,自己写程序,不代表要用C++实现矩阵的线性代数。基本的库我们还是会用的。

  我们要用的库:OpenCV, PCL, g2o. 

  还等什么?赶紧动手吧!

预备知识与编程环境

1. 必备软件的安装: OpenCV

    参考:www.cnblogs.com/zb-ml/p/8883055.html

    OpenCV学习笔记:Mat类详解(二)

    OpenCV学习笔记:Mat类详解(一)

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

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

HELLO SLAM!

  /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函数的代码可以编译成二进制其他的则编译成库文件链接时,把库文件链到二进制上,就可以运行啦。

 

 

posted @ 2018-04-19 17:05  月夜_1  阅读(209)  评论(0编辑  收藏  举报