视觉slam14讲——第3讲 三维空间刚体运动

来源:互联网 发布:企业网站如何做好优化 编辑:程序博客网 时间:2024/05/17 05:03

  • 旋转的四种表示方法
  • 四种变换

1 旋转的四种表示方法

  • 旋转向量(也叫轴角)
  • 旋转矩阵
  • 欧拉角
  • 四元数

四种都可以相互转化,使用Eigen库常用转化总结如下
(0)构造旋转向量

Eigen::AngleAxisd rotation_vector ( M_PI / 4, Eigen::Vector3d ( 0, 0, 1 ) );

(1)旋转向量(也叫轴角) - - - - > 四元数

Eigen::Quaterniond q = Eigen::Quaterniond ( rotation_vector );cout << "quaternion = \n" << q.coeffs() << endl; // 注意coeffs的顺序是(x,y,z,w),w为实部,前三者为虚部

(2)旋转向量(也叫轴角) - - - - > 旋转矩阵

Eigen::Matrix3d rotation_matrix = rotation_vector.toRotationMatrix();// 或者Eigen::Matrix3d rotation_matrix = rotation_vector.matrix()

(3) 旋转矩阵- - - - > 欧拉角

Eigen::Vector3d euler_angles = rotation_matrix.eulerAngles ( 2, 1, 0 );// ZYX顺序,即roll pitch yaw顺序

2 四种变换

  • 欧式变换
    同一向量在各个坐标系下长度夹角都一样。6个自由度
// 欧氏变换矩阵使用 Eigen::IsometryEigen::Isometry3d T = Eigen::Isometry3d::Identity();              // 虽然称为3d,实质上是4*4的矩阵T.rotate ( rotation_vector );                                     // 按照rotation_vector进行旋转T.pretranslate ( Eigen::Vector3d ( 1, 3, 4 ) );                   // 把平移向量设成(1,3,4)
  • 相似变换
    允许物体均匀缩放,7个自由度,体积比
  • 仿射变换(正交投影)
    变换之后立方体不再是方的了,但是各个面仍是平行四边形
  • 射影变换
    3D有15个自由度,真实世界到相机照片看作射影变换
阅读全文
0 0
原创粉丝点击