组合导航——欧拉角、姿态阵、四元数的转换关系

公式来源于西北工业大学严恭敏老师的《捷联惯导算法与组合导航原理》
代码来自西北工业大学严恭敏老师的PSINS开源代码

欧拉角、姿态阵、四元数的转换关系

Alt

说明

常用载体的姿态描述为:航向角北偏东为正(俯视),俯仰角抬头为正,横滚角右横滚为正(后往前看);
载体欧拉角本质上按物理轴向定义,一般依次按 立轴下->横轴右->纵轴前 进行旋转;

Alt
所以,在选取东北天地理坐标系右前上载体坐标系,按上述进行旋转,旋转顺序为(-3)1 2,即对应航向角,俯仰角、横滚角。

但在导航系为东北天时,航向角旋转方式与右手定则不符,故设航向角北偏西为正,下面所有公式对应的旋转顺序为 312,即航向角北偏西为正,俯仰角抬头正、横滚角右滚正

欧拉角到姿态阵

计算公式

东北天312下,地理坐标系(这里是导航坐标系n系)到载体坐标系(b系)的方向余弦矩阵
在这里插入图片描述
关于方向余弦阵:这里新手容易混淆一个概念,就是坐标变换坐标系变换,这两者是相反的,方向余弦阵主要是反映坐标系的变换。

代码

function [Cnb, Cnbr] = a2mat(att)
% Input: att - att=[pitch; roll; yaw] in radians
% 这里输入是[俯仰,横滚,航向],单位是弧度制
% Outputs: Cnb - DCM from navigation-frame(n) to body-frame(b), in yaw->pitch->roll
%                (3-1-2) rotation sequence
%          Cnbr - DCM in yaw->roll->pitch (3-2-1) rotation sequence

%         解释:
%			Cnb表示按3-1-2方式旋转
%		   Cnbr表示按3-2-1方式旋转
    s = sin(att); c = cos(att);
    si = s(1); sj = s(2); sk = s(3); 
    ci = c(1); cj = c(2); ck = c(3);
    Cnb = [ cj*ck-si*sj*sk, -ci*sk,  sj*ck+si*cj*sk;
            cj*sk+si*sj*ck,  ci*ck,  sj*sk-si*cj*ck;
           -ci*sj,           si,     ci*cj           ];
    if nargout==2  % dual Euler angle DCM
        Cnbr = [ cj*ck, si*sj*ck-ci*sk, ci*sj*ck+si*sk;
                 cj*sk, si*sj*sk+ci*ck, ci*sj*sk-si*ck;
                -sj,    si*cj,          ci*cj            ];
    end
    

姿态阵到欧拉角

欧拉角到四元数

计算公式

Alt
这里的c,s指的是 cos、sin

代码

function qnb = a2qua(att)
% Input: att - att=[pitch; roll; yaw] in radians
% Output: qnb - attitude quaternion
% 这里输入是[俯仰,横滚,航向],单位是弧度制
    att2 = att/2;
    s = sin(att2); c = cos(att2);
    sp = s(1); sr = s(2); sy = s(3); 
    cp = c(1); cr = c(2); cy = c(3); 
    qnb = [ cp*cr*cy - sp*sr*sy;
            sp*cr*cy - cp*sr*sy;
            cp*sr*cy + sp*cr*sy;
            cp*cr*sy + sp*sr*cy ];

运行结果

下图是我从IMU模块采集来的数据,该IMU可以输出每一帧的角速度,加速度,欧拉角和四元数
( 采集的数据小数点后还有多位没显示完全 )
7-8列分别对应 [横滚,俯仰,航向]
10-13列对应四元数
Alt
输入姿态角得到四元数,与上表四元数吻合
在这里插入图片描述

四元数到欧拉角

未完待续

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值