主要内容

insSensor

惯性导航系统和GNSS/GPS仿真模型

描述

insSensor系统对象™模拟一种设备,该设备融合来自惯性导航系统(INS)和全球导航卫星系统(GNSS)的测量数据,如GPS,并输出融合的测量数据。

要输出融合的INS和GNSS测量值:

  1. 创建insSensor对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创造

描述

例子

INS= insSensor返回一个系统对象,INS,对从INS和GNSS输出测量值的设备进行建模。

例子

INS= insSensor (名称、值性质使用一个或多个名称-值对。未指定的属性具有默认值。请将每个属性名称用引号括起来。

属性

全部展开

除非另有说明,属性是nontunable,这意味着您不能在调用对象之后更改它们的值。对象在调用时锁定,而释放函数将解锁它们。

如果一个属性是可调,您可以随时更改它的值。

有关更改特性值的详细信息,请参见在MATLAB中使用系统对象进行系统设计

传感器在平台上的位置,以米为单位,指定为形式的三元素实值向量[xyz].该向量定义了传感器原点与平台原点的偏移量。

可调:是的

数据类型:仅有一个的|

传感器本体滚转测量的精度,以度数为单位,指定为非负实标量。

是绕着地球的旋转吗x传感器本体的-轴。滚动噪声被建模为白噪声过程。滚动精度设置滚动测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器本体的俯仰测量精度,以度数为单位,指定为非负实标量。

球场是绕着地球的旋转吗y传感器本体的-轴。基音噪声被建模为白噪声过程。俯仰精度定义螺距测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器体偏航测量的精度,以度数为单位,指定为非负实标量。

偏航是绕着地球的旋转吗z传感器本体的-轴。偏航噪声被建模为白噪声过程。YawAccuracy定义偏航测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器体位置测量的精度,以米为单位,指定为非负实标量或三元素实值向量。向量的元素决定了x-,y- - - - - -,z-分别进行位置测量。如果您指定PositionAccuracy作为标量值,然后对象将所有三个位置的精度设置为这个值。

位置噪声被建模为白噪声过程。PositionAccuracy定义位置测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器体速度测量的精度,单位为米/秒,指定为非负实标量。

速度噪声被建模为白噪声过程。速度精度定义速度测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器体加速度测量的精度,单位为米/秒,指定为非负实标量。

加速度噪声被建模为白噪声过程。AccelerationAccuracy定义加速度测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

传感器体角速度测量的精度,单位为米/秒,指定为非负实标量。

角速度被建模为白噪声过程。AngularVelocityAccuracy定义加速度测量噪声的标准偏差。

可调:是的

数据类型:仅有一个的|

启用模拟时间的输入,指定为逻辑时间0)或1符合事实的).将此属性设置为符合事实的用。输入仿真时间simTime论点。

可调:

数据类型:逻辑

启用GNSS修复,指定为逻辑1符合事实的)或0).将此属性设置为来模拟GNSS接收机修复的丢失。当GNSS接收机固定位丢失时,位置测量值以指定的速率漂移位置误差因子财产。

可调:是的

依赖关系

若要启用此属性,请设置TimeInput符合事实的

数据类型:逻辑

没有GNSS固定的位置误差因子,指定为标量或标量的1 × 3向量。

HasGNSSFix属性设置为,由于加速度计中的偏置常数,位置误差以二次速率增长。位置分量的位置误差Et)可以表示为Et) = 1/2αt2,在那里α位置误差因子是否为对应组件和t是GNSS修复丢失后的时间。在运行时,对象进行计算t基于simTime输入。计算出的Et)价值观xyz零部件将添加到零部件的相应位置gTruth输入。

可调:是的

依赖关系

若要启用此属性,请设置TimeInput符合事实的HasGNSSFix

数据类型:仅有一个的|

随机数源,指定为以下选项之一:

  • “全球流”–使用当前全局随机数流生成随机数。

  • “带种子的mt19937ar”—使用mt19937ar算法生成随机数,种子由种子财产。

数据类型:字符|字符串

mt19937ar随机数生成器算法的初始种子,指定为一个非负整数。

