该坐标系是惯性组件测量的基准。该系各轴确定方法如下 : : : 地球的中心O为i系的原点,该系的基面为赤道面。 X i Xi Xi轴在地球赤道平面内并指向春分点,设地球自转轴为 Z i Zi Zi轴,向北为正。由右手坐标系获得 Y i Yi Yi,这三者组合 O X i Y i Z i OXiYiZi OXiYiZi称为地心惯性坐标系。研究中通常假定它为一个理想坐标系,即认为它是时不变的,是相对惯性空间无任何运动的,且在该系经典力学可全部被应用;
地球的中心 O O O为 e e e系的原点,固联于地球,设地球自转轴为 Z i Z_i Zi轴,向北为正。 X e X_e Xe由位于赤道平面内且通过零子午线。由右手坐标系获得 Y i Y_i Yi这三者组合 O X e Y e Z e OX_eY_eZ_e OXeYeZe即为地球坐标系;
载体重心为其原点。 N N N轴( X g X_g Xg)指向北; E E E轴( Y g Y_g Yg)指向东;D轴( Z g Z_g Zg)指向地表。此时的地理坐标系称为北东地坐标系(ONED)。在有些研究中,东北天(OENU)坐标系被采用, Z g Z_g Zg轴指向天顶;
该系为右手坐标系,其原点位于载体的重心,且固连在载体上,各轴配置如下:
X b X_b Xb轴沿载体纵轴指向前, Y b Y_b Yb轴沿载体横轴指向右;
Z b Z_b Zb轴沿载体的竖轴指向下,并垂直于 O X b Y b OX_bY_b OXbYb 轴;
固连于物理(对平台式)或数学平台(对SINS)的右手直角坐标系;
该系常用于求解导航参数,根据平台不同有两种配置方式:
1)平台式惯导系统
导航坐标系常取理想的平台坐标系。
2)SINS系统
导航参数可在非载体坐标系上求解,例如可将加速度信号分解到特定的坐标系上以降低计算难度,而常用的导航坐标系之一是地理坐标系;
该系是一种虚拟坐标系,用于研究惯导系统,是以计算所得的经纬度为原点 O O O建立起来的地理坐标系,它与载体实际位置 O O O点上建立的地理坐标系 O X g Y g Z g OX_gY_gZ_g OXgYgZg不一致。两个坐标系之间的夹角为惯导系统的定位误差。为方便研究,定义重角: O X p Y p Z p OX_pY_pZ_p OXpYpZp系相对于 O X c Y c Z c OX_cY_cZ_c OXcYcZc系的夹角;平台的姿态角: O X p Y p Z p OX_pY_pZ_p OXpYpZp系相对于 O X g Y g Z g OX_gY_gZ_g OXgYgZg系的夹角。
常用的导航坐标系有北东地和东北天两种。
两种坐标系的指向分别定义如下:
与导航坐标系类似,常用的载体坐标系也有如下两种:
X轴:指向载体前进方向;
Y轴:指向载体右侧;
Z轴:指向下。
X轴:指向载体右侧;
Y轴:指向载体前进方向;
Z轴:指向上。
从导航坐标系经过3次旋转,得到载体坐标系,3次旋转的角度为姿态角。
姿态角 | 符号 | 读法 |
---|---|---|
航向角 | ψ \psi ψ | psi |
俯仰角 | θ \theta θ | theta |
横滚角 | ϕ \phi ϕ | phi |
(1) 俯仰角(-90 ~ 90deg);
(2) 横滚角(-180 ~ 180deg);
(3) 航向角(-180 ~ 180deg,可转换为0~360deg);
满足右手定则
(1) 北东地坐标系
X轴:横滚角;Y轴:俯仰角;Z轴:航向角。
(2) 东北天坐标系
X轴:俯仰角;Y轴:横滚角;Z轴:航向角。
以导航坐标系与载体坐标系之间的姿态旋转矩阵为例。所谓的姿态解算,就是求出当前的机体坐标系b(载体坐标系) 相对于地理坐标系n(导航坐标系) 的变化。由于n系和b 系均为直角坐标系,各轴之间始终保持直角,所以可将坐标系理解成刚体,当只研究两个坐标系间的角位置关系时,可理解成刚体的定点转动。而刚体定点转动这个变化可以通过一个变换矩阵来表示,这个矩阵包含了刚体的所有姿态信息。
右手系
[ a − c c a ] (1) \left[ \begin{matrix} a & -c \\ c & a \end{matrix} \right]\tag{1} [ac−ca](1)
左手系
[ a c − c a ] (2) \left[ \begin{matrix} a & c \\ -c & a \end{matrix} \right]\tag{2} [a−cca](2)
以z轴旋转为例:旋转方式由两种坐标系的旋转和向量的旋转
如上图所示, P P P 点不变,坐标系 O − X Y Z O-XYZ O−XYZ 旋转 α \alpha α,得到新的坐标系 O − X ′ Y ′ Z ′ O-X^{'}Y^{'}Z^{'} O−X′Y′Z′ ,在新坐标系下, P P P点的坐标变为 P ′ P^{'} P′,则有:
P = R z ( α ) P ′ P=R_z(\alpha)P^{'} P=Rz(α)P′
如上图所示,坐标系 O − X Y Z O-XYZ O−XYZ不变, P ′ P^{'} P′点旋转 α \alpha α ,得到新的点 P P P ,则有:
P = R z ( α ) P ′ P=R_z(\alpha)P^{'} P=Rz(α)P′
本身矩阵就是为了表示旋转而生的,三个轴的旋转也就是将三个旋转矩阵相乘即可。我们首先给出绕 x , y \mathrm{x}, \mathrm{y} x,y, z轴各自旋转的旋转矩阵表示:
R x ( θ ) = [ 1 0 0 0 cos θ − sin θ 0 sin θ cos θ ] \boldsymbol{R}_{x}(\theta)=\left[\begin{array}{ccc}1 & 0 & 0 \\ 0 & \cos \theta & -\sin \theta \\ 0 & \sin \theta & \cos \theta\end{array}\right] Rx(θ)=⎣⎡1000cosθsinθ0−sinθcosθ⎦⎤
R y ( γ ) = [ cos γ 0 sin γ 0 1 0 − sin γ 0 cos γ ] \boldsymbol{R}_{y}(\gamma)=\left[\begin{array}{ccc}\cos \gamma & 0 & \sin \gamma \\ 0 & 1 & 0 \\ -\sin \gamma & 0 & \cos \gamma\end{array}\right] Ry(γ)=⎣⎡cosγ0−sinγ010sinγ0cosγ⎦⎤
R z ( α ) = [ cos α − sin α 0 sin α cos α 0 0 0 1 ] \boldsymbol{R}_{z}(\alpha)=\left[\begin{array}{ccc}\cos \alpha & -\sin \alpha & 0 \\ \sin \alpha & \cos \alpha & 0 \\ 0 & 0 & 1\end{array}\right] Rz(α)=⎣⎡cosαsinα0−sinαcosα0001⎦⎤
其中,旋转角的正方向符合右手螺旋定则。
每次旋转是绕固定轴(一个固定参考系,比如世界坐标系)旋转,称为外旋。每次旋转是绕自身旋转之后的轴旋转,称为内旋。下图说明了内旋和外旋的区别。
此处注意乘法规则, 我们前面得到的矩阵是外旋矩阵, 外旋是左乘,这里的左乘, 并不是算数中的左乘, 很多认错认为 Y − X − Z \mathrm{Y}-\mathrm{X}-\mathrm{Z} Y−X−Z 的左乘,就应该是 R Y × R X × R Z R_{Y} \times R_{X} \times R_{Z} RY×RX×RZ, 这是错误的, 根据外旋 的规则, 应该是 R Z × R X × R Y R_{Z} \times R_{X} \times R_{Y} RZ×RX×RY, 不明白? 比如说我有一个向量 P ( X , Y , Z ) : \mathrm{P}(\mathrm{X}, \mathrm{Y}, \mathrm{Z}): P(X,Y,Z):
1、先绕 Y Y Y 旋转我们得到新坐标 P ( X 1 , Y 1 , Z 1 ) P(X 1, Y 1, Z 1) P(X1,Y1,Z1) 左乘指的是如下左乘:
[ X 1 Y 1 Z 1 ] = R Y × [ X Y Z ] \left[\begin{array}{l} X_{1} \\ Y_{1} \\ Z_{1} \end{array}\right]=R_{Y} \times\left[\begin{array}{l} X \\ Y \\ Z \end{array}\right] ⎣⎡X1Y1Z1⎦⎤=RY×⎣⎡XYZ⎦⎤
2、先绕 X X X 旋转我们得到新坐标 P(X2,Y2,Z2)
[ X 2 Y 2 Z 2 ] = R X × [ X 1 Y 1 Z 1 ] \left[\begin{array}{l} X_{2} \\ Y_{2} \\ Z_{2} \end{array}\right]=R_{X} \times\left[\begin{array}{l} X_{1} \\ Y_{1} \\ Z_{1} \end{array}\right] ⎣⎡X2Y2Z2⎦⎤=RX×⎣⎡X1Y1Z1⎦⎤
3、先绕 Z Z Z 旋转我们得到新坐标 P(X3,Y3,Z3)
[ X 3 Y 3 Z 3 ] = R Z × [ X 2 Y 2 Z 2 ] \left[\begin{array}{l} X_{3} \\ Y_{3} \\ Z_{3} \end{array}\right]=R_{Z} \times\left[\begin{array}{l} X_{2} \\ Y_{2} \\ Z_{2} \end{array}\right] ⎣⎡X3Y3Z3⎦⎤=RZ×⎣⎡X2Y2Z2⎦⎤
4、把公式展开
[ X 3 Y 3 Z 3 ] = R Z × ( R X × ( R Y × [ X Y Z ] ) ) = R Z × R X × R Y × [ X Y Z ] \left[\begin{array}{l} X_{3} \\ Y_{3} \\ Z_{3} \end{array}\right]=R_{Z} \times\left(R_{X} \times\left(R_{Y} \times\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right]\right)\right)=R_{Z} \times R_{X} \times R_{Y} \times\left[\begin{array}{l} X \\ Y \\ Z \end{array}\right] ⎣⎡X3Y3Z3⎦⎤=RZ×⎝⎛RX×⎝⎛RY×⎣⎡XYZ⎦⎤⎠⎞⎠⎞=RZ×RX×RY×⎣⎡XYZ⎦⎤
姿态角 | 符号 | 读法 | 坐标轴 |
---|---|---|---|
航向角 | ψ \psi ψ | psi | z |
俯仰角 | θ \theta θ | theta | y |
横滚角 | ϕ \phi ϕ | phi | x |
按照内旋方式, Z − Y − X Z-Y-X Z−Y−X旋转顺序 ( 指先绕自身轴Z,再绕自身轴Y,最后绕自身轴X ),可得旋转矩阵 ( 内旋是右乘 ):
R 1 = R 321 = R z ( ψ ) ∗ R y ( θ ) ∗ R x ( ϕ ) R 1= R_{321}=R_{z}(\psi) * R_{y}(\theta) * R_{x}(\phi) R1=R321=Rz(ψ)∗Ry(θ)∗Rx(ϕ)
按照外旋方式, X − Y − Z X-Y -Z X−Y−Z旋转顺序 ( ( ( 指先绕固定轴 X X X, 再绕固定轴Y,最后绕固定轴Z ) , 可得旋转矩阵 (外旋是左乘 ) :
R 2 = R 123 = R z ( ψ ) ∗ R y ( θ ) ∗ R x ( ϕ ) R 2=R_{123}=R_{z}(\psi) * R_{y}(\theta) * R_{x}(\phi) R2=R123=Rz(ψ)∗Ry(θ)∗Rx(ϕ)
故R1=R2,具体不在此证明,记住即可。这个结论说明ZYX顺序的内旋等价于XYZ顺序的外旋。
方向余弦表示一个向量的方向(姿态)我们可以用他在参考坐标系(地理坐标系)各个轴向的夹角的余弦来表示(及在各个轴的投影)。类似的 一个坐标系 可以看成是3个向量组成,所以三个向量分别在坐标轴上的投影可以用来表示一个坐标系与参考坐标系的关系。这总共9个方向余弦组成了一个三阶矩阵。
设方向余弦阵为北东地坐标系到载体坐标系的转换矩阵 C n b C_n^b Cnb其
运动方程为:
C ˙ n b = − ω C n b \begin{array}{c} \dot{C}_{n}^{b} = -\omega {C}_{n}^{b} \end{array} C˙nb=−ωCnb
式中, ω = [ p q r ] T \omega=[p q r]^T ω=[pqr]T为载体相对北东地坐标系的旋转角速度。方向余弦阵是一个
正交矩阵,其逆等于其转置,即 C n b − {C_n^b}^- Cnb−= C n b T {C_n^b}^T CnbT
三维空间中刚体(或者坐标系) 定点转动需要三个自由度,最简单的就是欧拉角表示。但是由于旋转顺序问题,欧拉角表示不唯一。根据坐标系绕其轴的旋转顺序不同,存在12种定义方式。 常用的顺序有2种:国内一般用312旋转顺序(先转Z,然后X, 最后Y);国外一般用321顺序(旋转Z,然后Y,最后X)。
参考系(导航系):(ENU)东北天
载体系(机体系):(XYZ)右前上
旋转顺序:Z-X-Y(312)
姿态顺序:(Yaw-Pitch-Roll)偏航 ψ \psi ψ-俯仰 θ \theta θ-横滚 ϕ \phi ϕ
旋转轴:内旋
姿态角 | 符号 | 读法 | 坐标轴 |
---|---|---|---|
航向角Yaw | ψ \psi ψ | psi | z |
俯仰角Pitch | θ \theta θ | theta | x |
横滚角Roll | ϕ \phi ϕ | phi | y |
R b n = R Z X Y = [ cosYaw* cosRoll − sinYaw ∗ sinRoll ∗ sinPitch -cosPitch ∗ sinYaw cosYaw ∗ sinRoll + cosRoll ∗ sinYaw ∗ sinPitch cosRoll ∗ sinYaw + cosYaw ∗ sinRoll ∗ sinPitch cosYaw ∗ cosPitch sinYaw ∗ sinRoll − cosYaw ∗ cosRoll ∗ sinPitch − cosPitch ∗ sinRoll sinPitch cosRoll ∗ cosPitch ] = [ cos ψ cos ϕ − sin ψ sin ϕ sin θ -cos θ sin ψ cos ψ sin ϕ + cos ϕ sin ψ sin θ cos ϕ sin ψ + cos ψ sin ϕ sin θ cos ψ cos θ sin ψ sin ϕ − cos ψ cos ϕ sin θ − cos θ sin ϕ sin θ cos ϕ cos θ ] \begin{array}{l} R_{b}^{n}=R_{Z X Y}\\ =\left[\begin{array}{ccc} \text { cosYaw* cosRoll }-\text { sinYaw } * \text { sinRoll } * \text { sinPitch } & \text { -cosPitch } * \text { sinYaw } & \text { cosYaw } * \text { sinRoll }+\text { cosRoll } * \text { sinYaw } * \text { sinPitch } \\ \text { cosRoll } * \text { sinYaw }+\text { cosYaw } * \text { sinRoll } * \text { sinPitch } & \text { cosYaw } * \text { cosPitch } & \text { sinYaw } * \text { sinRoll }-\text { cosYaw } * \text { cosRoll } * \text { sinPitch } \\ -\text { cosPitch } * \text { sinRoll } & \text { sinPitch } & \text { cosRoll } * \text { cosPitch } \end{array}\right]\\ =\left[\begin{array}{ccc} \text { cos$\psi$cos$\phi$ }-\text { sin$\psi$ } \text { sin$\phi$ } \text { sin $\theta$ } & \text { -cos $\theta$ } \text { sin$\psi$ } & \text { cos$\psi$ } \text { sin$\phi$}+\text { cos$\phi$ } \text { sin$\psi$ } \text { sin $\theta$ } \\ \text { cos$\phi$ } \text { sin$\psi$ }+\text { cos$\psi$ } \text { sin$\phi$ } \text { sin $\theta$ } & \text { cos$\psi$ } \text { cos $\theta$ } & \text { sin$\psi$ } \text { sin$\phi$ }-\text { cos$\psi$ } \text { cos$\phi$ } \text { sin $\theta$ } \\ -\text { cos $\theta$ } \text { sin$\phi$ } & \text { sin $\theta$ } & \text { cos$\phi$} \text { cos $\theta$ } \end{array}\right] \end{array} Rbn=RZXY=⎣⎡ cosYaw* cosRoll − sinYaw ∗ sinRoll ∗ sinPitch cosRoll ∗ sinYaw + cosYaw ∗ sinRoll ∗ sinPitch − cosPitch ∗ sinRoll -cosPitch ∗ sinYaw cosYaw ∗ cosPitch sinPitch cosYaw ∗ sinRoll + cosRoll ∗ sinYaw ∗ sinPitch sinYaw ∗ sinRoll − cosYaw ∗ cosRoll ∗ sinPitch cosRoll ∗ cosPitch ⎦⎤=⎣⎡ cosψcosϕ − sinψ sinϕ sin θ cosϕ sinψ + cosψ sinϕ sin θ − cos θ sinϕ -cos θ sinψ cosψ cos θ sin θ cosψ sinϕ+ cosϕ sinψ sin θ sinψ sinϕ − cosψ cosϕ sin θ cosϕ cos θ ⎦⎤
按内旋方式 ( 绕固定轴)的旋转矩阵为:
R 321 = R 1 = R z ( γ ) ∗ R y ( β ) ∗ R x ( α ) R_{321}=R 1=R_{z}(\gamma) * R_{y}(\beta) * R_{x}(\alpha) R321=R1=Rz(γ)∗Ry(β)∗Rx(α)
按外旋方式 ( 绕固定轴)的旋转矩阵为:
R 321 = R 2 = R x ( γ ) ∗ R y ( β ) ∗ R z ( α ) R_{321}=R 2=R_{x}(\gamma) * R_{y}(\beta) * R_{z}(\alpha) R321=R2=Rx(γ)∗Ry(β)∗Rz(α)
姿态角方向都遵循右手定则。
注意:旋转矩阵和坐标系无关,所以NED下的ZYX和ENU下的ZYX是一样的,唯一不同的就是,姿态的命名和正负方向不一样了,绕X轴变成了横滚,绕Y轴变成了俯仰,Z轴还是偏航。
很容易理解,形象直观;
表示更方便,只需要3个值(分别对应x、y、z轴的旋转角度);但按我的理解,它还是转换到了3个3*3的矩阵做变换,效率不如四元数;
旋转的次序无法确定
之前提到过这种方法是要按照一个固定的坐标轴的顺序旋转的,因此不同的顺序会造成不同的结果;
万向节锁
会造成万向节锁(Gimbal Lock)的现象。这种现象的发生就是由于上述固定坐标轴旋转顺序造成的。理论上,欧拉旋转可以靠这种顺序让一个物体指到任何一个想要的方向,但如果在旋转中不幸让某些坐标轴重合了就会发生万向节锁,这时就会丢失一个方向上的旋转能力,也就是说在这种状态下我们无论怎么旋转(当然还是要原先的顺序)都不可能得到某些想要的旋转效果,除非我们打破原先的旋转顺序或者同时旋转3个坐标轴。
不易在任意方向的旋转轴插值
由于万向节锁的存在,欧拉旋转无法实现球面平滑插值;
四元数是一个比较抽象的概念,他是站在四维空间的角度看待三维的旋转变化,比较难以理解。你可以简单的理解为,三维空间中的三轴旋转等价于绕某一个轴进行一个角度的旋转。
顾名思义, 四元数就是包含四个元的一种数, 它可表示为
Q = q 0 + q v = q 0 + q 1 i + q 2 j + q 3 k \boldsymbol{Q}=q_{0}+\boldsymbol{q}_{v}=q_{0}+q_{1} \boldsymbol{i}+q_{2} \boldsymbol{j}+q_{3} \boldsymbol{k} Q=q0+qv=q0+q1i+q2j+q3k
其中, q 0 , q 1 , q 2 q_{0}, q_{1}, q_{2} q0,q1,q2 和 q 3 q_{3} q3 都是实数, q 0 q_{0} q0 称为实部, q v = q 1 i + q 2 j + q 3 k \boldsymbol{q}_{v}=q_{1} \boldsymbol{i}+q_{2} \boldsymbol{j}+q_{3} \boldsymbol{k} qv=q1i+q2j+q3k 称为虚部。四元数可以看作是复数概念的扩充,有时也称其为超复数,当 q 2 = q 3 = 0 q_{2}=q_{3}=0 q2=q3=0 时四元数即退化为复数。四元数的虚数单位 i , j , k i, j, k i,j,k 之间满足如下乘法运算规则:
i ∘ i = j ∘ j = k ∘ k = − 1 i ∘ j = k , j ∘ k = i , k ∘ i = j , j ∘ i = − k , k ∘ j = − i , i ∘ k = − j } \left.\begin{array}{l} i \circ i=j \circ j=k \circ k=-1 \\ i \circ j=k, \quad j \circ k=i, \quad k \circ i=j, \quad j \circ i=-k, \quad k \circ j=-i, \quad i \circ k=-j \end{array}\right\} i∘i=j∘j=k∘k=−1i∘j=k,j∘k=i,k∘i=j,j∘i=−k,k∘j=−i,i∘k=−j}
即
i 2 = j 2 = k 2 = i j k = − 1 (哈密顿公式 ) \left.\boldsymbol{i}^{2}=\boldsymbol{j}^{2}=\boldsymbol{k}^{2}=i j \boldsymbol{k}=-1 \quad \text { (哈密顿公式 }\right) i2=j2=k2=ijk=−1 (哈密顿公式 )
其中,运算符“ ∘ \circ ∘ ”表示四元数的乘法运算,在不引起歧义的情况下可写成“・”符号或直接省 略。上式中第一行运算规则与复数中虚数的运算规则完全相同; 第二行运算规则与三维空间中坐标轴单位矢量的叉乘运算规则相同。四元数可以看作是四维空间中的一种数,但 因其虚部单位矢量的叉乘运算特点, 也可将四元数的虚数部分 q v = q 1 i + q 2 j + q 3 k \boldsymbol{q}_{v}=q_{1} \boldsymbol{i}+q_{2} \boldsymbol{j}+q_{3} \boldsymbol{k} qv=q1i+q2j+q3k 看成是在三 维空间中的映象 (image), 反之,一个三维矢量可以看作是一个零标量四元数。
由方向余弦阵式作恒等变形, 可得
C b i = I + sin ϕ ( u × ) + ( 1 − cos ϕ ) ( u × ) 2 = I + 2 sin ϕ 2 cos ϕ 2 ( u × ) + 2 sin 2 ϕ 2 ( u × ) 2 = I + 2 cos ϕ 2 ( sin ϕ 2 u × ) + 2 ( sin ϕ 2 u × ) 2 \begin{gathered} \boldsymbol{C}_{b}^{i}=\boldsymbol{I}+\sin \phi(\boldsymbol{u} \times)+(1-\cos \phi)(\boldsymbol{u} \times)^{2}=\boldsymbol{I}+2 \sin \frac{\phi}{2} \cos \frac{\phi}{2}(\boldsymbol{u} \times)+2 \sin ^{2} \frac{\phi}{2}(\boldsymbol{u} \times)^{2}= \\ \boldsymbol{I}+2 \cos \frac{\phi}{2}\left(\sin \frac{\phi}{2} \boldsymbol{u} \times\right)+2\left(\sin \frac{\phi}{2} \boldsymbol{u} \times\right)^{2} \end{gathered} Cbi=I+sinϕ(u×)+(1−cosϕ)(u×)2=I+2sin2ϕcos2ϕ(u×)+2sin22ϕ(u×)2=I+2cos2ϕ(sin2ϕu×)+2(sin2ϕu×)2
将上式的实部 cos ϕ 2 = q 0 \cos \frac{\phi}{2}=q_{0} cos2ϕ=q0 和虚部 u sin ϕ 2 = q v u \sin \frac{\phi}{2}=\boldsymbol{q}_{v} usin2ϕ=qv 代入 可得
C b i = I + 2 q 0 ( q v × ) + 2 ( q v × ) 2 = I + 2 q 0 [ 0 − q 3 q 2 q 3 0 − q 1 − q 2 q 1 0 ] + 2 [ 0 − q 3 q 2 q 3 0 − q 1 − q 2 q 1 0 ] 2 = [ 1 − 2 ( q 2 2 + q 3 2 ) 2 ( q 1 q 2 − q 0 q 3 ) 2 ( q 1 q 3 + q 0 q 2 ) 2 ( q 1 q 2 + q 0 q 3 ) 1 − 2 ( q 1 2 + q 3 2 ) 2 ( q 2 q 3 − q 0 q 1 ) 2 ( q 1 q 3 − q 0 q 2 ) 2 ( q 2 q 3 + q 0 q 1 ) 1 − 2 ( q 1 2 + q 2 2 ) ] = [ q 0 2 + q 1 2 − q 2 2 − q 3 2 2 ( q 1 q 2 − q 0 q 3 ) 2 ( q 1 q 3 + q 0 q 2 ) 2 ( q 1 q 2 + q 0 q 3 ) q 0 2 − q 1 2 + q 2 2 − q 3 2 2 ( q 2 q 3 − q 0 q 1 ) 2 ( q 1 q 3 − q 0 q 2 ) 2 ( q 2 q 3 + q 0 q 1 ) q 0 2 − q 1 2 − q 2 2 + q 3 2 ] \begin{aligned} &\boldsymbol{C}_{b}^{i}=\boldsymbol{I}+2 q_{0}\left(\boldsymbol{q}_{v} \times\right)+2\left(\boldsymbol{q}_{v} \times\right)^{2}=\boldsymbol{I}+2 q_{0}\left[\begin{array}{ccc} 0 & -q_{3} & q_{2} \\ q_{3} & 0 & -q_{1} \\ -q_{2} & q_{1} & 0 \end{array}\right]+2\left[\begin{array}{ccc} 0 & -q_{3} & q_{2} \\ q_{3} & 0 & -q_{1} \\ -q_{2} & q_{1} & 0 \end{array}\right]^{2}= \\ &{\left[\begin{array}{lll} 1-2\left(q_{2}^{2}+q_{3}^{2}\right) & 2\left(q_{1} q_{2}-q_{0} q_{3}\right) & 2\left(q_{1} q_{3}+q_{0} q_{2}\right) \\ 2\left(q_{1} q_{2}+q_{0} q_{3}\right) & 1-2\left(q_{1}^{2}+q_{3}^{2}\right) & 2\left(q_{2} q_{3}-q_{0} q_{1}\right) \\ 2\left(q_{1} q_{3}-q_{0} q_{2}\right) & 2\left(q_{2} q_{3}+q_{0} q_{1}\right) & 1-2\left(q_{1}^{2}+q_{2}^{2}\right) \end{array}\right]=} \\ &{\left[\begin{array}{ccc} q_{0}^{2}+q_{1}^{2}-q_{2}^{2}-q_{3}^{2} & 2\left(q_{1} q_{2}-q_{0} q_{3}\right) & 2\left(q_{1} q_{3}+q_{0} q_{2}\right) \\ 2\left(q_{1} q_{2}+q_{0} q_{3}\right) & q_{0}^{2}-q_{1}^{2}+q_{2}^{2}-q_{3}^{2} & 2\left(q_{2} q_{3}-q_{0} q_{1}\right) \\ 2\left(q_{1} q_{3}-q_{0} q_{2}\right) & 2\left(q_{2} q_{3}+q_{0} q_{1}\right) & q_{0}^{2}-q_{1}^{2}-q_{2}^{2}+q_{3}^{2} \end{array}\right]} \end{aligned} Cbi=I+2q0(qv×)+2(qv×)2=I+2q0⎣⎡0q3−q2−q30q1q2−q10⎦⎤+2⎣⎡0q3−q2−q30q1q2−q10⎦⎤2=⎣⎡1−2(q22+q32)2(q1q2+q0q3)2(q1q3−q0q2)2(q1q2−q0q3)1−2(q12+q32)2(q2q3+q0q1)2(q1q3+q0q2)2(q2q3−q0q1)1−2(q12+q22)⎦⎤=⎣⎡q02+q12−q22−q322(q1q2+q0q3)2(q1q3−q0q2)2(q1q2−q0q3)q02−q12+q22−q322(q2q3+q0q1)2(q1q3+q0q2)2(q2q3−q0q1)q02−q12−q22+q32⎦⎤
上式建立了单位四元数与方向余弦阵之间的关系,并且表明了单位四元数三角表示法式 的几何意义。
视频链接
四元数在线变换
坐标系与旋转顺序为:NED_ZYX
根据矩阵对应得到 :
[ Roll Pitch Yaw ] = [ arctan C 32 C 33 − arcsin C 31 arctan C 21 C 11 ] = [ arctan 2 ( q 2 q 3 + q 0 q 1 ) q 0 2 − q 1 2 − q 2 2 + q 3 2 − arcsin ( 2 ( q 1 q 3 − q 0 q 2 ) ) arctan 2 ( q 1 q 2 + q 0 q 3 ) q 0 2 + q 1 2 − q 2 2 − q 3 2 ] \left[\begin{array}{c} \text { Roll } \\ \text { Pitch } \\ \text { Yaw } \end{array}\right]=\left[\begin{array}{c} \arctan \frac{C 32}{C 33} \\ -\arcsin {C 31} \\ \arctan \frac{C 21}{C 11} \end{array}\right]=\left[\begin{array}{c} \arctan \frac{2\left(q_{2} q_{3}+q_{0} q_{1}\right)}{q_{0}^{2}-q_{1}^{2}-q_{2}^{2}+q_{3}^{2}} \\ -\arcsin \left(2\left(q_{1} q_{3}-q_{0} q_{2}\right)\right) \\ \arctan \frac{2\left(q_{1} q_{2}+q_{0} q_{3}\right)}{q_{0}^{2}+q_{1}^{2}-q_{2}^{2}-q_{3}^{2}} \end{array}\right] ⎣⎡ Roll Pitch Yaw ⎦⎤=⎣⎡arctanC33C32−arcsinC31arctanC11C21⎦⎤=⎣⎢⎡arctanq02−q12−q22+q322(q2q3+q0q1)−arcsin(2(q1q3−q0q2))arctanq02+q12−q22−q322(q1q2+q0q3)⎦⎥⎤
坐标系与旋转顺序为:ENU_ZXY
[ Roll Pitch Yaw ] = [ arctan − C 31 C 33 arcsin C 32 arctan − C 12 C 22 ] = [ arctan − 2 ( q 1 q 3 − q 0 q 2 ) q 0 2 − q 1 2 − q 2 2 + q 3 2 arcsin ( 2 ( q 2 q 3 + q 0 q 1 ) ) arctan − 2 ( q 1 q 2 − q 0 q 3 ) q 0 2 − q 1 2 + q 2 2 − q 3 2 ] \left[\begin{array}{c} \text { Roll } \\ \text { Pitch } \\ \text { Yaw } \end{array}\right]=\left[\begin{array}{c} \arctan \frac{-C 31}{C 33} \\ \arcsin C 32 \\ \arctan \frac{-C 12}{C 22} \end{array}\right]=\left[\begin{array}{c} \arctan \frac{-2\left(q_{1} q_{3}-q_{0} q_{2}\right)}{q_{0}^{2}-q_{1}^{2}-q_{2}^{2}+q_{3}^{2}} \\ \arcsin \left(2\left(q_{2} q_{3}+q_{0} q_{1}\right)\right) \\ \arctan \frac{-2\left(q_{1} q_{2}-q_{0} q_{3}\right)}{q_{0}^{2}-q_{1}^{2}+q_{2}^{2}-q_{3}^{2}} \end{array}\right] ⎣⎡ Roll Pitch Yaw ⎦⎤=⎣⎡arctanC33−C31arcsinC32arctanC22−C12⎦⎤=⎣⎢⎡arctanq02−q12−q22+q32−2(q1q3−q0q2)arcsin(2(q2q3+q0q1))arctanq02−q12+q22−q32−2(q1q2−q0q3)⎦⎥⎤
坐标系与旋转顺序为:NED_ZYX
q x = [ cos Roll 2 , sin Roll 2 , 0 , 0 ] q y = [ cos Pitch 2 , 0 , sin Pitch 2 , 0 ] q z = [ cos Y a w 2 , 0 , 0 , sin Y a w 2 ] q = q z × q y × q x \begin{gathered} q_{x}=\left[\cos \frac{\text { Roll }}{2}, \sin \frac{\text { Roll }}{2}, 0,0\right] \\ q_{y}=\left[\cos \frac{\text { Pitch }}{2}, 0, \sin \frac{\text { Pitch }}{2}, 0\right] \\ q_{z}=\left[\cos \frac{Y a w}{2}, 0,0, \sin \frac{Y a w}{2}\right] \\ q=q_{z} \times q_{y} \times q_{x} \end{gathered} qx=[cos2 Roll ,sin2 Roll ,0,0]qy=[cos2 Pitch ,0,sin2 Pitch ,0]qz=[cos2Yaw,0,0,sin2Yaw]q=qz×qy×qx
注意 : 这里的乘法不是普通的乘法规则,需要遵守四元数乘法规则,不同旋转顺序得到的结果也不一 样,这一点和矩阵乘法相似,最后得到四元数方程为:
欧拉角转四元数:
q = [ q 1 q 2 q 3 q 4 ] = [ cos ( Roll 2 ) cos ( Pitch 2 ) cos ( Yaw 2 ) + sin ( Roll 2 ) sin ( Pitch 2 ) sin ( Yaw 2 ) sin ( Roll 2 ) cos ( Pitch 2 ) cos ( Yaw 2 ) − cos ( Roll 2 ) sin ( Pitch 2 ) sin ( Yaw 2 ) cos ( Roll 2 ) sin ( Pitch 2 ) cos ( Yaw 2 ) + sin ( Roll 2 ) cos ( Pitch 2 ) sin ( Yaw 2 ) cos ( Roll 2 ) cos ( Pitch 2 ) sin ( Yaw 2 ) − sin ( Roll 2 ) sin ( Pitch 2 ) cos ( Yaw 2 ) ] q=\left[\begin{array}{l} q_{1} \\ q_{2} \\ q_{3} \\ q_{4} \end{array}\right]=\left[\begin{array}{l} \cos \left(\frac{\text { Roll }}{2}\right) \cos \left(\frac{\text { Pitch }}{2}\right) \cos \left(\frac{\text { Yaw }}{2}\right)+\sin \left(\frac{\text { Roll }}{2}\right) \sin \left(\frac{\text { Pitch }}{2}\right) \sin \left(\frac{\text { Yaw }}{2}\right) \\ \sin \left(\frac{\text { Roll }}{2}\right) \cos \left(\frac{\text { Pitch }}{2}\right) \cos \left(\frac{\text { Yaw }}{2}\right)-\cos \left(\frac{\text { Roll }}{2}\right) \sin \left(\frac{\text { Pitch }}{2}\right) \sin \left(\frac{\text { Yaw }}{2}\right) \\ \cos \left(\frac{\text { Roll }}{2}\right) \sin \left(\frac{\text { Pitch }}{2}\right) \cos \left(\frac{\text { Yaw }}{2}\right)+\sin \left(\frac{\text { Roll }}{2}\right) \cos \left(\frac{\text { Pitch }}{2}\right) \sin \left(\frac{\text { Yaw }}{2}\right) \\ \cos \left(\frac{\text { Roll }}{2}\right) \cos \left(\frac{\text { Pitch }}{2}\right) \sin \left(\frac{\text { Yaw }}{2}\right)-\sin \left(\frac{\text { Roll }}{2}\right) \sin \left(\frac{\text { Pitch }}{2}\right)\cos \left(\frac{\text { Yaw }}{2}\right)\\ \end{array}\right] q=⎣⎢⎢⎡q1q2q3q4⎦⎥⎥⎤=⎣⎢⎢⎡cos(2 Roll )cos(2 Pitch )cos(2 Yaw )+sin(2 Roll )sin(2 Pitch )sin(2 Yaw )sin(2 Roll )cos(2 Pitch )cos(2 Yaw )−cos(2 Roll )sin(2 Pitch )sin(2 Yaw )cos(2 Roll )sin(2 Pitch )cos(2 Yaw )+sin(2 Roll )cos(2 Pitch )sin(2 Yaw )cos(2 Roll )cos(2 Pitch )sin(2 Yaw )−sin(2 Roll )sin(2 Pitch )cos(2 Yaw )⎦⎥⎥⎤
坐标系与旋转顺序为:ENU_ZXY
z − x − y z-x-y z−x−y 旋转:
q x = [ cos Pitch 2 , sin Pitch 2 , 0 , 0 ] q y = [ cos Roll 2 , 0 , sin Roll 2 , 0 ] q z = [ cos Y a w 2 , 0 , 0 , sin Y a w 2 ] q = q z × q x × q y \begin{aligned} q_{x}=\left[\cos \frac{\text { Pitch }}{2}, \sin \frac{\text { Pitch }}{2}, 0,0\right] \\ q_{y}=\left[\cos \frac{\text { Roll }}{2}, 0, \sin \frac{\text { Roll }}{2}, 0\right] \\ q_{z}=\left[\cos \frac{Y a w}{2}, 0,0, \sin \frac{Y a w}{2}\right] \\ q=q_{z} \times q_{x} \times q_{y} \end{aligned} qx=[cos2 Pitch ,sin2 Pitch ,0,0]qy=[cos2 Roll ,0,sin2 Roll ,0]qz=[cos2Yaw,0,0,sin2Yaw]q=qz×qx×qy
注意这里的乘法不是普通的乘法规则,需遵守四元数乘法规则,不同旋转顺序得到的结果也不 一样,这一点和矩阵乘法相似,最后得到四元数方程为:
q = [ q 1 q 2 q 3 q 4 ] = [ cos ( pitch 2 ) cos ( roll 2 ) cos ( yaw 2 ) − sin ( pitch 2 ) sin ( roll 2 ) sin ( yaw 2 ) cos ( roll 2 ) cos ( yaw 2 ) sin ( pitch 2 ) − cos ( pitch 2 ) sin ( roll 2 ) sin ( yaw 2 ) cos ( pitch 2 ) cos ( yaw 2 ) sin ( roll 2 ) + cos ( roll 2 ) sin ( pitch 2 ) sin ( yaw 2 ) cos ( pitch 2 ) cos ( roll 2 ) sin ( yaw 2 ) + cos ( yaw 2 ) sin ( pitch 2 ) sin ( r o l l 2 } ] q=\left[\begin{array}{l} q_{1} \\ q_{2} \\ q_{3} \\ q_{4} \end{array}\right]=\left[\begin{array}{l} \cos \left(\frac{\text { pitch }}{2}\right) \cos \left(\frac{\text { roll }}{2}\right) \cos \left(\frac{\text { yaw }}{2}\right)-\sin \left(\frac{\text { pitch }}{2}\right) \sin \left(\frac{\text { roll }}{2}\right) \sin \left(\frac{\text { yaw }}{2}\right) \\ \cos \left(\frac{\text { roll }}{2}\right) \cos \left(\frac{\text { yaw }}{2}\right) \sin \left(\frac{\text { pitch }}{2}\right)-\cos \left(\frac{\text { pitch }}{2}\right) \sin \left(\frac{\text { roll }}{2}\right) \sin \left(\frac{\text { yaw }}{2}\right) \\ \cos \left(\frac{\text { pitch }}{2}\right) \cos \left(\frac{\text { yaw }}{2}\right) \sin \left(\frac{\text { roll }}{2}\right)+\cos \left(\frac{\text { roll }}{2}\right) \sin \left(\frac{\text { pitch }}{2}\right) \sin \left(\frac{\text { yaw }}{2}\right) \\ \cos \left(\frac{\text { pitch }}{2}\right) \cos \left(\frac{\text { roll }}{2}\right) \sin \left(\frac{\text { yaw }}{2}\right)+\cos \left(\frac{\text { yaw }}{2}\right) \sin \left(\frac{\text { pitch }}{2}\right) \sin \left(\frac{r o l l}{2}\right\} \end{array}\right] q=⎣⎢⎢⎡q1q2q3q4⎦⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡cos(2 pitch )cos(2 roll )cos(2 yaw )−sin(2 pitch )sin(2 roll )sin(2 yaw )cos(2 roll )cos(2 yaw )sin(2 pitch )−cos(2 pitch )sin(2 roll )sin(2 yaw )cos(2 pitch )cos(2 yaw )sin(2 roll )+cos(2 roll )sin(2 pitch )sin(2 yaw )cos(2 pitch )cos(2 roll )sin(2 yaw )+cos(2 yaw )sin(2 pitch )sin(2roll}⎦⎥⎥⎥⎥⎥⎥⎤