组合导航——东北天与北东地坐标系

本人也是新学习组合导航,有问题请指出,大家一起学习!

东北天IMU与北东地IMU输出对比

手头正好有两个不同坐标系的IMU,想通过对比输出来学习二者有什么不同,当然,我也不清楚是不是同一坐标系IMU输出方向都是一致的,所以这里只能作为一个参考。

东北天(ENU)

方向:x轴指向东,y轴指向北,z轴指向天;
加速度:沿轴方向做加速运动,加速度>0;静止不动时,z轴加速度=+g;
角速度:各轴按右手定则方向旋转,角速度>0;
欧拉角:欧拉角增加方向与角速度>0方向一致。

北东地(NED)

方向:x轴指向北,y轴指向东,z轴指向地;
加速度:沿轴方向做加速运动,加速度>0;静止不动时,z轴加速度=-g;
角速度:各轴按右手定则方向旋转,角速度>0;
欧拉角:欧拉角增加方向与角速度>0方向一致。

由输出结果可知,二者的加速度在沿轴向>0;角速度>0方向和欧拉角增长的方向均满足右手定则。

NED转换到ENU

根据上位机提供的角度旋转,可以通过如下方式将NED转换到ENU

在严恭敏老师的PSINS代码中,有相关转换方式,根据咱们的需求,将dirstr设置为’FRD’,
wvm0为IMU数据:[wx,wy,wz,ax,ay,az]。
也就是分别交换x,y轴角速度和加速度,z轴不变。

function [wvm, Dir] = imurfu(wvm0, dirstr)
% In PSINS toolbox, Right-Front-Up orientations are selected as body
% frame axes X-Y-Z respectively. Call this function when the user's 
% SIMU outputs does not follow the above convention.
%
% Prototype: [wvm, Dir] = imurfu(wvm0, dirstr)
% Inputs: wvm0 - the user's raw SIMU data
%         dirstr - raw SIMU X-Y-Z orientations including three characters, 
%               the orientation abbreviations are:
%               'U': Upper; 'D': Down; 'R': Right; 'L': Left; 
%               'F': Front; 'B': Back; 'E': East; 'W': West; 'N': North;
%               'S': South.
% Outputs: wvm - SIMU data with X-Y-Z pointing to R-F-U respectively,
%               i.e. wvm(:,1:6) = wvm0(:,1:6)*blkdiag(Dir',Dir').
%          Dir - see above, or Dir==Cnb, wm=Cnb*wm0.
%
% Example:
%         [wvm1, Dir] = imurfu([], 'flu')
%         wvm2 = [1 2 3 1 2 3]*blkdiag(Dir',Dir')
%
% See also  imuidx, wierfu, imurot, imuresample, insupdate, trjsimu, attrfu.

% Copyright(c) 2009-2014, by Gongmin Yan, All rights reserved.
% Northwestern Polytechnical University, Xi An, P.R.China
% 02/06/2009
    if isempty(wvm0), wvm0 = [1,2,3, 1,2,3]; end
    wvm = wvm0;    Dir = zeros(3);
    clm = size(wvm, 2);
    for k=1:3
        if upper(dirstr(k))=='X', return; end  % do nothing
        switch(upper(dirstr(k)))
            case {'R','E'}
                wvm(:,1) = wvm0(:,k);  if clm>=6, wvm(:,4) = wvm0(:,k+3); end
                Dir(:,k) = [1; 0; 0];
            case {'L','W'}
                wvm(:,1) = -wvm0(:,k); if clm>=6, wvm(:,4) = -wvm0(:,k+3); end
                Dir(:,k) = [-1; 0; 0];
            case {'F','N'}
                wvm(:,2) = wvm0(:,k);  if clm>=6, wvm(:,5) = wvm0(:,k+3); end
                Dir(:,k) = [0; 1; 0];
            case {'B','S'}
                wvm(:,2) = -wvm0(:,k); if clm>=6, wvm(:,5) = -wvm0(:,k+3); end
                Dir(:,k) = [0; -1; 0];
            case {'U'}
                wvm(:,3) = wvm0(:,k);  if clm>=6, wvm(:,6) = wvm0(:,k+3); end
                Dir(:,k) = [0; 0; 1];
            case {'D'}
                wvm(:,3) = -wvm0(:,k); if clm>=6, wvm(:,6) = -wvm0(:,k+3); end
                Dir(:,k) = [0; 0; -1];
           otherwise
                error('Orientation character string error !');
        end
    end
    if(norm(cross(Dir(:,1),Dir(:,2))-Dir(:,3))~=0)
        error('Not right hand frame !');
    end

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值