依赖关系

若要启用此属性,请设置RandomStream“带种子的mt19937ar”

数据类型:仅有一个的||int8|int16|int32|int64|uint8|uint16|uint32|uint64

用法

描述

例子

测量=INS(gTruth对从INS传感器读数和GNSS传感器读数接收的数据进行建模。输出测量是基于传感器本体的惯性地面真实状态,gTruth

测量=INS(gTruthsimTime另外指定了模拟时间,simTime.要启用此语法,请设置TimeInput财产符合事实的

输入参数

全部展开

传感器本体的惯性地真状态,在局部笛卡尔坐标下,指定为包含以下字段的结构:

描述
“位置”

位置,单位为米,指定为实数有限N-矩阵的by-3[xyz)向量。N是当前帧中的采样数。

“速度”

速度(v),单位为米每秒,指定为实数有限N-矩阵的by-3[vxvyvz)向量。N是当前帧中的采样数。

“方向”

相对于本地笛卡尔坐标系的方向,指定为以下选项之一:

  • N元素的列向量四元数对象

  • 3-by-3-by -N旋转矩阵阵列

  • N-矩阵的by-3[xyz偏航]角度(度)

每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器本体坐标系的一个坐标系旋转。N是当前帧中的采样数。

“加速”

加速(一个),单位为米每秒的平方,指定为实数有限N-矩阵的by-3[一个x一个y一个z)向量。N是当前帧中的采样数。

“AngularVelocity”

角速度(ω),以每秒平方度为单位,指定为实数有限N-矩阵的by-3[ωxωyωz)向量。N是当前帧中的采样数。

字段值必须是类型仅有一个的

位置速度取向字段是必需的。其他字段是可选的。

例子:struct('Position',[0 0 0],'Velocity',[0 0 0],'Orientation',四元数([1 0 0 0]))

模拟时间,以秒为单位,指定为非负实标量。

数据类型:仅有一个的|

输出参数

全部展开

测量传感器的身体运动,在局部笛卡尔坐标,返回为包含以下字段的结构:

描述
“位置”

位置,单位为米,指定为实数有限N-矩阵的by-3[xyz)向量。N是当前帧中的采样数。

“速度”

速度(v),单位为米每秒,指定为实数有限N-矩阵的by-3[vxvyvz)向量。N是当前帧中的采样数。

“方向”

相对于本地笛卡尔坐标系的方向,指定为以下选项之一:

  • N元素的列向量四元数对象

  • 3-by-3-by -N旋转矩阵阵列

  • N-矩阵的by-3[xyz偏航]角度(度)

每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器本体坐标系的一个坐标系旋转。N是当前帧中的采样数。

“加速”

加速(一个),单位为米每秒的平方,指定为实数有限N-矩阵的by-3[一个x一个y一个z)向量。N是当前帧中的采样数。

“AngularVelocity”

角速度(ω),以每秒平方度为单位,指定为实数有限N-矩阵的by-3[ωxωyωz)向量。N是当前帧中的采样数。

返回的字段值的类型为仅有一个的与中相应字段值的类型相同gTruth输入。

对象的功能

要使用对象函数,请指定System对象作为第一个输入参数。例如,释放名为system的对象的系统资源obj,使用下面的语法:

释放(obj)

全部展开

扰动 物体上定义的摄动
扰乱 对物体施加扰动
一步 系统对象算法
克隆 创建重复的系统对象
孤岛 确定系统对象在使用
重置 使内部状态复位系统对象
释放 释放资源并允许更改系统对象属性值和输入特征

例子

全部崩溃

创建一个运动结构,定义本地东北向下(NED)原点处的静止位置。因为平台是静止的,所以只需要定义一个样本。假设地面真实运动以100 Hz采样率采样10秒。创建默认值insSensor系统对象™。对象的预分配变量以保存输出insSensor对象

Fs=100;duration=10;numSamples=Fs*duration;motion=struct(...“位置”, 0(1、3)...“速度”, 0(1、3)...“方向”,一(1,1,“四元数”));INS = insSensor;positionMeasurements = 0 (numSamples, 3);velocityMeasurements = 0 (numSamples, 3);orientationMeasurements = 0 (numSamples 1“四元数”);

在循环中,调用INS使用静止运动结构返回本地NED坐标系中的位置、速度和方向测量值。记录位置、速度和方向测量值。

i = 1:numSamples measurements = INS(motion);: positionMeasurements(我)= measurements.Position;: velocityMeasurements(我)= measurements.Velocity;orientationMeasurements (i) = measurements.Orientation;结束

转换方向从四元数到欧拉角的可视化目的。绘制随时间变化的位置、速度和方向测量值。

orientationMeasurements = eulerd (orientationMeasurements,“ZYX股票”“帧”);t = (0: (numSamples-1)) / Fs;次要情节(1,1)情节(t, positionMeasurements)标题(“位置”)xlabel(‘时间’)伊拉贝尔(“位置(m)”)传说(“北”“东方”“向下”)子图(3,1,2)plot(t,velocityMeasurements) title(“速度”)xlabel(‘时间’)伊拉贝尔(“速度(m/s)”)传说(“北”“东方”“向下”子图(3,1,3)plot(t,orientationMeasurements) title(“方向”)xlabel(‘时间’)伊拉贝尔(的旋转(度))传说(“滚”“投球”“偏航”

图中包含3个轴对象。具有标题位置的轴对象1包含3个类型线对象。这些对象表示北、东、下。具有标题速度的轴对象2包含3个类型线对象。这些对象表示北、东、下。具有标题方向的轴对象3包含3个类型线对象。这些对象表示Roll、 俯仰,偏航。

生成INS测量insSensor系统对象™。使用waypointTrajectory生成地面真理路径。

指定从传感器本体开始的地面真实方向x-轴与北对齐,端部与传感器本体对齐x-轴与东方对齐。为弧线轨迹指定路径点,并为相应的路径点指定到达时间向量。使用100hz的采样率。创建一个waypointTrajectory系统对象与路点约束,并设置SamplesPerFrame所以整个轨迹是通过一次调用输出的。

eulerAngles = [0, 0, 0;...0,0,0;...90,0,0;...90年,0,0);取向=四元数(eulerAngles,“eulerd”“ZYX股票”“帧”);r=20;航路点=[0,0,0;...100,0,0;...100 + r, r, 0;...100 + r, 100 + r, 0);toa =[0、10、10 +(2 *π* r / 4), 20 +(2 *π* r / 4)];Fs = 100;numSamples =地板(Fs * toa(结束));路径= waypointTrajectory (“航路点”锚点,...“到达时间”toa,...“方向”取向,...“SampleRate”,财政司司长,...“SamplesPerFrame”,numSamples);

创建一个insSensor接收INS数据的模型的系统对象。设置PositionAccuracy0.1

ins=ins传感器(“PositionAccuracy”, 0.1);

调用路径点轨迹对象,路径,以生成地面真实运动。呼叫INS模拟器,ins,利用地面真实运动生成INS测量。

[motion.Position,motion.Orientation,motion.Velocity]=path();insMeas=ins(motion);

转换返回的方向ins到欧拉角的角度。随着时间的推移绘制完整的路径和方向。

方向测量Euler=eulerd(在测量方向时,“ZYX股票”“帧”);次要情节(2,1,1)情节(insMeas.Position (: 1), insMeas.Position (:, 2));标题(“路径”)xlabel("北(m)")伊拉贝尔(“东(m)”) subplot(2,1,2) t = (0:(numSamples-1)).'/Fs;情节(t, orientationMeasurementEuler (: 1),...t、 方向测量欧拉(:,2),...t, orientationMeasurementEuler (:, 3));标题(“方向”)传说(“偏航”“投球”“滚”)xlabel(‘时间’)伊拉贝尔(的旋转(度)

图中包含2个轴对象。带有标题Path的轴对象1包含一个类型为line的对象。带有标题方向的轴对象2包含3个类型为line的对象。这些物体代表偏航,俯仰,滚转。

扩展功能

另请参阅

对象

介绍了R2020b