三维刚体运动(一)

三维刚体运动

运动 = 旋转 + 平移(欧式变换不考虑物体的形变),本文主要介绍三维刚体运动中的旋转部分的几种表示方式。

1 旋转

1.1 旋转矩阵

旋转矩阵的性质:行列式为1的正交矩阵(逆为自身的转置)。

  1. 平面2D旋转
    在这里插入图片描述
    x = ∣ ∣ O P ∣ ∣ c o s α y = ∣ ∣ O P ∣ ∣ s i n α x ′ = ∣ ∣ O P ∣ ∣ c o s ( α − β ) y ′ = ∣ ∣ O P ∣ ∣ s i n ( α − β ) [ x ′ y ′ ] = [ c o s β s i n β − s i n β c o s β ] [ x y ] x = \vert \vert \mathbf{OP} \vert \vert cos\alpha \\ y = \vert \vert \mathbf{OP} \vert \vert sin\alpha \\ x' = \vert \vert \mathbf{OP} \vert \vert cos(\alpha - \beta) \\ y' = \vert \vert \mathbf{OP} \vert \vert sin(\alpha - \beta) \\ \begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} cos\beta & sin\beta \\ -sin\beta & cos\beta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} x=∣∣OP∣∣cosαy=∣∣OP∣∣sinαx=∣∣OP∣∣cos(αβ)y=∣∣OP∣∣sin(αβ)[xy]=[cosβsinβsinβcosβ][xy]
  2. 空间3D旋转,分别从xyz三个轴进行旋转分解
    • x轴旋转
      在这里插入图片描述
      [ x ′ y ′ z ′ ] = [ 1 0 0 0 c o s β s i n β 0 − s i n β c o s β ] [ x y z ] \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & cos\beta & sin\beta \\ 0 & -sin\beta & cos\beta \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} xyz = 1000cosβsinβ0sinβcosβ xyz
    • y轴旋转
      在这里插入图片描述
      [ x ′ y ′ z ′ ] = [ c o s β 0 − s i n β 0 1 0 s i n β 0 c o s β ] [ x y z ] \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = \begin{bmatrix} cos\beta & 0 & -sin\beta \\ 0 & 1 & 0 \\ sin\beta & 0 & cos\beta \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} xyz = cosβ0sinβ010sinβ0cosβ xyz
    • z轴旋转
      在这里插入图片描述
      [ x ′ y ′ z ′ ] = [ c o s β s i n β 0 − s i n β c o s β 0 0 0 1 ] [ x y z ] \begin{bmatrix} x' \\ y' \\ z' \end{bmatrix} = \begin{bmatrix} cos\beta & sin\beta & 0 \\ -sin\beta & cos\beta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} xyz = cosβsinβ0sinβcosβ0001 xyz

1.2 旋转向量

在这里插入图片描述

  1. 旋转矩阵的缺点:有9个元素,但一次旋转只有3个自由度,表达冗余,必须是正交矩阵且行列式为1,求解困难;
  2. 旋转向量简化:任意旋转都可以用一个旋转轴和一个旋转角来刻画;
  3. 定义一个旋转向量/角轴,其方向与旋转轴一致,长度等于旋转角;
  4. 旋转矩阵有9个量,有正交性和行列式约束;角轴有3个量,没有约束。

1.3 欧拉角

如下图绕Z-Y-X轴旋转,把一个旋转分解成3次绕不同轴的旋转,欧拉角会出现万向锁的情况,导致奇异解
在这里插入图片描述

