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

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::Isometry
Eigen::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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值