捷联惯导数值更新算法-姿态更新+速度更新+位置更新

这篇具有很好参考价值的文章主要介绍了捷联惯导数值更新算法-姿态更新+速度更新+位置更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

姿态更新

捷联惯导数值更新算法通常可划分为姿态、速度和位置更新三部分﹐姿态更新算法核心,其求解精度对整个捷联惯导的精度起着决定性的作用。目前主流的姿态更新求解方法是,先使用陀螺角增量的多子样采样计算等效旋转矢量,补偿转动不可交换误差,再使用等效旋转矢量计算姿态更新四元数。

地球自转角速度和牵连角速度

在考虑n系相对于i系的旋转时,一定要考虑这两部分:地球自转引起的n系旋转,以及惯导系统在地球表面附近移动因地球表面弯曲而引起的n系旋转
捷联惯导数值更新算法-姿态更新+速度更新+位置更新

更新姿态

捷联惯导数值更新算法-姿态更新+速度更新+位置更新
姿态更新可采用四元数连乘来实现
也可由严老师书中提到的方向余弦矩阵计算得到
捷联惯导数值更新算法-姿态更新+速度更新+位置更新

速度更新

比力方程

比力方程是在地球表面附近进行惯性导航解算的基本方程
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
上式后两项可统称为有害加速度。比力方程式表明,只有在加速度计输出中扣除有害加速度后,才能获得运载体在导航系下的几何运动加速度,对加速度积分一次可得速度,再积分一次可得位置。因此,比力方程是惯导解算的基本方程。

PSINS源码

严老师在PSINS中也给出了相应的代码,计算了有害加速度

function eth = ethupdate(eth, pos, vn)
% Update the Earth related parameters, much faster than 'earth'.
%
% Prototype: eth = ethupdate(eth, pos, vn)
% Inputs: eth - input earth structure array
%         pos - geographic position [lat;lon;hgt]
%         vn - velocity
% Outputs: eth - parameter structure array
%
% See also  ethinit, earth.

% Copyright(c) 2009-2014, by Gongmin Yan, All rights reserved.
% Northwestern Polytechnical University, Xi An, P.R.China
% 23/05/2014
    if nargin==2,  vn = [0; 0; 0];  end
    eth.pos = pos;  eth.vn = vn;
    eth.sl = sin(pos(1));  eth.cl = cos(pos(1));  eth.tl = eth.sl/eth.cl; 
    eth.sl2 = eth.sl*eth.sl;  sl4 = eth.sl2*eth.sl2;
    sq = 1-eth.e2*eth.sl2;  RN = eth.Re/sqrt(sq); 
    eth.RNh = RN+pos(3);  eth.clRNh = eth.cl*eth.RNh;
    eth.RMh = RN*(1-eth.e2)/sq+pos(3);
%     eth.wnie = [0; eth.wie*eth.cl; eth.wie*eth.sl];
    eth.wnie(2) = eth.wie*eth.cl; eth.wnie(3) = eth.wie*eth.sl;
%     eth.wnen = [-vn(2)/eth.RMh; vn(1)/eth.RNh; vn(1)/eth.RNh*eth.tl];
    eth.wnen(1) = -vn(2)/eth.RMh; eth.wnen(2) = vn(1)/eth.RNh; eth.wnen(3) = eth.wnen(2)*eth.tl;
%     eth.wnin = eth.wnie + eth.wnen;
    eth.wnin(1) = eth.wnie(1) + eth.wnen(1); eth.wnin(2) = eth.wnie(2) + eth.wnen(2); eth.wnin(3) = eth.wnie(3) + eth.wnen(3); 
%     eth.wnien = eth.wnie + eth.wnin;
    eth.wnien(1) = eth.wnie(1) + eth.wnin(1); eth.wnien(2) = eth.wnie(2) + eth.wnin(2); eth.wnien(3) = eth.wnie(3) + eth.wnin(3);
%     eth.gn = [0;0;-eth.g];
    eth.g = eth.g0*(1+5.27094e-3*eth.sl2+2.32718e-5*sl4)-3.086e-6*pos(3); % grs80
    eth.gn(3) = -eth.g;