1.4 四元数

  1. 定义
    四元数是Hamilton找到的一种扩展的复数,一个四元数拥有一个实部和三个虚部:
    q = q 0 + q 1 i + q 2 j + q 3 k \mathbf{q} = q_0 + q_1i + q_2j + q_3k q=q0+q1i+q2j+q3k
    其中   i , j , k \ i,j,k  i,j,k为四元数的三个虚部,同时满足以下性质:
    i 2 = j 2 = k 2 = − 1 i j = k , j i = − k j k = i , k j = − i k i = j , i k = − j i^2 = j^2 = k^2 = -1 \\ ij = k, ji = -k \\ jk = i, kj = -i \\ ki = j, ik = -j i2=j2=k2=1ij=k,ji=kjk=i,kj=iki=j,ik=j
    由于它的特殊表示形式,有时会表示为一个标量和一个向量:
    q = [ s , v ] s = q 0 ∈ R , v = [ q 1 , q 2 , q 3 ] ∈ R 3 \mathbf{q} = [s, \mathbf{v}] \\ s = q_0 \in \R,\mathbf{v}=[q_1, q_2, q_3] \in \R^3 q=[s,v]s=q0R,v=[q1,q2,q3]R3
    如果一个四元数虚部为0,称之为实四元数。反之,若它的实部为0,称之为虚四元数。该定义和复数是相似的。
  2. 性质
    • 加减
      q a ± q b = [ s a ± s b , v a ± v b ] \mathbf{q_a} \pm \mathbf{q_b} = [s_a \pm s_b, \mathbf{v_a} \pm \mathbf{v_b}] qa±qb=[sa±sb,va±vb]
    • 乘法
      q a ⊗ q b = ( s a s b − x a x b − y a y b − z a z b ) + ( s a x b + x a s b + y a z b − z a y b ) i + ( s a y b − x a z b + y a s b + z a x b ) j + ( s a z b + x a y b − y a x b + z a s b ) k = [ s a s b − v a v b , s a v b + s b v a + v a × v b ] \mathbf{q_a} \otimes \mathbf{q_b} = (s_as_b - x_ax_b -y_ay_b - z_az_b) \\ +(s_ax_b + x_as_b + y_az_b - z_ay_b)i \\ +(s_ay_b - x_az_b + y_as_b + z_ax_b)j \\ +(s_az_b + x_ay_b - y_ax_b + z_as_b)k \\ = [s_as_b - \mathbf{v_a} \mathbf{v_b}, s_a\mathbf{v_b} + s_b \mathbf{v_a} + \mathbf{v_a} \times \mathbf{v_b}] qaqb=(sasbxaxbyaybzazb)+(saxb+xasb+yazbzayb)i+(saybxazb+yasb+zaxb)j+(sazb+xaybyaxb+zasb)k=[sasbvavb,savb+sbva+va×vb]
    • 模长
      四元数的模长定义为:
      ∣ ∣ q ∣ ∣ = s 2 + x 2 + y 2 + z 2 \vert \vert \mathbf{q}\vert \vert = \sqrt{s^2 + x^2 + y^2 + z^2} ∣∣q∣∣=s2+x2+y2+z2
      可以验证,两个四元数乘积的模长是模长的乘积,这使得单位四元数相乘后仍是单位四元数。
      ∣ ∣ q a q b ∣ ∣ = ∣ ∣ q a ∣ ∣ ∣ ∣ q b ∣ ∣ \vert \vert \mathbf{q_a}\mathbf{q_b}\vert \vert = \vert \vert \mathbf{q_a}\vert \vert \vert \vert \mathbf{q_b}\vert \vert ∣∣qaqb∣∣=∣∣qa∣∣∣∣qb∣∣
    • 共轭
      q ∗ = s − x i − y j − z k = [ s , − v ] \mathbf{q}^* = s - xi - yj - zk = [s, -\mathbf{v}] q=sxiyjzk=[s,v]
      四元数的共轭即把虚部取为相反数,四元数共轭与自身相乘会得到一个实四元数,实部为四元数模长的平方:
      q ⊗ q ∗ = [ s 2 + v T v , 0 ] \mathbf{q} \otimes \mathbf{q}^* = [s^2 + \mathbf{v}^T\mathbf{v}, \mathbf{0}] qq=[s2+vTv,0]

    • q − 1 = q ∗ ∣ ∣ q ∣ ∣ \mathbf{q}^{-1} = \frac{\mathbf{q}^*}{\vert \vert \mathbf{q}\vert \vert} q1=∣∣q∣∣q
      四元数与自身的逆的乘积为实四元数的1
      q ⊗ q − 1 = q − 1 ⊗ q = 1 \mathbf{q} \otimes \mathbf{q}^{-1}=\mathbf{q}^{-1} \otimes \mathbf{q} = 1 qq1=q1q=1
      同时乘积的逆和矩阵运算有相似的性质:
      ( q a ⊗ q b ) − 1 = q b − 1 ⊗ q a − 1 (\mathbf{q_a} \otimes \mathbf{q_b})^{-1}= \mathbf{q_b}^{-1} \otimes \mathbf{q_a}^{-1} (qaqb)1=qb1qa1
      对于单位四元数,即   ∣ ∣ q ∣ ∣ = 1 \ \vert \vert \mathbf{q} \vert \vert =1  ∣∣q∣∣=1,它的逆就是它的共轭四元数。
    • 数乘和点乘
      k q = [ k s , k v ] q a q b = s a s b + x a x b i + y a y b j + z a z b k k\mathbf{q}= [ks, k\mathbf{v}] \\ \mathbf{q_a}\mathbf{q_b} = s_as_b+x_ax_bi+y_ay_bj+z_az_bk kq=[ks,kv]qaqb=sasb+xaxbi+yaybj+zazbk

1.5 比较

方法简单理解优点缺点应用
旋转矩阵   a ′ = R a \ a' = Ra  a=Ra直观9个量表示旋转,较为冗余
约束:正交矩阵且行列式为1
机器人
旋转向量旋转轴 + 旋转角几何上较为直观不实用,很难找到转轴的位置imu
欧拉角将一个旋转分解成绕3个不同轴的旋转参数少,几何上较为直观存在奇点,万向锁航空航天,无人机,2D运动
四元数复数的推广   p ′ = q p q − 1 \ p' = \mathbf{q} p \mathbf{q}^{-1}  p=qpq1速度更快、提供平滑插值、有效避免万向锁问题、存储空间较小等几何上较难理解计算机图形学、控制理论、信号处理、轨道力学等
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值