三维刚体运动(二)

本文详细介绍了三维空间中刚体运动的旋转变换,包括欧拉角如何转换为旋转矩阵,以及旋转矩阵与四元数之间的相互转换。此外,还涉及了轴角表示法及其与四元数的转换。这些概念在计算机图形学、机器人学和姿态控制等领域中至关重要。
摘要由CSDN通过智能技术生成

旋转变换

本文主要介绍三维刚体运动中的不同旋转表示之间的转换推导。
在这里插入图片描述

1 欧拉角和旋转矩阵

假设角度都是相对于自转物体本身,即内旋,按照Z-Y-X的顺序旋转推导如下:
R ( θ 3 , θ 2 , θ 1 ) = R z ( θ 3 ) R y ( θ 2 ) R x ( θ 1 ) = [ c 3 − s 3 0 s 3 c 3 0 0 0 1 ] [ c 2 0 s 2 0 1 0 − s 2 0 c 2 ] [ 1 0 0 0 c 1 − s 1 0 s 1 c 1 ] = [ c 2 c 3 − s 3 s 2 c 3 c 2 s 3 c 3 s 2 s 3 − s 2 0 c 2 ] [ 1 0 0 0 c 1 − s 1 0 s 1 c 1 ] = [ c 2 c 3 s 1 s 2 c 3 − c 1 s 3 c 1 s 2 c 3 + s 1 s 3 c 2 s 3 s 1 s 2 s 3 + c 1 c 3 c 1 s 2 s 3 − s 1 c 3 − s 2 s 1 c 2 c 1 c 2 ] R(\theta_3, \theta_2,\theta_1)=R_z(\theta_3)R_y(\theta_2)R_x(\theta_1) \\ = \begin{bmatrix} c_3 & -s_3 & 0 \\ s_3 & c_3 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} c_2 & 0 & s_2 \\ 0 & 1 & 0 \\ -s_2 & 0 & c_2 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & c_1 & -s_1 \\ 0 & s_1 & c_1 \end{bmatrix} \\ = \begin{bmatrix} c_2c_3 & -s_3 & s_2c_3 \\ c_2s_3 & c_3 & s_2s_3 \\ -s_2 & 0 & c_2 \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & c_1 & -s_1 \\ 0 & s_1 & c_1 \end{bmatrix} \\ = \begin{bmatrix} c_2c_3 & s_1s_2c_3-c_1s_3 & c_1s_2c_3+s_1s_3 \\ c_2s_3 & s_1s_2s_3+c_1c_3 & c_1s_2s_3-s_1c_3 \\ -s_2 & s_1c_2 & c_1c_2 \end{bmatrix} R(θ3,θ2,θ1)=Rz(θ3)Ry(θ2)Rx(θ1)= c3s30s3c30001 c20s2010s20c2 1000c1s10s1c1 = c2c3c2s3s2s3c30s2c3s2s3c2 1000c1s10s1c1 = c2c3c2s3s2s1s2c3c1s3s1s2s3+c1c3s1c2c1s2c3+s1s3c1s2s3s1c3c1c2

旋转矩阵转欧拉角,不考虑万向锁的情况,推导如下:
θ 2 = a r c s i n ( s 2 ) = a r c s i n ( − m 31 ) θ 1 = a t a n 2 ( s 1 c 2 , c 1 c 2 ) = a t a n 2 ( m 32 , m 33 ) θ 3 = a t a n 2 ( c 2 s 3 , c 2 c 3 ) = a t a n 2 ( m 21 , m 11 ) \theta_2 = arcsin(s_2) = arcsin(-m_{31}) \\ \theta_1 = atan2(s_1c_2, c_1c_2) = atan2(m_{32}, m_{33}) \\ \theta_3 = atan2(c_2s_3, c_2c_3) = atan2(m_{21}, m_{11}) θ2=arcsin(s2)=arcsin(m31)θ1=atan2(s1c2,c1c2)=atan2(m32,m33)θ3=atan2(c2s3,c2c3)=atan2(m21,m11)

2 四元数和旋转矩阵

