Vslam十四讲,前三节学习记录

g++ 可以进行编译,但是在大项目中需要使用cmake进行编译

cmake文件

#声明cmake最低版本:

cmake_minimum_required(VERSION 2.8)

#声明一个cmake工程

project(HelloSLAM)

#添加一个可执行程序

#语法:add_executable( 程序名 源代码文件 )

add_executable(helloSLAM helloSLAM.cpp)

调用cmake对该工程进行cmake编译

1、终端输入:cmake .  --------->MakeFile

2、终端输入:make   ---------->进度显示:built target project

3、终端输入:./helloSLAM ------>执行输出结果

linux中库文件分成静态库和共享库两种,静态库以.a作为后缀名,共享库以.so结尾。所有的库都是一些函数打包后的集合,差别在于静态库每次调用都会生成一个副本,而共享库则只有一个副本,节省空间。

# 共享库

add_library(hello_shared SHARED libHelloSLAM.cpp)

slambook2/ch2 每个文件的作用:

CMakeLists.txt ---------------cmake配置文件

helloSLAM.cpp -------------- 使用cmake .和make编译运行的源文件

libHelloSLAM.cpp ------------ 库的使用者,只要拿到了头文件和库文件,就可以调用这个库,即libhello的头文件,根据这个文件和刚才编译得到的库文件,就可以使用printHello函数了。

useHello.cpp --------------使用libHelloSLAM.h中的printHello()函数

注:在使用时,需要在cmakelist.txt中添加一个可执行程序的生成命令,连接到刚才使用的库上

add_executable( 程序名(useHello 源代码文件 useHello.cpp))

target_link_libraries( useHello hello_shared )//程序链接到库上

ubuntu16.04环境Kdevelop安装和汉化:使用的链接:

https://blog.csdn.net/lch_vison/article/details/79112450

mkdir build

cd build

cmake 

make

3.1 旋转矩阵:

内积(a.b,内积的结果与坐标系的选取无关,有长度和两者的夹角确定)和外积(a^b)

3.1.2 坐标系间的欧氏变换

刚体运动:旋转+平移(相机运动)

3.2  Engin 实践

一个库是由头文件和库文件组成。eigen头文件的默认位置在usr/include/engen3,因为eigen库只有头文件,所以不需要用target_link_libraries语句将程序链接到库上。

3.3 旋转向量和欧拉角

3.3.1 旋转向量

欧氏变换  R t 0 1 6 长度、夹角、体积

数据类型:

旋转矩阵 3*3 Eigen::Matrix3d

旋转向量 3*1 Eigen::AngleAxisd

欧拉角 3*1 Eigen::Vector3d

四元数 4*1 Eigen::Quaterniond

欧氏变换矩阵 4*4 Eigen::Isometry3d

仿射变换 4*4 Eigen::Affine3d

射影变换 4*3 Eigen::Projective3dv

3.7.2:显示相机的位姿

(32条消息) c++ error: ‘XXX’ is not a member of ‘std’_das白的博客-CSDN博客

出现error *** is not a member of std 的错误

修改cmakelist.txt文件

添加:set(CMAKE_CXX_FLAGS "-std=c++14 -O2 ${SSE_FLAGS} -msse4")

注意:只是添加set(CMAKE_CXX_STANDARD 11) 是不可以的。

3.7.1:显示运动轨迹

首先按照网上教程安装pangolin库

(32条消息) Ubuntu20.04安装Pangolin(视觉SLAM十四讲)_宁小健的博客-CSDN博客_ubuntu20安装pangolin

在最后一定要执行:sudo ldconfig 这句命令

ldconfig命令作用 ldconfig 是一个动态链接库管理命令 为了让动态链接库为系统所共享

②:修改trajectory.txt的路径,修改为在本地的路径,我的是:

string trajectory_file = "/home/lyy/Desktop/slambook2/ch3/examples/trajectory.txt";

注意:home前面一定要添加/否则编译不通过。

运行结果:

 

R旋转矩阵、rpy 欧拉角

T 平移矩阵、q 四元数(表示一个旋转)

早上:vscode配置c++环境,学习链接:

(32条消息) VsCode安装和配置c/c++环境(超完整,小白专用)_黄化的多多-CSDN博客_vscode如何安装c++

猜你喜欢

转载自blog.csdn.net/qq_44808827/article/details/123354748