PSINS工具箱,MATLAB例程,仅以速度为观测量的SINS/GNSS组合导航(滤波方式为EKF)

在这里插入图片描述

基于【PSINS工具箱】,提供一个MATLAB例程,仅以速度为观测量的SINS/GNSS组合导航(滤波方式为EKF)

文章目录

  • 工具箱
  • 程序简述
    • 运行结果
  • 代码
  • 程序讲解
    • MATLAB 代码讲解:速度观测的 EKF 实现
      • 代码结构与功能
      • EKF滤波过程
      • 结果处理与可视化
  • 总结

工具箱

本程序需要在安装工具箱后使用,工具箱是开源的,链接:http://www.psins.org.cn/kydm

程序简述

原有例程的 153 153 153组合导航是 S I N S SINS SINS/ G P S GPS GPS下的位置观测或位置+速度观测,本文所述的代码是仅三轴位置观测的,使用EKF来滤波。
最后输出速度对比、速度误差、姿态对比、姿态误差、位置对比、位置误差等图片。如下:

运行结果

  • 三轴AVP曲线:
    请添加图片描述

  • 三轴速度误差曲线:
    请添加图片描述

  • 滤波后 X X X轴速度累积概率分布函数:
    请添加图片描述

代码

部分代码如下:

% 【PSINS】速度观测的153,EKF
% Evand©2024
% 2024-4-2/Ver1
% 2024-6-3/Ver2:优化绘图标注
% 2024-11-05/Ver3:优化绘图标注、更新联系方式

% 清空工作空间,清除命令窗口,关闭所有图形窗口
clear; clc; close all;

rng(0); % 设置随机数种子为0,以确保结果可重复
glvs % 调用全局变量设置
psinstypedef(153); % 设置PSINS类型

% 读取轨迹文件
trj = trjfile('trj10ms.mat');

% 初始设置
[nn, ts, nts] = nnts(2, trj.ts); % 获取时间序列的参数
% imuerr = imuerrset(0.03, 100, 0.001, 5); % (注释掉的)设置IMU误差参数
imuerr = imuerrset(8, 14, 0.18, 57); % 设置IMU误差参数
imu = imuadderr(trj.imu, imuerr);  % 对IMU数据添加误差
% imuplot(imu); % (注释掉的)绘制IMU数据

% 设置初始姿态误差
davp0 = avperrset([1; 1; 10]*60, 0.1, [1; 1; 3]);

%% 速度观测EKF

剩余代码下载链接:https://gf.bilibili.com/item/detail/1106602012

程序讲解

这段 MATLAB 代码实现了基于 EKF的速度观测处理,主要用于模拟和分析惯性导航系统(INS)与全球导航卫星系统(GNSS)结合的情况。以下是对代码的详细介绍:

MATLAB 代码讲解:速度观测的 EKF 实现

这段 MATLAB 代码实现了使用扩展卡尔曼滤波器(EKF)进行速度观测的功能,目的是通过融合惯性导航系统(INS)和GNSS数据来提高定位精度。以下是对代码的详细讲解。

代码结构与功能

  1. 引言与准备工作

    • 代码开头部分包含了作者信息和版本控制,清晰地标明了代码的目的和更新记录。
    • 通过 clear; clc; close all; 清理工作环境,确保运行时不会受到之前运行的影响。
  2. 随机数种子的设置

    • rng(0); 用于设置随机数生成器的种子,以确保每次运行代码时结果的一致性。
  3. 全局变量和PSINS类型设置

    • glvs 函数调用全局变量设置,通常用于初始化一些全局参数。
    • psinstypedef(153); 定义了特定类型的PSINS(组合导航系统),为后续的导航计算做好准备。
  4. 数据读取

    • trj = trjfile('trj10ms.mat'); 读取包含IMU和GNSS数据的轨迹文件。
  5. 初始设置

    • [nn, ts, nts] = nnts(2, trj.ts); 获取时间序列的参数,nn 是时间步长,ts 是时间序列。
    • imuerr = imuerrset(8, 14, 0.18, 57); 设置IMU的误差参数,这些数值影响后续的滤波精度。
    • imu = imuadderr(trj.imu, imuerr); 向IMU数据添加误差,用于模拟真实环境中的噪声。
  6. 姿态误差设置

    • davp0 = avperrset([1; 1; 10]*60, 0.1, [1; 1; 3]); 初始化姿态误差参数,为后续的INS初始化提供基线。

