PSINS中的各类更新代码解析

2023-12-26 14:04

本文主要是介绍PSINS中的各类更新代码解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、姿态更新

更新原理

微分方程

因为离散化比较复杂,所以采用矩阵链转换

更新也就是找到前后时刻的关系。下面是推导逻辑,

 PSINS中的涉及到的代码

需要注意的是叫增量采用的增量时刻不同,n系下是用【T/2,T】的姿态表示【T,2T】的姿态变化;所以rv2q()中使用的是T/2时刻的角速率*T/2 代表【T/2,T】的角增量-eth.wnin*nts。

b下的角增量直接用的是ins更新的时候【0  T】的角增量imu.phim。

2、速度更新

比力方程

既然是时间相关的更新,对速度微分积分,t-1 ----t的积分

所以速度更新的问题就变成了求解比力产生的速度增量,以及有害加速度产生的速度增量。

有害加速度,一般认为因为其引起的导航坐标系旋转和重力矢量变化都是很小的,所以在计算时间内,选择中间时刻的值代表整个时间段的值,因次可以直接用有害加速度gcc*时间差dt,得到有害加速度产生的速度增量。

那么比力的速度增量,其实按照严老师的讲义,此处省略。

小角模型

实际编码中,是先将dt (上式的T)时间段的速度增量已经得到了,对应的代码中的imu.dvbm,注意是b系下的比力的速度增量,通过下式,速度增量/时间 == 速度变化率,也就是平均加速度,得到dt时间段内的fb,

然后利用  

fn = qnb*fb; 这一行代码是b下的加速度转到n下,但是这里的qnb其实上  qn(t-1)b(t-1)

那么原则上fn(t)应该是下式中的表达式,代码实际上是没有第三个Cb(t-1)(t)的矩阵的,fb已经用的是均值了上面已经求解了,所以不存在所谓的b下的旋转,用了fb平均。

an = rv2q(-eth.wnin*nts2)*fn+eth.gcc; 转换后的n下的fn+有害加速度gcc 得到最终的加速度an 

an =  rv2q(-eth.wnin*nts2)*qnb*fb + eth.gcc  

然后n下的速度增量求出

vn1 = vn + an*nts;

对比公式和代码,发现公式是用速度增量直接表达,而代码中用的是加速度和时间的关系去表达,所以这里框住的速度增量其实就是imu.dvbm,

(rv2q(-eth.wnin*nts2)*qnb*fb *dt     与上图是等价的,fb *dt  就是上图框住的增量。

3、位置更新

微分方程

时间积分

系数矩阵MPv用1/2时刻代替(在地球参数更新的时候可得到),速度是求两个时刻的速度求均值,然后位置增量再乘以T,合起来就是上式中的T/2

对应的代码

这篇关于PSINS中的各类更新代码解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/539700

相关文章

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

MyBatis中$与#的区别解析

《MyBatis中$与#的区别解析》文章浏览阅读314次,点赞4次,收藏6次。MyBatis使用#{}作为参数占位符时,会创建预处理语句(PreparedStatement),并将参数值作为预处理语句... 目录一、介绍二、sql注入风险实例一、介绍#(井号):MyBATis使用#{}作为参数占位符时,会

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.