• 四元数求导


    四元数求导

    预备知识回顾

    • 单位四元数可以表达任意三维旋转,并且不存在奇异性。

    • 四元数和角轴的转换关系:

      • 假设某个旋转运动的旋转轴为单位向量 u \mathbf{u} u ,绕该轴的角度为 θ \mathbf{\theta} θ ,那么它对应的单位四元数为:
        q = [ cos ⁡ θ 2 u sin ⁡ θ 2 ] \mathbf{q}=\left[

        cosθ2usinθ2" role="presentation" style="position: relative;">cosθ2usinθ2
        \right] q=[cos2θusin2θ]

      • 当旋转一段微小时间,即角度趋于 0 0 0 时,容易有:
        Δ q = [ cos ⁡ δ θ 2 u sin ⁡ δ θ 2 ] ≈ [ 1 u δ θ 2 ] = [ 1 1 2 δ θ ] \Delta \mathbf{q}=\left[

        cosδθ2usinδθ2" role="presentation" style="position: relative;">cosδθ2usinδθ2
        \right] \approx\left[
        1uδθ2" role="presentation" style="position: relative;">1uδθ2
        \right]=\left[
        112δθ" role="presentation">112δθ
        \right] Δq=[cos2δθusin2δθ][1u2δθ]=[121δθ]
        其中 δ θ \delta \theta δθ 的方向表示旋转轴,模长表示旋转角度。

    • 角速度:
      ω = lim ⁡ Δ t → 0 δ θ Δ t \boldsymbol{\omega}=\lim _{\Delta t \rightarrow 0} \frac{\delta \boldsymbol{\theta}}{\Delta t} ω=Δt0limΔtδθ

    求导

    • 四元数对时间的导数:
      q ˙ ≜ lim ⁡ Δ t → 0 q ( t + Δ t ) − q ( t ) Δ t = lim ⁡ Δ t → 0 q ⊗ Δ q − q Δ t = lim ⁡ Δ t → 0 q ⊗ ( [ 1 1 2 δ θ ] − [ 1 0 ] ) Δ t = q ⊗ [ 0 1 2 ω ]
      q˙limΔt0q(t+Δt)q(t)Δt=limΔt0qΔqqΔt=limΔt0q([112δθ][10])Δt=q[012ω]" role="presentation">q˙limΔt0q(t+Δt)q(t)Δt=limΔt0qΔqqΔt=limΔt0q([112δθ][10])Δt=q[012ω]
      q˙Δt0limΔtq(t+Δt)q(t)=Δt0limΔtqΔqq=Δt0limΔtq([121δθ][10])=q[021ω]
  • 相关阅读:
    前端开发总结的一些技巧和实用方法(1)
    23-Spring事务源码分析
    Unity3d中Scene场景2D模式下放大后UI元素后不显示的问题
    datax自检报错 /datax/plugin/reader/._drdsreader/plugin.json]不存在
    总结一下使用paramiko遇到的问题
    YOLOv5:修改backbone为ConvNeXt
    c语言练习84:动态内存管理
    深入解析LLaMA如何改进Transformer的底层结构
    c#基础()
    java.lang.ClassNotFoundException: javafx.util.Pair的问题解决与原因详解
  • 原文地址:https://blog.csdn.net/weixin_45860565/article/details/126743535