半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 2 linux CMake、Kdevelop

本系列文章由 youngpan1101 出品,转载请注明出处。
文章链接: http://blog.csdn.net/youngpan1101/article/details/71085778
作者:宋洋鹏(youngpan1101)
邮箱: [email protected]



该讲详细资料下载链接 【Baidu Yun】【Video】【Code】

若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】
若您觉得本博文对您有帮助,请支持高博的新书《视觉SLAM十四讲》,【点击购买】


实践:编程基础

  1. 安装 linux 系统

    • 对于初学者,建议使用 Ubuntu 14.04
      • Ubuntu 14.04.1 for ROS(indigo) by ExBot iso 发行版
        • 特别注意:安装后不能上网的,运行以下命令:
          $ sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
        • 不能挂载U盘的,试试以下命令:
          $ sudo apt-get install exfat-utils
        • 打不开优盘。出现:Unable to open a folder for KINGSTON,No application is registered as handling this file.You do not have the permissions necessary to view the contents of “KINGSTON”.
          $ sudo chmod 655 /media/exbot
      • Ubuntu 14.04 不同版本的下载
    • 双系统 Win7 + Ubuntu(推荐,方便使用外接实际的传感器,比如双目、Kinect等)
      • Ton8PE_V5.0 百度云下载,用于制作启动盘的软件
      • Win7 + Ubuntu 14.04 双系统安装教程
  2. CMake 构建工程

    • CMake 是一个跨平台的软件,在很多平台可以使用。一般在 windows 下,我们会直接使用 VS 生成项目,在 linux 下面,我们也可以使用 QT Creater 生成项目,但是两个不同平台上面的项目不能相互移植。这就有了 CMake 的用武之地,我们可以先编写一个 CMakeLists.txt 文件,将需要的 .h 和 .cpp 文件包含进来,然后在不同的平台使用 CMake 调用各自的编译器生成各自的工程。
    • 在 linux 平台下使用 CMake 生成 Makefile 并编译的 流程
      1. 编写 CMakeLists.txt
      2. 执行命令“cmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )
      3. 使用 make 命令进行编译
    • CMake 入门资料
      • 电子书:Cmake 实践
      • CMake 入门实战
      • 在 linux 下使用 CMake 构建应用程序
      • cmake 使用示例与整理总结
      • cmake 学习笔记
    • 举例说明:CMake 构建 HelloSlam 工程

      1. Ctrl + Alt + T 按键打开终端
      2. 在选定路径下建立工程文件夹:
        $ mkdir HelloSlam
      3. 构建 HelloSlam 的文件目录结构
        $ cd HelloSlam
        $ mkdir bin build include lib src
        • bin    用来存放编译好的可执行二进制文件
        • build 在该文件夹下运行 cmake ,这样就不会污染源代码, 如果不想要这些自动生成的文件,只要简单的删除 build 文件夹就可以
        • include 用来放头文件
        • lib        用来放编译好的库文件
        • src       用来放源代码
      4. 文件目录结构
        半闲居士视觉SLAM十四讲笔记(2)初识 SLAM- part 2 linux CMake、Kdevelop_第1张图片
      5. 文件内容

        • src/main.cpp

                #include 
                #include "CHello.h"
                int main(int argc,char** argv)
                {
                     CHello myhello;
                     myhello.print();
                     return 1;
                }
        • include/CHello.h

               #ifndef HELLO_HEADER_H
               #define HELLO_HEADER_H
          
               class CHello
               {
               public:
          
                 CHello(){}
          
                 ~CHello(){}
          
                 void print();
               };
          
               #endif
        • src/CHello.cpp

               #include <iostream>
               #include "CHello.h"
          
               void CHello::print()
               {
                   std::cout << "hello slam..." << std::endl;
               }
        • CMakeLists.txt

               # 声明要求的 cmake 最低版本
               CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
          
               # 声明一个 cmake 工程
               PROJECT(HELLOSLAM)
          
               # 设置编译器
               SET(CMAKE_CXX_COMPILER "g++")
          
               # 设置编译模式 (Debug/Release)
               SET(CMAKE_BUILD_TYPE "Debug")
          
               # 显示执行构建过程中详细的编译信息
               SET(CMAKE_VERBOSE_MAKEFILE on)
          
               # 指定可执行文件目录
               SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
          
               # 指定库文件目录
               SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
          
               # 指定头文件目录
               INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
          
               # 指定源文件目录
               SET(SOURCE_DIR ${PROJECT_SOURCE_DIR}/src)
          
               # 增加一个可执行的二进制文件
               ADD_EXECUTABLE(HelloSlam ${SOURCE_DIR}/main.cpp)
          
               # 生成库文件:libhello.so
               ADD_LIBRARY(hello SHARED ${SOURCE_DIR}/CHello.cpp)
          
               # 将库文件链接到可执行程序
               TARGET_LINK_LIBRARIES(HelloSlam hello)   
      6. 运行程序
        $ cd build
        $ cmake ..
        $ make
        $ ../bin/HelloSlam
        终端输出: hello slam…

      7. 使用 Kdevelop 进行开发 [Kdevelop Download]
        Kdevelop 优势:
        • 支持 CMake 工程
        • 支持 C++,有高亮、跳转、补全等功能
        • 目录树浏览,方便查找
        • 一键编译、断点调试
        • 免费使用
      8. 导入工程:工具栏 Project Open/Import Project

      9. 工具栏 Run Configure Launches,点击左侧 + Add New …,设定 Executable(用 add_executable 指令构建的可执行程序),第二联里可以设置程序的运行参数和工作目录,有时我们会给 main 函数进行传参,如果没有的话置空即可,对于工作目录亦为如此,点击 OK 保存配置结果。
      10. Debug 中放置断点,光标移植代码号左边位置,左击鼠标即可放置断点(甲壳虫断点标志)
      11. 接下来就可以进行工程的 Build , Execute, Debug

        快捷键:
        • F8: Build
        • F10: Step Over
        • F11: Step Into
        • F12: Step Out

你可能感兴趣的:(视觉SLAM十四讲)