EKF滤波过程

  1. INS初始化

    • ins = insinit(avpadderr(trj.avp0, davp0), ts); 初始化INS的状态,包括位置、速度和姿态。
  2. 卡尔曼滤波器初始化

    • kf = kfinit(ins, davp0, imuerr, rk); 初始化卡尔曼滤波器,设置状态、误差模型和观测噪声。
    • 之后设置了滤波器的过程噪声和观测噪声的协方差矩阵。
  3. 主循环

    • 代码使用循环遍历IMU数据,进行状态更新和滤波处理:
      • wvm = imu(k:k1, 1:6); 从IMU数据中提取当前时间窗口的观测值。
      • ins = insupdate(ins, wvm); 更新INS状态。
      • kf = kfupdate(kf); 更新卡尔曼滤波器状态。
      • 每到整秒,提取真实速度并加上噪声,更新滤波器并保存估计结果。

结果处理与可视化

  1. 清理数据

    • avp_EKF_vel(ki:end, :) = [];xkpk(ki:end, :) = []; 用于去除多余的预分配行,确保数据整洁。
  2. 结果绘图

    • 使用 avpcmpplot 函数绘制估计结果与真实值的比较。
    • 分别绘制X、Y、Z轴速度误差,帮助分析滤波效果。
    • 最后,绘制速度误差的累积概率分布函数(CDF),提供对滤波后速度估计准确性的统计分析。

总结

该代码展示了如何通过EKF方法结合IMU和GNSS数据实现高精度的速度观测。通过设置合理的初始参数和噪声模型,代码能够有效地更新状态并优化定位精度。通过可视化结果,用户可以直观地了解滤波效果,为后续的研究和应用提供数据支持。这种方法在自动驾驶、无人机导航等领域具有广泛的应用前景。
如需付费咨询,可联系我
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/913581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hypermesh看模型内部

点击快捷键F5(跳跃到mask部分) 旋转即可

物品租赁+加盟系统+押金原路返回系统+酒店系统-一体化

一加盟商管理 二、加盟店押金管理 三、押金收银台 四、退押金 五、物品租赁系统领取 公众《未来之窗软件服务中心》 六、阿雪技术观 拥抱开源与共享,见证科技进步奇迹,畅享人类幸福时光! 让我们积极投身于技术共享的浪潮中,不仅…

京韵作序 极见东方 玛格·极北京艺术旗舰店盛大开业

你好北京,问鼎高定 以极为信仰,坚持极致美学追求 在登峰造极的路上不断探索 玛格极大宅全案定制,耀启京城 实现人们对美好生活的向往 11月10日,玛格极北京艺术旗舰店在红星美凯龙全球家居1号店华丽亮相,来自家居行…

CSS如何改变滚动条的颜色样式粗细?

默认滚动条很丑怎么办?如何改版滚动条的粗细,颜色,让它更美观?CSS如何改变滚动条的粗细? 干货来了 /* Webkit内核浏览器的滚动条样式 */ ::-webkit-scrollbar {width: 4px; /* 设置滚动条的宽度 */ }::-webkit-scroll…

使用GPT-SoVITS训练语音模型

1.项目演示 阅读单句话 1725352713141 读古诗 1725353700203 2.项目环境 开发环境:linux 机器配置如下:实际使用率百分之二十几, 3.开发步骤 1.首先是准备数据集,要求是wav格式,一到两个小时即可, 2.…

AI生活之我用AI处理Excel表格

AI生活之我用AI处理Excel表格 场景再现AI提问词AI代码运行调试结果心得感受 场景再现 因学习需要,整理了某个题库,方便自己刷题使用。 已将每套题打上了制定标签,得到一个Excel表格。截图如下: 需求是:一共35套题&…

PySpark本地开发环境搭建

一.前置事项 请注意,需要先实现Windows的本地JDK和Hadoop的安装。 二.windows安装Anaconda 资源:Miniconda3-py38-4.11.0-Windows-x86-64,在window使用的Anaconda资源-CSDN文库 右键以管理员身份运行,选择你的安装路径&#x…

virtualBox安装拓展包extension pack失败的超级详细解决办法

virtualBox安装拓展包extension pack时,网上的博主们都说直接进官网下载包,安装就行。下载网站是 https://www.virtualbox.org/wiki/Downloads 但是!!!!! 默认下载的是最新版本的包&#xff0c…

