视觉SLAM十四讲(三)——三维空间刚体运动(下)

这篇博客主要讲解如何使用Eigen库进行三维空间刚体运动的计算,包括安装Eigen库的方法以及通过CMakeLists.txt进行编译。还介绍了Eigen的几何模块在刚体运动中的应用。

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

理论部分请看 :三维空间刚体运动

一、Eigen的使用

首先安装 Eigen:

sudo apt-get install libeigen3-dev

一般都安装在

/usr/include/eigen3/


代码:

#include <iostream>
#include <ctime>

using namespace std;

//Eigen 部分
#include <Eigen/Core>
//稠密矩阵的代数运算
#include <Eigen/Dense>

#define MATRIX_SIZE 50

//本程序演示了 Eigen 基本类型的使用

int main(int argc,char** argv){
   //声明一个 2×3 的 float 矩阵
   Eigen::Matrix<float,2,3> matrix_23;
   //Eigen 通过 typedef 提供了许多内置类型,不过底层仍然是 Eigen::Matrix
   //例如 Vector3d 实质上是 Eigen::Matrix<double,3,1> 
   Eigen::Vector3d v_3d;
   //Matrix3d 实质上是 Eigen::Matrix<double,3,3>
   Eigen::Matrix3d matrix_33 = Eigen::Matrix3d::Zero();
   //如果不确定矩阵大小,可以使用动态大小的矩阵
   Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> matrix_dynamic;
   //更简单的
   Eigen::MatrixXd matrix_x;

   //矩阵操作
   //输入数据
   matrix_23 << 1,2,3,4,5,6;
   //输出
   cout<<"2*3矩阵 "<<matrix_23<<endl;

   //用()访问矩阵中的元素
   for(int i = 0;i<
### 关于《视觉SLAM十四》第章的内容总结与详细解 #### 数学基础之李群与李代数 在《视觉SLAM十四》中,第章深入探讨了数学基础中的重要概念——李群与李代数[^1]。这一章节对于理解后续的视觉SLAM算法至关重要。 - **定义与性质** 李群是一种具有连续光滑结构的群,在三维空间变换中有广泛应用。常见的李群包括旋转矩阵构成的特殊正交群SO(3),以及齐次坐标下刚体运动组成的特殊欧氏群SE(3)。 - **李代数的概念** 对应每一个李群存在相应的李代数,它描述了该群局部性质并简化计算过程。例如so(3)对应SO(3), se(3)对应SE(3)。 - **指数映射与对数映射** 这两个操作建立了从李代数到李群之间的桥梁。通过指数映射可以将向量转换成对应的旋转矩阵或者位姿;而对数映射则相反,能够把姿态变化表示为增量形式以便优化求解。 ```python import numpy as np from scipy.linalg import expm, logm def so3_to_SO3(w): # 将so(3)转为SO(3) return expm([[0,-w[2], w[1]], [w[2], 0, -w[0]], [-w[1], w[0], 0]]) def SO3_to_so3(R): # 将SO(3)转为so(3) skew_symmetric_matrix = logm(R)[:3,:3].real / 2.0 return np.array([skew_symmetric_matrix[2][1], skew_symmetric_matrix[0][2], skew_symmetric_matrix[1][0]]) ``` 上述Python代码展示了如何实现`so(3)`和`SO(3)`之间相互转化的功能函数。 #### 应用于实际场景的意义 了解这些抽象理论不仅有助于构建更精确的地图模型,而且可以在特征匹配、轨迹估计等方面发挥重要作用。通过对李群及其相应李代数的学习,读者可以获得处理复杂几何关系的能力,从而更好地掌握视觉SLAM技术的核心原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值