< >
Home » 一起做RGB-D SLAM » 一起做RGB-D SLAM (1)-前言及准备

一起做RGB-D SLAM (1)-前言及准备

一起做RGB-D SLAM (1)-前言及准备

说明:

  • 介绍基本的C程序结构和编译方法

前言:

  • SLAM,即Simultaneous Localization and Mapping,中文译作同时定位与地图创建,是近几十年里机器人领域有重大发展的研究方向。
  • 作为自主机器人的核心技术,SLAM在机器人导航、控制、生产等方面都有着重要的研究意义。尤其在二十一世纪,以视觉传感器为中心的视觉SLAM技术,在理论和方法上都经历了明显的转变与突破,正逐步从实验室研究迈向成熟的市场应用。
  • 在国外研究如火如荼之际,它在国内的研究尚处于起步阶段。有关SLAM的中文资料、书籍更是难以一见。然而,随着机器人技术得到国家的重视,越来越多的青年研究者、学生正逐渐跨入这片领域。

目标:

  • 通过自己写程序,才能真正懂得slam的原理

预备知识与编程环境:

  • 编程环境:ubuntu 12.04。建议读者和我们使用一样或类似的环境。
  • 如果你(出于酷或者其他什么原因)就是要用Arch/Fedora/Mac,请你自己配环境。
  • 编程软件:OpenCV, PCL, g2o

OpenCV

  • OpenCV, 计算机视觉库

  • 目前(2015.6)较好的版本是2.4系列,因为3.0系列还不完善

  • 下载OpenCV源代码: http://opencv.org/downloads.html。

  • 安装依赖:

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
  • 把OpenCV解压到下载目录中,用cmake编译再安装.
mkdir build
cd build
cmake ..
make
sudo make install
  • 头文件在/usr/local/include/,里面有opencv和opencv2的头文件,基本只用opencv2。

  • 库文件默认就在/usr/local/lib/

  • cmake就是linux下的C++管理工具,简单的代码你用g++一条条敲,再多些可以用Makefile来管理,cmake就是自动生成makefile的工具,比makefile集成度更高一些。

  • 二进制安装OpenCV 2.4.9:

sudo apt-get install libopencv-dev 

PCL

  • PCL,Point Cloud Library,点云库
  • PCL官网(http://pointclouds.org)
  • 在Ubuntu 1404或更低版本,你需要通过私有源来安装PCL库:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
  • 在 Ubuntu 1604,PCL库已经存在于公共软件源中,直接安装即可:
sudo apt-get install libpcl-dev pcl-tools

编写测试程序:

  • 新slam的文件夹,里面再新建四个文件夹:

    • bin 用来放编译好的可执行二进制文件
    • src 用来放源代码
    • lib 用来放编译好的库文件
    • include 用来放头文件
  • slam的文件夹里,新建文件CMakeLists.txt,用于确定如何编译。

touch CMakeLists.txt
  • 图示:
    请输入图片描述

  • 编辑CMakeLists.txt文件,输入内容如下:

CMAKE_MINIMUM_REQUIRED( VERSION 2.8 ) #设定版本
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)

编写测试程序

  • 在src/目录下,新建main.cpp
touch main.cpp  
vim mian.cpp 
  • 内容如下:
#include <iostream>

int main(int argc, char**argv)
{
    std::cout<<"Hello SLAM!"<<std::endl;
    return 0;
}
  • 在src/目录下,新建一个CMakeLists.txt
touch CMakeLists.txt 
vim CMakeLists.txt
  • 内容如下:
ADD_EXECUTABLE( main main.cpp )
  • 在slam目录下,新建build, 在进入build目录,编译代码:
mkdir build
cd build
cmake ..
make
  • cmake就会把这个main.cpp编译成一个叫做main的二进制,放在在bin/目录下,
  • 如果你执行这个二进制,就会输出Hello SLAM的语句,如图:
    请输入图片描述

参考:

  • 《CMake实践》
  • 本教程的github代码库:https://github.com/gaoxiang12/rgbd-slam-tutorial-gx

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: 一起做rgb-d slam