IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Vslam十四讲,前三节学习记录 -> 正文阅读

[C++知识库]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++

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-10 22:13:22  更:2022-03-10 22:14:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:52:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码