【基于PSINS工具箱】以速度为观测量的SINS/GNSS组合导航,UKF滤波

在这里插入图片描述

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

文章目录

  • 工具箱
  • 程序简述
    • 运行结果
  • 代码
  • 程序讲解
    • MATLAB 代码教程:使用UKF进行速度观测
      • 1. 引言与基本设置
      • 2. 初始设置
      • 3. UKF滤波的初始化
      • 4. 主循环进行UKF处理
      • 5. 绘图与结果分析
      • 6. 输出误差统计
  • 总结

工具箱

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

程序简述

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

运行结果

  • 三轴AVP曲线:
    在这里插入图片描述

  • 三轴速度误差曲线:
    在这里插入图片描述

  • 滤波后 X X X轴速度累积概率分布函数:
    在这里插入图片描述

代码

部分代码如下:

% 【PSINS】速度观测的153,UKF
% 2024-09-17/Ver1
% 如需付费咨询,可联系我
clear;clc;close all;
rng(0);
glvs
psinstypedef(153);
trj = trjfile('trj10ms.mat');
% initial settings
[nn, ts, nts] = nnts(2, trj.ts);
% imuerr = imuerrset(0.03, 100, 0.001, 5);
imuerr = imuerrset(8, 14, 0.18, 57);
imu = imuadderr(trj.imu, imuerr);  % imuplot(imu);
davp0 = avperrset([1;1;10]*60, 0.1, [1;1;3]);%% 速度观测EKF
ins = insinit(avpadderr(trj.avp0,davp0), ts);
rk = [1;1;1];

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

程序讲解

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

MATLAB 代码教程:使用UKF进行速度观测

本教程将介绍一段使用扩展卡尔曼滤波(UKF)进行速度观测的 MATLAB 代码。该代码旨在通过融合惯性导航系统(INS)和GNSS数据来提高定位精度。以下是对代码的逐步解析。

1. 引言与基本设置

  • 环境清理:使用 clearclcclose all 清空工作空间,确保每次运行时环境干净。
  • 随机种子:设置随机数种子以确保可重复的结果。
  • 全局变量:初始化必要的全局变量和PSINS类型。
  • 数据读取:从指定文件中加载IMU和GNSS数据。

2. 初始设置

  • 时间序列参数:提取时间序列的基本参数。
  • IMU误差设置:定义IMU传感器的误差,并向IMU数据添加噪声。
  • 姿态误差:设置初始姿态误差,为后续计算提供基线。

3. UKF滤波的初始化

  • INS初始化:创建INS的初始状态,包括位置、速度和姿态。
  • UKF初始化:设置UKF的噪声模型、状态协方差矩阵和观测方程。

4. 主循环进行UKF处理

  • 数据处理:循环遍历IMU数据,逐步更新INS状态和UKF滤波器。
  • 速度观测:在每个整秒时,从真实数据中提取速度观测,并通过UKF进行状态更新。
  • 结果保存:将每次的状态和协方差保存到预先分配的数组中。

5. 绘图与结果分析

  • 结果可视化:绘制估计结果与真实数据的比较图,帮助分析滤波效果。
  • 速度误差分析:展示X、Y和Z轴的速度误差。
  • CDF绘制:绘制速度误差的累积概率分布函数,以便进一步分析估计精度。

6. 输出误差统计

  • 误差统计:计算并输出X轴速度的平均误差,为评估滤波效果提供参考。

总结

通过本教程,可以了解如何使用UKF算法进行速度观测,以及如何通过融合IMU和GNSS数据来提高定位精度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Vue】Vue3.0(十七)Vue 3.0中Pinia的深度使用指南(基于setup语法糖)

上篇文章: 【Vue】Vue3.0(十一)Vue 3.0 中 computed 计算属性概念、使用及示例 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月10日15点23分 文章…

跨境云专线:构建高速、安全的全球业务网络

在企业出海加速的背景下,越来越多的企业需要在全球范围内部署业务,特别是在多个国家和地区之间进行数据传输。然而,跨境网络连接常常面临带宽不足、延迟高、数据安全性差等问题,这给企业的业务运营带来了巨大挑战。为了解决这些问…

分布式——BASE理论

简单来说: BASE(Basically Available、Soft state、Eventual consistency)是基于CAP理论逐步演化而来的,核心思想是即便不能达到强一致性(Strong consistency),也可以根据应用特点采用适当的方…

UE5.4 PCG 获取地形Layer

使用AttributeFilter:属性过滤器 节点 设置地形Layer名称和权重 效果:

使用wordpress搭建简易的信息查询系统

背景 当前有这样的一个需求,要实现让客户能够自助登录系统查询一些个人的信息,市面上没有特别符合我的需求的产品,经过一段时间的研究,想出了一个用wordpress实现简易信息查询系统,有两种方式。 方式一:使…

EasyUI弹出框行编辑,通过下拉框实现内容联动

