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++