gtsam库中怎么实现Eigen::Matrix3d
时间: 2023-07-13 15:39:31 浏览: 161
在gtsam库中,Eigen::Matrix3d是一个3x3的double类型矩阵,可以通过以下方式进行定义:
```c++
#include <Eigen/Core>
Eigen::Matrix3d m;
```
上述代码定义了一个名为m的3x3的double类型矩阵。在gtsam库中,使用Eigen库作为矩阵计算的基础库,因此Eigen::Matrix3d类型实际上就是Eigen库中的Matrix<double, 3, 3>类型的别名。在使用Eigen::Matrix3d类型时,可以直接使用Eigen库中提供的所有矩阵计算函数,例如矩阵乘法、矩阵求逆等。
相关问题
Eigen::Vector3d d_vfb, d_vfn, d_vgn, gl, midvel, midpos; Eigen::Vector3d temp1, temp2, temp3; Eigen::Matrix3d cnn, I33 = Eigen::Matrix3d::Identity(); Eigen::Quaterniond qne, qee, qnn, qbb, q1, q2;
这段代码定义了一些向量和矩阵,以及四元数。具体解释如下:
- Eigen::Vector3d是Eigen库中的向量类型,表示三维向量。d_vfb、d_vfn、d_vgn、gl、midvel、midpos、temp1、temp2、temp3均为三维向量。
- Eigen::Matrix3d是Eigen库中的矩阵类型,表示3x3的矩阵。cnn和I33均为3x3的矩阵。
- Eigen::Quaterniond是Eigen库中的四元数类型,表示四元数。qne、qee、qnn、qbb、q1、q2均为四元数。
这段代码并没有对向量和矩阵进行初始化,因此它们的值是未知的。
Eigen::Vector3d ea0(Eular[1] * M_PI / 180.0, Eular[0] * M_PI / 180.0, Eular[2] * M_PI / 180.0); Eigen::Matrix3d R; R = Eigen::AngleAxisd(ea0[0], ::Eigen::Vector3d::UnitX()) * Eigen::AngleAxisd(ea0[1], ::Eigen::Vector3d::UnitY()) * Eigen::AngleAxisd(ea0[2], ::Eigen::Vector3d::UnitZ()); Eigen::Quaterniond q; q = R;
这段代码是通过欧拉角计算得到旋转矩阵,然后将旋转矩阵转换为四元数。首先,通过Eular数组表示欧拉角,将角度值转换成弧度值并用Eigen::Vector3d类型的变量ea0存储。接着,通过Eigen::AngleAxisd()函数将欧拉角转换成旋转矩阵R。最后,通过Eigen::Quaterniond()函数将旋转矩阵R转换成四元数q。
阅读全文