slam第三讲 三维空间刚体运动环境配置

本文介绍了如何在VSCode中配置C++、CMake、ROS插件,以及进行汉化设置。详细讲解了如何通过自动修复和mlocate命令配置includePath,特别是查找和使用Eigen库的方法,包括其头文件的搜索。此外,还讨论了嵌入式终端、SSH、Debug和Git的使用,并展示了Eigen在向量、矩阵和旋转操作中的应用。CMake的使用和添加Eigen库的两种方式也进行了阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

vscode配置

基本插件:c++、cmake、ROS、汉化

includePath配置的两种方法:

                1、自动修复

                2、ctrl + shift +p --> mlocate

使用locate指令找到Eigen库在哪

嵌入式终端:ctrl + `

ssh、Debug、Git。。。

 Eigen使用(涉及向量、矩阵、旋转)

特点:

Eigen库模块 

Eigen模块的下载

useEigen

useGeometry 

CMAKE 

课本示例useEigen代码

cmake

使用cmake进行编译的流程

 CMakeLists如何添加Eigen库

方法1:直接mlocate

方法2:find_package(xxx)

作业:


vscode配置

  • 基本插件:c++、cmake、ROS、汉化

  • includePath配置的两种方法:

                目的:搜到头文件

                1、自动修复

                2、ctrl + shift +p --> mlocate

使用locate指令找到Eigen库在哪

  • locate指令下载
sudo apt-get install locate
  •  使用locate指令找到Eigen位置
locate Core | grep Eigen

注意:程序运行时,在/usr/include目录下所需要的头文件,可能不止是eigen3,这时要使用通配符

"/usr/include/**"  #表示使用的是该目录下的所有库文件,缺点是搜索需要的库文件时会比较慢!

问题解决:

  • 嵌入式终端:ctrl + `

  • ssh、Debug、Git。。。

 Eigen使用(涉及向量、矩阵、旋转)

特点:

  1. 纯头文件(无静态库和动态库,即无.cpp文件)
  2. 高效
  3. 常用

Eigen库模块 

  • core:向量、矩阵、矩阵基本操作、矩阵分解
  • Dense:求特征值、特征向量、稠密矩阵的一些操作
  • Geometry:位姿变换相关的数据类型和操作

Eigen模块的下载

  • 若是先安装了ros则不需要再安装Eigen模块,否则使用如下命令安装
sudo apt install libeigen3-dev

useEigen

  • Eigen中,向量和矩阵的基本操作

useGeometry 

  • Eigen中,旋转的表示,和不同形式旋转两之间的转化

CMAKE 

  • 变量区分大小写,指令不分大小写,多个参数可以用空格or回车隔开
  • set(CMAKE_CXX_FLAGS"-std=c++11")

  • CMakeLists如何添加Eigen库

                方法1:直接mlocate

                方法2:find_package(XXX)

                        locate XXX | grep cmake

                        两个变量:${XXX_INCLUDE_DIRS}-->${XXX_LIBRARIES}生成.so和.a文件静态库时是空的。

                        REQUIRED:选项表示如果报没有找到的话,cmake过程会终止

                        COMPONENTS:在他们的后面可以列出一些

                关于XXX的具体形式如何确定


  • 关于eigen为何没有target_link_libraries还可以运行-->因为Eigen没有库(动态链接和静态连接库),是纯头文件。

Eigen/core模块

  • 主要定义了向量、矩阵如何求逆,求导,求trace。

Eigen/Geometry模块

  • 主要定义角轴、四元数、欧拉角、旋转矩阵。

课本示例useEigen代码

cmake

cmake_minimum_required(VERSION 2.8)#cmake的版本
project(useEigen)

set(CMAKE_BUILD_TYPE "Release")
#set定义变量时使用,或者更改cmake已有的内置变量
#确定cmake编译是使用Debug还是release版本来进行编译
#使用Debug进行编译有编译的中间过程,编译后的文件体积大
#使用release进行编译无中间过程,编译后的文件体积小
set(CMAKE_CXX_FLAGS "-O3")
#CMAKE_CXX_FLAGS是一个变量群,可对其中的很多变量进行修改
#可以进行修改很多变量
#-O3告诉编译器优化我们的代码
#-std=c++意思是使用c++11的标准进行编译


# 添加Eigen头文件
include_directories("/usr/include/eigen3")
#或者
#单独一个文件可以写成这样:include_directories(/usr/include/eigen3) 
add_executable(eigenMatrix eigenMatrix.cpp)


#target_link_libraries(eigenMatrix ${EIGEN3_LIBRARIES})
#没有上一行的代码是因为eigen只有头文件没有库文件
#正常情况下,是要编译.cpp文件生成相应的库文件,再将库文件链接到目标文件上

若cmake中

include_directories("/usr/include/eigen3")

在写.cpp程序时,在include中找头文件,只会在/usr/include/eigen3该目录下寻找

在eigenMatrix.cpp中

#include <Eigen/Core>


若cmake中

include_directories("/usr/include/eigen3/Eigen")

在写.cpp程序时,在include中找头文件,只会在/usr/include/eigen3该目录下寻找

在eigenMatrix.cpp中

#include <Core>


注意:cmake是为了得到makefile,makefile决定了各个程序之间的链接关系,如果修改程序的话只需要重新make,更新之前的目标文件就好。

  • 使用set定义变量:变量名是hello
  • message 设置STATUS
set(hello "123")
message(STATUS "hello=" ${hello})
  • 使用cmake进行编译时会出现:

  • message 设置WARNING
set(hello "123")
message(WARNING "hello=" ${hello})
  • 使用cmake进行编译时会出现警告信息:

  •  message设置FATAL_ERROR
set(hello "123")
message(FATAL_ERROR "hello=" ${hello})
  • 使用cmake编译时不进行编译

使用cmake进行编译的流程

  1. 在存在makelist文件的文件夹中创建build文件夹
  2. cd build
  3. cmake ..
  4. make
  5. ./目标文件

 CMakeLists如何添加Eigen库

添加头文件依赖

find_package(xxx)
include_directories(${xxx_INCLUDE_DIRS})#找到库文件
target_link_libraries(visualizeGeometry ${xxx_LIBRARIES})#链接到动态链接库

方法1:直接mlocate

locate XXX
include_directories("/usr/include/eigen3")

方法2:find_package(xxx)

  1. 两个变量${xxx_INCLUDE_DIRS}和${xxx_LIBRARIES}
  2. REQUIRED——选项表示如果报没有找到的话,cmake的过程会终止
  3. locate xxx | grep cmake

 注意:有Eigen3Config.cmake的文件可以导入到CMakeLists.txt文件中!

     4.COMPONENTS——在它们的后面可以列出一些与包相关的部件清单

作业:

Practical_Homework_for_slambook14/ch3_homework at main · cckaixin/Practical_Homework_for_slambook14 · GitHub

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值