slam学习——四元素和旋转矩阵的一些知识

slam学习——四元素和旋转矩阵的一些知识

这个是知识星球里面的第二题

已知相机的位姿用四元数表示为q=[0.35,0.2,0.3,0.1],顺序为x,y,z,w,请编程实现:

输出四元数对应的旋转矩阵、旋转矩阵的转置,旋转矩阵的逆矩阵,旋转矩阵乘以自身的转置,验证旋转矩阵的正交性。

#include <iostream>
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Geometry>

int main(){
    Eigen::Quaterniond quat1 = Eigen::Quaterniond(0.1,0.35,0.2,0.3);
    quat1.normalize();
    Eigen::Matrix3d rotation_matrix = quat1.matrix();
    std::cout << "旋转矩阵:r \n" << rotation_matrix << std::endl;
    std::cout << "旋转矩阵的转置: rt \n" << rotation_matrix.transpose()<<std::endl;
    std::cout << "旋转矩阵的逆 r.inv \n" << rotation_matrix.inverse() << std::endl;
    std::cout << "旋转矩阵乘旋转矩阵的转置: r*rt \n" << rotation_matrix*rotation_matrix.transpose()<<std::endl;
}

最终的结果如下:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_32651847/article/details/111937859