%     eth.gcc = eth.gn - cros(eth.wnien,vn); % Gravitational/Coriolis/Centripetal acceleration
%     eth.gcc =  [ eth.wnien(3)*vn(2)-eth.wnien(2)*vn(3);  % faster than previous line
%                  eth.wnien(1)*vn(3)-eth.wnien(3)*vn(1);
%                  eth.wnien(2)*vn(1)-eth.wnien(1)*vn(2)+eth.gn(3) ];
    eth.gcc(1) = eth.wnien(3)*vn(2)-eth.wnien(2)*vn(3);
    eth.gcc(2) = eth.wnien(1)*vn(3)-eth.wnien(3)*vn(1);
    eth.gcc(3) = eth.wnien(2)*vn(1)-eth.wnien(1)*vn(2)+eth.gn(3);

双子样假设

本篇博文以双子样算法为例,推导速度更新方程。
双子样假设:[tk-2,tk]时段内角速度观测量和比力观测量均随时间线性变化。如图2所示,在两个采样区间内,将实际的角速度和比力(黑色曲线)近似为随时间线性变化(曲线简化为直线,红色虚线,黑色曲线下的积分面积为惯性传感器实际输出的角增量或速度增量)。上式表明,线性假设的系数 a、b、c、d不但决定了角速度和比力的大小,同时还决定了其方向,也即线性假设也考虑了角速度向量和比力向量的方向变化。
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
如下是双子样假设下的角速度和比力随时间变化函数
捷联惯导数值更新算法-姿态更新+速度更新+位置更新

速度更新算法

速度更新中,有两项积分非常重要,一个是比力积分项,另一个就是重力/哥式积分项
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
那么可推导出双子样速度更新公式:
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
对于中间时刻(前一时刻和当前时刻的中间时刻)的速度求解,可采用线性外推方法:
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
对位置也可进行如上外推。

划桨误差补偿算法

下式描述的运动与现实生活划船中的划桨运动状况非常相似:一方面桨绕船身的横轴做往复角运动,另一方面船身连带船桨沿纵轴做间歇性加速线运动。可见,划船过程中船桨同时存在周期性的角运动和线运动,因此形象地称下式所描述的运动为划桨运动(sculling motion)。
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
推导可得N子样划桨误差补偿算法:
捷联惯导数值更新算法-姿态更新+速度更新+位置更新

PSINS源码

严老师同样在源码中给出了这个算法:

 if coneoptimal==0
                scullm = [0, 0, 0];
            else
                scullm = 1/12*(cros(glv.wm_st,vm)+cros(glv.vm_st,wm));  glv.wm_st = wm; glv.vm_st = vm;
            end
        else
            vmm = sum(vm,1);
            if coneoptimal==0
                sm = glv.cs(n-1,1:n-1)*vm(1:n-1,:);
                scullm = (cros(cm,vm(n,:))+cros(sm,wm(n,:)));
            else  % else: using polynomial fitting sculling compensation method
                scullm = scullpolyn(wm, vm);
            end
        end

其中

 sm = glv.cs(n-1,1:n-1)*vm(1:n-1,:);
 scullm = (cros(cm,vm(n,:))+cros(sm,wm(n,:)));

这一块代码,为N子样划桨误差补偿算法的实现

位置更新

计算公式

可采用严老师书中的公式计算
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
也可参考牛老师的讲义中的公式
捷联惯导数值更新算法-姿态更新+速度更新+位置更新
但需要注意的是,不同的公式,对应的不同的b系得定义,严老师定义东北天为正,牛老师定位北东地为正

PSINS源码

严老师在源码中也给出了相应得矩阵形式文章来源地址https://www.toymoban.com/news/detail-401994.html

ins.Mpv = [0, 1/ins.eth.RMh, 0; 1/ins.eth.clRNh, 0, 0; 0, 0, 1];
ins.MpvCnb = ins.Mpv*ins.Cnb;  ins.Mpvvn = ins.Mpv*ins.vn; 