EasyUI弹出框行编辑,通过下拉框实现内容联动 需求 实现用户支付方式配置,当弹出框加载出来的时候,显示用户现有的支付方式,datagrid的第一列为conbobox,下来选择之后实现后面的数据直接填充; 点击新增:新…

ssm079基于SSM框架云趣科技客户管理系统+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:客户管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本客户管理系统就是在这…

PICO+Unity 用手柄点击UI界面

如果UI要跟随头显,可将Canvas放置到XR Origin->Camera Offset->Main Camera下 1.Canvas添加TrackedDeviceGraphicRaycaster组件 2.EventSystem移动默认的Standard Input Module,添加XRUIInputModule组件 3.(可选)设置射线可…

apt镜像源制作-ubuntu22.04

# 安装必要的软件 sudo apt-get install -y apt-mirror # 编辑/etc/apt/mirror.list,添加以下内容 set base_path /var/spool/apt-mirror # 指定要镜像的Ubuntu发布和组件-null dir jammy-updates main restricted universe multiverse # 镜像的Ubuntu发布和组件的URL-n…

springboot初体验

目录 环境 controller 修改端口号 更改banner图标 运行结果 最核心的:自动装配 环境 jdk17springboot3.3.5maven3.8.2 controller controller层和启动类同级 package com.example.demo.controller; ​ import org.springframework.web.bind.annotation.RequestMapping;…

Q:警告无法解释导入PIL Pylance(reportMisssingIMports)

问题显示: 解决方法: 1.确认安装 Pillow:在 VS Code 的终端中运行以下命令,以确保环境中安装了 Pillow pip install pillow2.选择正确的解释器:在 VS Code 中,按下 CtrlShiftP,输入并选择 “P…

python中常见的8种数据结构之一数组的应用

在Python中,数组是一种常见的数据结构,用于存储一系列相同类型的元素。在实际应用中,数组可以用于解决各种问题。 以下是数组在Python中的一些常见应用: 1. 存储和访问数据:数组可以用于存储和访问一组数据。可以通过…

网络安全——下载并在kali虚拟机上启动Cobalt Strike

目录 一、下载 二、上传文件到kali虚拟机 三、启动服务端 四、启动客户端 一、下载 CobaltStrike4.8汉化版带插件-CSDN博客 下载并解压后 二、上传文件到kali虚拟机 1、打开并运行kali虚拟机,查看kali的ip地址 2、打开xshell,新建连接,连…

用 Python 从零开始创建神经网络(四):激活函数(Activation Functions)

激活函数(Activation Functions) 引言1. 激活函数的种类a. 阶跃激活功能b. 线性激活函数c. Sigmoid激活函数d. ReLU 激活函数e. more 2. 为什么使用激活函数3. 隐藏层的线性激活4. 一对神经元的 ReLU 激活5. 在隐蔽层中激活 ReLU6. ReLU 激活函数代码7. …

22.oop-strust与class

OOP是什么:oop 是面向对象编程,面向对象编程是一种计算机编程架构, OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或 对象组、合而成。 OOP有什么特性: 1、封装性:也称为信息隐藏,就是将一个类的使用和实现分开…

【Linux】ubuntu安装图形化界面步骤

一、ubuntu 安装桌面环境 1、更新软件包列表(命令↓) sudo apt update 2、安装桌面环境GNOME(命令↓) sudo apt install ubuntu-desktop 3、安装完成后需要重启服务器(服务器重启命令↓) sudo reboot 二、…

【Android】轮播图——Banner

引言 Banner轮播图是一种在网页和移动应用界面设计中常见的元素,主要用于在一个固定的区域内自动或手动切换一系列图片,以展示不同的内容或信息。这个控件在软件当中经常看到,商品促销、热门歌单、头像新闻等等。它不同于ViewPgaer在于无需手…

Vue2 doc、excel、pdf、ppt、txt、图片以及视频等在线预览

Vue2 doc、excel、pdf、ppt、txt、图片等在线预览 安装使用目录结构直接上代码src\components\FileView\doc\index.vuesrc\components\FileView\excel\index.vuesrc\components\FileView\img\index.vuesrc\components\FileView\pdf\index.vuesrc\components\FileView\ppt\index…

[OpenGL]使用OpenGL实现硬阴影效果

一、简介 本文介绍了如何使用OpenGL实现硬阴影效果,并在最后给出了全部的代码。本文基于[OpenGL]渲染Shadow Map,实现硬阴影的流程如下: 首先,以光源为视角,渲染场景的深度图,将light space中的深度图存储…

微服务是什么 SpringCloud是什么

微服务是什么 SpringCloud是什么 一、微服务概述二、微服务架构三、单体架构四、分布式架构五、SpringCloud概述六、SpringBoot和 SpringCloud的区别与联系七、SpringCloud版本选择 一、微服务概述 微服务(MicroServices)最初是由 Martin Fowler 于 2014…