视觉SLAM十四讲》学习笔记——第二章

写在前面

正在学习高翔老师的视觉slam十四讲。为了记录个人认为的书中重点和注意事项,方便以后查阅,写下这篇内容。

一、ubuntu系统的安装

书中推荐安装ubuntu14.04版本,但经过多次尝试,本人笔记本无法正常安装使用ubuntu14版本。于是最终安装了ubuntu16.04版本系统,但仍没有解决无法正常使用独显的问题。

1.1安装ubuntu双系统的准备

  1. 下载ubuntu IOS镜像文件
    官方下载速度很慢,个人使用 网易的镜像源。值得注意的一点是:desktop版本为常规版本,server为无图形界面的版本。所以应下载desktop版本。
  2. 下载UltraiSO工具
    ultrailso软件是用来制作u盘启动盘。官方下载地址。官方可以免费下载试用,破解版自行寻找。
  3. 制作u盘启动盘
    该步骤会将U盘格式化,请提前备份
    打开ultrailso…
    4.等有时间再写接下来的内容,毕竟这部分不是重点。

二、库安装

作者源码地址

g++(一般已经安装)

sudo apt-get install g++

cmake

sudo apt-get install cmake

集成开发环境(IDE) Kdevelop

sudo apt-get install kdevelop

没错,自动安装的命令都是这样,注意要小写。

三、程序

3.1 g++

g++本质是一个C++编译器。使用g++编译一个可执行文件(如 helloSLAM.cpp),

g++ helloSLAM.cpp

之后,所在目录会多出一个a.out文件(这是默认生成名)。输入如下命令运行

  ./a.out

3.2 cmake

cmake作用:当程序越来越复杂,互相调用越来越多,就需要用到cmake来进行编译。

cmake最核心需要两个文件:CMakeLists.txttestSLAM.cpp

3.2.1 CMakeLists.txt

CMaKeLists.txt文件,主要是声明对该目录文件所要作什么事情。最基本的样式如下

#声明要求的cmake最低版本
cmake_minimum_required( VERSION 2.8 )

#声明一个cmake工程
project(TestSLAM)

#声明一个可执行文件
add_executable( testSLAM testSLAM.cpp )

该文件方便我们对工程进行扩展和补充。

3.2.2 .cpp文件

testSLAM.cpp文件为程序的主函数部分,包含main函数。

3.2.3编译与执行

使用cmake命令编译c++程序,需在该文件夹打开终端,输入如下命令:

mkdir build
cd build
cmake ..
make

注意,以上命令只是编译。如编译成功,则会产生testSLAM文件。执行如下:

 ./testSLAM

3.3 使用库

3.3.1 什么是库?库的作用?

在C++工程中,只有main函数会生成可执行程序。其他代码,我们将其打包成库,供其他程序调用。

3.3.2 库的分类

在Linux中,库文件分为静态库共享库两种。

静态库以 .a 作为后缀,每次被调用都会生成一个副本,移植时更不容易出错。

共享库以 .so 作为后缀,共享库只有一个副本,所以更省空间。

3.3.3 库的编写与生成

编写库文件需要三个文件: .cpp文件、CMakeLists.txt文件、 .h文件 。
其步骤是:

  1. 编写.cpp文件(库的主体)
  2. 编写CMakeLists.txt文件(用于编译生成库压缩包)
  3. 在文件夹里打开终端,编译生成库压缩包
  4. 编写.h头文件(方便调用查阅)

.cpp 文件里编写库中的函数,是库文件的主体。这里假设我们的文件为libtestLib.cpp

CMakeLists.txt文件用于生成库文件压缩包。编写如下:

#生成静态库testLiib
add_library( testLib libtestLib,cpp )

#生成共享库testLib_shared
add_library( testLib_shared SHARED libtestLib.cpp )

有以上两个文件后,就可以编译生成库文件压缩包了。命令如下:

cd build
cmake ..
make

这时build文件夹就会生成testLib.a(或testLib_shared.so)文件。

得到库函数压缩包后,还需要编写**.h文件**,以声明库中包含的函数,方便查阅与调用。常规编写模式如下:

#ifndef LIBTESTLIB_H_
#define LIBTESTLIB_H_
//此处写函数声明,例如:
void printHello();
#endif

3.3.4 调用库

为了调用库,须在主程序的CMakeLists.txt文件和.cpp文件做如下更改。

CMakeLists.txt中将库链接至工程

#在add_executable( 生成文件名 主程序.cpp )后添加
#target_link_libraries( 生成文件名  库文件名 )
target_link_libraries(  testSLAM   tsetLib_shared )

.cpp文件添加包含库头文件

#include "libtestLib.h"

3.4 Kdevelop

3.4.1基本使用

在该书中,主要使用打开CMakeLists.txt方式完成编程。本人习惯先在文件夹中创建CMakeLists.txt和.cpp文件。然后打开Kdevelop,在左侧点击“Projects”->“Open project”,打开CMakeLists.txt文件。
在这里插入图片描述生成工程后,再编写CMakeLists文件,.cpp文件。然后写好主体后build一遍。然后继续编程。

3.4.2 调试

在编程栏左侧添加好断点,点击“Debug”进行调试。
在左侧“Variables”可查看变量值。
快捷键:单步运行(F10)、单步跟进(F11)、单步跳出(F12)。

3.4.3 常见错误

使用Kdevelop时,“Execute”经常出现以下两种问题:

  1. No valid executables specified
  2. Could not start program.Make sure that the path is specified correctly
    在这里插入图片描述
    在这里插入图片描述

这为启动项问题。解决方法如下:点击上方“Run”->“Configure Lanuches”,删除原本的Launcher。然后点击“Add New”,添加新的Launcher。回主界面“Build”后,再点击下图红圈位置,在build文件夹中选择生成文件(无后缀的)即可。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值