到了这里,关于捷联惯导数值更新算法-姿态更新+速度更新+位置更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【leetcode题解C++】34.在排序数值中查找第一个和最后一个位置

    给你一个按照非递减顺序排列的整数数组  nums ,和一个目标值  target 。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值  target ,返回  [-1, -1] 。 你必须设计并实现时间复杂度为  O(log n)  的算法解决此问题。 示例 1: 示例 2: 示例 3: 思路

    2024年01月16日
    浏览(40)
  • STM32CubeMX 直流电机串级PID位置速度控制、HAL库、cubemx、PID、串级PID、位置控制、速度控制、双环控制

    提示:本文章的串级PID位置速度控制,是在前两篇文章速度控制,位置控制的基础上实现的,这一章节中不需要额外的cubemx的配置,只需要写简单的代码即可,复杂的地方在于串级pid的调试过程。 pid是我们在学习单片机中首先要学会的控制算法,而串级pid又是在单pid的基础上

    2024年02月14日
    浏览(53)
  • 位置环速度环串级位置式PID实现全过程解析(详细)

    电机型号:MD36N行星减速电机_AB两相光电编码器霍尔编码器 电机参数: 单片机型号:STM32F429IG,keil 程序最终功能:串级位置式PID反复调节电机,使得电机可以在一定范围内精准任意停靠在某个位置,比如电机控制目标在圆形轨道转动,就可以实现在固定角度的位置停靠,四

    2023年04月08日
    浏览(41)
  • STM32步进闭环控制、速度控制(张大头Emm_V4.2驱动器)速度控制 角度控制 位置控制

    本文继续简述使用stm32对张大头步进电机进行速度控制和角度控制。 张大头与stm32的硬件连接请看这个 要注意哈!usart模式要先通过张大头的小屏幕进行设置的哈!!要配置好波特率和地址。这些在张大头提供的pdf说明文档里面都有写! 基础配置不说了,由于我们需要用stm32的

    2024年02月14日
    浏览(52)
  • (六)【平衡小车制作】位置式PID、直立环与速度环编程

    本篇文章我将针对 位置式PID算法 、 直立环 、 速度环 等的编程进行详细的讲解,让每位小伙伴能够对这三个概念的编程逻辑有更加清晰的理解。 1.中文公式  直立环输出=Kp1×角度偏差+Kd×角度偏差的微分  // 角度偏差=真实角度-期望角度 2.英文公式  直立环PD控制器:Kp×

    2024年02月03日
    浏览(55)
  • nav_msgs/Odometry.h发布机器人位姿(位置和方向)和线速度、角速度

    在 ROS(Robot Operating System)中, #include nav_msgs/Odometry.h 是一个用于处理和发布里程计数据的头文件。这个头文件定义了 nav_msgs/Odometry 消息类型,它广泛用于在 ROS 中表示机器人或其他移动实体的运动学和位置信息。以下是 nav_msgs/Odometry 消息类型的一些主要功能和组成部分:

    2024年02月12日
    浏览(38)
  • 解决Ubuntu下载速度或更新速度缓慢问题

    1、备份原来的源文件 2、新建一个sources.list文件 3、更新apt软件源 4、修改损坏的依赖包,卸载出错的包,重新下载新的正确的版本 5、更新 Ubuntu 系统自带的源文件,都是国外的源网址,在国内下载安装升级源或者依赖的时候,都比较慢,更换国内的源地址,轻松搞定此问题

    2024年02月06日
    浏览(68)
  • 人工智能/计算机期刊会议测评(持续更新...更新速度取决于我水论文的速度...)

    AI领域的旗舰刊,人家都叫AI了好叭。身边有小伙伴半年给了大修,三个审稿人,其中有两个看的非常非常详细,问了许多问题,要加一堆实验(我觉得就是相当于重做了)。大修审稿周期给了半年(我算是知道为什么顶刊都这么慢了…)感觉也没有想象中的那么难,我觉得我

    2024年02月02日
    浏览(57)
  • 小白从零开始:STM32双闭环(速度环、位置环)电机控制(硬件篇)

    小白从零开始:STM32平铺式双闭环(速度环、位置环)电机控制(硬件篇) 小白从零开始:STM32双闭环(速度环、位置环)电机控制(软件篇) 小白从零开始:小程序阿里云平台控制stm32(硬件篇) 杭州研究生手把手教你搞不定STM32 使用工具: 1.PCB设计: 立创EDA+嘉立创 2.硬件

    2024年02月16日
    浏览(39)
  • 【电机控制】小白从零开始:STM32双闭环(速度环、位置环)电机控制(软件篇)

    小白从零开始:STM32双闭环(速度环、位置环)电机控制(软件篇) 小白从零开始:STM32双闭环(速度环、位置环)电机控制(硬件篇) 小白从零开始:STM32双闭环(速度环、位置环)电机控制(软件篇) 杭州研究生手把手教你搞不定STM32 使用工具: 1.语言:C语言 2.代码编译

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包