BetaFlight深入传感设计之六:四元数计算方法

Posted lida2003

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BetaFlight深入传感设计之六:四元数计算方法相关的知识,希望对你有一定的参考价值。

BetaFlight深入传感设计之六:四元数计算方法

BetaFlight和iNavFlight都是出自CleanFlight分支,两者的侧重点不太一样。从四元数应用的角度来看,iNav不仅代码比较完整,且对四元数操作进行了相应的数学逻辑封装。

我们这里针对四元数的应用,结合代码进行一次整理和理解。

1. 四元数理论

1.1 定义

  1. 矢量式

Q → = q 0 + q → \\overrightarrowQ = q_0 + \\overrightarrowq Q =q0+q

  1. 复数式

Q → = q 0 + q 1 ⋅ i + q 2 ⋅ j + q 3 ⋅ k \\overrightarrowQ = q_0 + q_1 \\cdot i + q_2 \\cdot j + q_3 \\cdot k Q =q0+q1i+q2j+q3k

注:高中课本的复数就是超复数的一种特殊情况,其中 q 2 = q 3 = 0 q_2 = q_3 = 0 q2=q3=0

  1. 三角式

Q → = c o s θ 2 + u → s i n θ 2 \\overrightarrowQ = cos \\cfrac\\theta2 + \\overrightarrowu sin \\cfrac\\theta2 Q =cos2θ+u sin2θ

1.2 基本运算

1.2.1 矢量加减

P → ± Q → = ( p 0 + p 1 ⋅ i + p 2 ⋅ j + p 3 ⋅ k ) ± ( q 0 + q 1 ⋅ i + q 2 ⋅ j + q 3 ⋅ k ) = ( p 0 ± q 0 ) + ( p 1 ± q 1 ) ⋅ i + ( p 2 ± q 2 ) ⋅ j + ( p 3 ± q 3 ) ⋅ k \\overrightarrowP \\pm \\overrightarrowQ = (p_0 + p_1 \\cdot i + p_2 \\cdot j + p_3 \\cdot k) \\pm (q_0 + q_1 \\cdot i + q_2 \\cdot j + q_3 \\cdot k) = (p_0 \\pm q_0) + (p_1 \\pm q_1) \\cdot i + (p_2 \\pm q_2) \\cdot j + (p_3 \\pm q_3) \\cdot k P ±Q =(p0+p1i+p2j+p3k)±(q0+q1i+q2j+q3k)=(p0±q0)+(p1±q1)i+(p2±q2)j+(p3±q3)k

1.2.2 标量乘法

a ⋅ Q → = a ⋅ q 0 + a ⋅ q 1 ⋅ i + a ⋅ q 2 ⋅ j + a ⋅ q 3 ⋅ k a \\cdot \\overrightarrowQ = a \\cdot q_0 + a \\cdot q_1 \\cdot i + a \\cdot q_2 \\cdot j + a \\cdot q_3 \\cdot k aQ =aq0+aq1i+aq2j+aq3k

1.3 矢量点叉乘

1.3.1 矢量点乘

P → ⋅ Q → = ∣ P ∣ ∣ Q ∣ c o s θ P Q \\overrightarrowP \\cdot \\overrightarrowQ = \\rvert P \\rvert \\rvert Q \\rvert cos \\theta_PQ P Q =P∣∣QcosθPQ

P → ⋅ Q → = ( p 0 + p 1 ⋅ i + p 2 ⋅ j + p 3 ⋅ k ) ⋅ ( q 0 + q 1 ⋅ i + q 2 ⋅ j + q 3 ⋅ k ) = p 0 q 0 + p 1 q 1 + p 2 q 2 + p 3 q 3 \\overrightarrowP \\cdot \\overrightarrowQ = (p_0 + p_1 \\cdot i + p_2 \\cdot j + p_3 \\cdot k) \\cdot (q_0 + q_1 \\cdot i + q_2 \\cdot j + q_3 \\cdot k) = p_0 q_0 + p_1 q_1 + p_2 q_2 + p_3 q_3 P Q =(p0+p1i+p2

以上是关于BetaFlight深入传感设计之六:四元数计算方法的主要内容,如果未能解决你的问题,请参考以下文章

BetaFlight深入传感设计之十:传感器物理特性方向对齐

BetaFlight深入传感设计:传感模块设计框架

BetaFlight深入传感设计:传感模块设计框架

BetaFlight深入传感设计之二:Mag传感模块

BetaFlight深入传感设计之二:Mag传感模块

BetaFlight深入传感设计之四:GPS传感模块