对于单位四元数转旋转矩阵,推导如下:
q = q 0 + q 1 i + q 2 j + q 3 k ∣ ∣ q ∣ ∣ = q 0 2 + q 1 2 + q 2 2 + q 3 2 = 1 R ( q ) = [ 1 − 2 q 2 2 − 2 q 3 2 2 q 1 q 2 − 2 q 3 q 0 2 q 1 q 3 + 2 q 2 q 0 2 q 1 q 2 + 2 q 3 q 0 1 − 2 q 1 2 − 2 q 3 2 2 q 2 q 3 − 2 q 1 q 0 2 q 1 q 3 − 2 q 2 q 0 2 q 2 q 3 + 2 q 1 q 0 1 − 2 q 1 2 − 2 q 2 2 ] \mathbf{q} = q_0 + q_1i + q_2j + q_3k \\ \vert \vert\mathbf{q} \vert \vert= q_0^2 + q_1^2 +q_2^2 + q_3^2 = 1 \\ R(\mathbf{q}) = \begin{bmatrix} 1-2q_2^2-2q_3^2 & 2q_1q_2-2q_3q_0 & 2q_1q_3+2q_2q_0 \\ 2q_1q_2+2q_3q_0 & 1-2q_1^2-2q_3^2 & 2q_2q_3-2q_1q_0 \\ 2q_1q_3-2q_2q_0 & 2q_2q_3+2q_1q_0 & 1-2q_1^2-2q_2^2 \end{bmatrix} q=q0+q1i+q2j+q3k∣∣q∣∣=q02+q12+q22+q32=1R(q)= 12q222q322q1q2+2q3q02q1q32q2q02q1q22q3q012q122q322q2q3+2q1q02q1q3+2q2q02q2q32q1q012q122q22
对于旋转矩阵转四元数,推导如下:
t r ( R ( q ) ) = m 11 + m 22 + m 33 = 3 − 4 ( q 1 2 + q 2 2 + q 3 2 ) = 4 ( 1 − ( ( q 1 2 + q 2 2 + q 3 2 ) ) ) − 1 = 4 q 0 2 − 1 q 0 = t r ( R ( q ) ) + 1 2 q 1 = m 32 − m 23 4 q 0 q 2 = m 13 − m 31 4 q 0 q 3 = m 21 − m 12 4 q 0 tr(R(\mathbf{q})) = m_{11} + m_{22} + m_{33} \\ = 3 - 4(q_1^2 + q_2^2 + q_3^2) \\ = 4(1-((q_1^2 + q_2^2 + q_3^2))) - 1 \\ = 4q_0^2 - 1 \\ q_0 = \frac{\sqrt{tr(R(\mathbf{q}))+1}}{2} \\ q_1 = \frac{m_{32}-m_{23}}{4q_0} \\ q_2 = \frac{m_{13}-m_{31}}{4q_0} \\ q_3 = \frac{m_{21}-m_{12}}{4q_0} tr(R(q))=m11+m22+m33=34(q12+q22+q32)=4(1((q12+q22+q32)))1=4q021q0=2tr(R(q))+1 q1=4q0m32m23q2=4q0m13m31q3=4q0m21m12

3 欧拉角和四元数

欧拉角转四元数推导如下,其中乘法要遵守四元数乘法:
q ( θ 3 , θ 2 , θ 1 ) = q z ( θ 3 ) ⊗ q y ( θ 2 ) ⊗ q x ( θ 1 ) = [ c o s ( θ 3 2 ) 0 0 s i n ( θ 3 2 ) ] ⊗ [ c o s ( θ 2 2 ) 0 s i n ( θ 2 2 ) 0 ] ⊗ [ c o s ( θ 1 2 ) s i n ( θ 1 2 ) 0 0 ] \mathbf{q}(\theta_3, \theta_2,\theta_1)= \mathbf{q}_z(\theta_3)\otimes \mathbf{q}_y(\theta_2) \otimes \mathbf{q}_x(\theta_1) \\ =\begin{bmatrix} cos(\frac{\theta_3}{2}) \\ 0 \\ 0 \\ sin(\frac{\theta_3}{2})\end{bmatrix} \otimes \begin{bmatrix} cos(\frac{\theta_2}{2}) \\ 0 \\ sin(\frac{\theta_2}{2}) \\ 0 \end{bmatrix} \otimes \begin{bmatrix} cos(\frac{\theta_1}{2}) \\ sin(\frac{\theta_1}{2}) \\ 0 \\ 0 \end{bmatrix} q(θ3,θ2,θ1)=qz(θ3)qy(θ2)qx(θ1)= cos(2θ3)00sin(2θ3) cos(2θ2)0sin(2θ2)0 cos(2θ1)sin(2θ1)00

4 轴角

轴角转四元数如下:
q ( w , v ⃗ ) = ( c o s ( θ 2 ) , u ⃗ s i n ( θ 2 ) ) \mathbf{q}(w, \vec{v}) = (cos(\frac{\theta}{2}), \vec{u}sin(\frac{\theta}{2})) q(w,v )=(cos(2θ),u sin(2θ))
轴角转旋转矩阵,即罗德里格斯公式:
R = c o s θ I + ( 1 − c o s θ ) u ⃗ u ⃗ T + s i n θ [ u ⃗ × ] R = cos\theta I + (1-cos\theta)\vec{u}\vec{u}^T+sin\theta[\vec{u}\times] R=cosθI+(1cosθ)u u T+sinθ[u ×]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值