【算法思考】刚体旋转的几种表示,及特殊情况的简单换算

刚体有四种旋转的表达方式;

四元数,旋转向量(李代数),欧拉角(roll,yaw,pitch), 旋转矩阵(特殊正交群)

roll, yaw, pitch (滚动角,偏航角,俯仰角)

 旋转矩阵R的物理意义

R_{w,s} = \begin{bmatrix} \bold{e}_1 & \bold{e}_2 & \bold{e}_3 \end{bmatrix} = \begin{bmatrix} \bold{b}_1^T\\ \bold{b}_2^T\\ \bold{b}_3^T \end{bmatrix}

w是世界坐标系,s是旋转后的坐标系;

R_{w,s}[1\ 0\ 0]^T = \bold{e}_1, 因此R的每个列分别代表,新的坐标系在世界坐标系下的x,y,z轴的方向;

根据这个原理,那么我们可以知道,如果绕z轴顺时针旋转90度(右手定则),那么 e1 = [0, 1, 0], e2 = [-1, 0, 0], e3 = [0, 0, 1];

那么如何换算四元数和旋转向量?

首先我们定义 旋转向量 \bold{v} = [v_1, v_2, v_3]^T, 我们知道,v 的方向表示旋转轴,v的2范数表示旋转的角度。

那么我们重新看四元数 \bold{q} = q_0 + q_1 i + q_2 j + q_3 k, i^2 = j^2 = k^2 = -1。如果用来表示旋转,要求q的模长为1. 因为 (q1, q2, q3) 是旋转轴的方向。

其实可以得到公式:

\begin{aligned} &\cos (\frac{\theta}{2}) = q_0 \\ &\sin (\frac{\theta}{2})[n_x, n_y, n_z]^T = [q_1, q_2, q_3]^T \end{aligned}

这样其实就满足了,四元数模长为1的条件。

那么,给定旋转轴为 (0, 0, 1) 也就是 z 轴,旋转180 ° 的四元数应该是什么呢?

首先 q0 = cos(pi/2) = 0,(q1, q2, q3) = (0, 0, 1) * sin(pi/2) = (0, 0, 1) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值