【PSINS工具箱 MATLAB例程】生成螺旋上升航迹的例程,并自动计算AVP(姿态、速度、位置)与IMU数据(加速度计与陀螺仪,含时间戳),附下载链接

在这里插入图片描述

生成螺旋上升航迹的MATLAB例程,并自动计算AVP(姿态、速度、位置)与IMU数据(加速度计与陀螺仪,含时间戳)。
需要安装PSINS工具箱,工具箱开源,如果需要可以提供下载链接。
代码中有丰富的中文注释,包运行成功
程序是我原创的,作者最了解自己的程序,如有其他店铺在卖,都是翻卖,遇到问题不便解决

关于工具箱

本文所述的代码需要基于PSINS工具箱,工具箱的讲解:

代码解析

本程序基于 PSINS 工具箱,用于生成一个 螺旋上升航迹(spiral trajectory),并输出对应的 AVP(姿态-速度-位置)与 IMU 数据,供定位与导航算法仿真使用。

航迹建模

假设载体从初始位置 ( φ 0 , λ 0 , h 0 ) (\varphi_0, \lambda_0, h_0) (φ0,λ0,h0)(纬度、经度、高度)出发,按螺旋规律上升,其轨迹可由下式给出:

  • 角度随时间变化

θ ( t ) = ω ⋅ t \theta(t) = \omega \cdot t θ(t)=ωt

其中, ω \omega ω 为旋转角速度(rad/s)。

  • 平面位移方程(以起点为参考系):

Δ x ( t ) = R ⋅ sin ⁡ ( θ ( t ) ) , Δ y ( t ) = R ⋅ ( cos ⁡ ( θ ( t ) ) − 1 ) \Delta x(t) = R \cdot \sin(\theta(t)), \quad \Delta y(t) = R \cdot \big(\cos(\theta(t)) - 1\big) Δx(t)=Rsin(θ(t)),Δy(t)=R(cos(θ(t))1)

其中, R R R 为螺旋半径。

  • 高度变化方程

Δ h ( t ) = v u p ⋅ t \Delta h(t) = v_{up} \cdot t Δh(t)=vupt

其中, v u p v_{up} vup 为上升速度。

将平面位移转换为经纬度:

Δ φ ( t ) = Δ y ( t ) R e , Δ λ ( t ) = Δ x ( t ) R e ⋅ cos ⁡ ( φ 0 ) \Delta \varphi(t) = \frac{\Delta y(t)}{R_e}, \quad \Delta \lambda(t) = \frac{\Delta x(t)}{R_e \cdot \cos(\varphi_0)} Δφ(t)=ReΔy(t),Δλ(t)=Recos(φ0)Δx(t)

其中, R e R_e Re 为地球平均半径。

最终位置为:

φ ( t ) = φ 0 + Δ φ ( t ) , λ ( t ) = λ 0 + Δ λ ( t ) , h ( t ) = h 0 + Δ h ( t ) \varphi(t) = \varphi_0 + \Delta \varphi(t), \quad \lambda(t) = \lambda_0 + \Delta \lambda(t), \quad h(t) = h_0 + \Delta h(t) φ(t)=φ0+Δφ(t),λ(t)=λ0+Δλ(t),h(t)=h0+Δh(t)

速度与姿态计算

通过位置对时间的数值微分得到北东地坐标系下速度 ( v N , v E , v D ) (v_N, v_E, v_D) (vN,vE,vD)

v N = Δ φ ⋅ R e Δ t , v E = Δ λ ⋅ R e ⋅ cos ⁡ ( φ ) Δ t , v D = − Δ h Δ t v_N = \frac{\Delta \varphi \cdot R_e}{\Delta t}, \quad v_E = \frac{\Delta \lambda \cdot R_e \cdot \cos(\varphi)}{\Delta t}, \quad v_D = -\frac{\Delta h}{\Delta t} vN=ΔtΔφRe,vE=ΔtΔλRecos(φ),vD=ΔtΔh

姿态角则由速度和运动特性确定:

  • 航向角 (yaw)

ψ = arctan ⁡ ( v E v N ) \psi = \arctan\left(\frac{v_E}{v_N}\right) ψ=arctan(vNvE)

  • 俯仰角 (pitch)

θ = arctan ⁡ ( − v D v N 2 + v E 2 ) \theta = \arctan\left(-\frac{v_D}{\sqrt{v_N^2 + v_E^2}}\right) θ=arctan(vN2+vE2 vD)

  • 滚转角 (roll):由向心加速度与重力的比值近似得到:

ϕ = arctan ⁡ ( a c g ) ⋅ sin ⁡ ( θ ( t ) ) , a c = ω 2 R \phi = \arctan\left(\frac{a_c}{g}\right) \cdot \sin(\theta(t)), \quad a_c = \omega^2 R ϕ=arctan(gac)sin(θ(t)),ac=ω2R

数据输出

程序最终生成:

  • AVP数据:姿态-速度-位置随时间变化的序列;
  • IMU数据:加速度计与陀螺仪的原始观测值,便于后续滤波器仿真;
  • 轨迹可视化:三维轨迹、高度曲线、速度与姿态变化。

运行结果

三维轨迹:
在这里插入图片描述
高度与水平曲线:
在这里插入图片描述

速度与姿态曲线:
在这里插入图片描述

AVP绘图:
在这里插入图片描述
IMU数据绘图:
在这里插入图片描述

部分代码

%% PSINS工具箱生成螺旋上升航迹的程序,生成AVP与IMU数据
% 如果程序报错,首先考虑工具箱是否安装正常,工具箱下载链接www.psins.org.cn
% 作者:matlabfilter
% 2025-09-08/Ver1

clear; close all; clc;
rng(0);
%% 初始化PSINS工具箱
glvs;

%% 设置仿真参数
ts = 0.01;          % 仿真步长 (s)
T = 300;            % 总仿真时间 (s)
t = (0:ts:T)';      % 时间序列
len = length(t);    % 数据长度

%% 螺旋上升航迹参数设置
% 初始位置 (经纬度,高度)
lat0 = 34.2*glv.deg;    % 初始纬度 (rad)
lon0 = 108.9*glv.deg;   % 初始经度 (rad) 
h0 = 100;               % 初始高度 (m)

代码结构:
在这里插入图片描述

完整代码

https://download.csdn.net/download/callmeup/91901842

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值