基于标签相关性的多标签学习

基于标签相关性的多标签学习 论文概述什么是多标签学习论文贡献 算法流程挖掘“主题“——提取标签相关性训练 M T M_T MT​模型——拟合{特征集, 主题集合}用标记相关性扩增数据集再次训练拟合 M M M模型——对真实帕金森病例进行筛查 实验结果核心代码复现main.py文件multi_l…

阿里公告:停止 EasyExcel 更新与维护

最近,阿里发布公告通知,将停止对知名 Java Excel 工具库 EasyExcel 的更新和维护。EasyExcel 由阿里巴巴开源,作者是玉箫,在 GitHub 上拥有 30k stars、7.5k forks 的高人气。 据悉,EasyExcel 作者玉箫去年已从阿里离…

稳恒磁场(2)

物理概念 电流元 IdL要足够小 物理理论 毕奥——萨伐尔定律 电流元在空间产生的磁场,磁感应强度与电流I长正比,与半径的平方成反比 后由拉普拉斯总结得出数学表达式: 其中 ,μ0 4π*10^-7 N*A^-2 , r^为r反向上…

C语言 | Leetcode C语言题解之第553题最优除法

题目: 题解: #define MAX_STR_LEN 64char * optimalDivision(int* nums, int numsSize) {char * res (char *)malloc(sizeof(char) * MAX_STR_LEN);if (numsSize 1) {sprintf(res, "%d", nums[0]);return res;}if (numsSize 2) {sprintf(r…

IntelliJ+SpringBoot项目实战(二)---构建项目多层级模块

本人上一篇文件介绍了使用IntelliJ开发工具构建新的SpringBoot项目。本节介绍SpringBoot项目的模块、子模块如何搭建。 首先我们根据项目的需求,可以将在顶级工程下创建多个模块,已经不同模块下还有子模块。 仍使用上节的OpenJWeb项目作为示例&#xff0…

达梦数据库安装与初始化超教程

达梦数据库(DM Database)作为中国自主研发的数据库系统,因其高效的性能和稳定的支持广泛应用于政府、金融、能源等关键领域。面对日益增长的数据管理需求,如何快速安装与初始化达梦数据库成了许多新手的第一步。这篇教程&#xff…

Mac中禁用系统更新

Mac中禁用系统更新 文章目录 Mac中禁用系统更新1. 修改hosts,屏蔽系统更新检测联网1. 去除系统偏好设置--系统更新已有的小红点标记 1. 修改hosts,屏蔽系统更新检测联网 打开终端,执行命令: sudo vim /etc/hosts127.0.0.1 swdis…

黑芝麻智能:技术+生态+量产三大先发优势,领跑智驾“芯”成长

黑芝麻智能:定位智驾芯片供应商,卓越研发团队打造强劲产品力。 1)公司定位:Tier2 芯片供应商,提供车规级计算 SoC 及基于 SoC 的智能汽车解决方案。2)产品结构:公司具有两个车规级 SoC 系列——…

Yolo11改进策略:上采样改进|CARAFE,轻量级上采样|即插即用|附改进方法+代码

论文介绍 CARAFE模块概述:本文介绍了一种名为CARAFE(Content-Aware ReAssembly of FEatures)的模块,它是一种用于特征上采样的新方法。应用场景:CARAFE模块旨在改进图像处理和计算机视觉任务中的上采样过程&#xff0…

一文了解git TAG

Git标签(Tag)用于为 Git 历史中的特定提交打上标记,通常用于标识重要的节点,比如发布版本。标签让开发者可以很方便地对特定版本进行引用,且不会随时间变动。Git 中的标签分为两种:轻量标签和附注标签。 …

IRF堆叠基本配置

IRF(堆叠配置) IRF(IntelligentResilientFramework,智能弹性架构)是H3C自主研发的软件虚拟化堆叠技术。它的核心思想是将多台设备通过IRF物理端口连接在一起,进行必要的配置后,虚拟化成一台“分布式设备”。使用这种虚…

渗透测试(socket,namp,scapy)

socket:可以用来实现不同虚拟机或者不同计算机之间的通信。 socket常用函数: sock.bind(host,port) //host可接受client范围,以及连接的端口 sock.listen()//sever开启监听连接 sock.accpet()//返回 sock,addr 用来接受和发送数据 addr…