主要内容

insSensor

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

描述

insSensorSystem object™模拟了一种设备,该设备融合了来自惯性导航系统(INS)和全球导航卫星系统(GNSS)(如GPS)的测量结果,并输出融合的测量结果。

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

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

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

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

创建

描述

例子

INS= insSensor返回一个System对象,INS,它模拟了一个从INS和GNSS输出测量值的设备。

例子

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

属性

全部展开

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

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

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

传感器在平台上的位置,单位为米,表示为形式为[的三元实值矢量xyz]。矢量定义传感器原点到平台原点的偏移量。

可调:是的

数据类型:|

传感器体的横摇测量精度,以度为单位,用非负实标量表示。

是绕着x传感器本体的-轴。将滚动噪声建模为白噪声过程。RollAccuracy设置横摇测量噪声的标准差。

可调:是的

数据类型:|

传感器体的螺距测量精度,以度为单位,用非负实标量表示。

球场是绕着y传感器本体的-轴。基音噪声被建模为一个白噪声过程。PitchAccuracy定义基音测量噪声的标准偏差。

可调:是的

数据类型:|

传感器体的偏航测量精度,以度为单位,用非负实标量表示。

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

可调:是的

数据类型:|

传感器体的位置测量精度,以米为单位,用非负实标量或三元实值矢量表示。向量的元素设置的精度x-,y- - - - - -,z-位置测量值。如果你指定PositionAccuracy作为标量值,该对象将所有三个位置的精度设置为该值。

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

可调:是的

数据类型:|

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

将速度噪声建模为白噪声过程。VelocityAccuracy定义速度测量噪声的标准差。

可调:是的

数据类型:|

测量传感器体加速度的精度,单位为米每秒,用非负实标量表示。

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

可调:是的

数据类型:|

测量传感器体角速度的精度,单位为米每秒,用非负实标量表示。

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

可调:是的

数据类型:|

允许输入仿真时间,指定为逻辑0)或1真正的)。将此属性设置为真正的输入仿真时间simTime论点。

可调:没有

数据类型:逻辑

启用GNSS修复,指定为逻辑1真正的)或0)。将此属性设置为来模拟GNSS接收器修复的丢失。当GNSS接收机定位丢失时,位置测量以由PositionErrorFactor财产。

可调:是的

依赖关系

若要启用此属性,请设置TimeInput真正的

数据类型:逻辑

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

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

可调:是的

依赖关系

若要启用此属性,请设置TimeInput真正的HasGNSSFix

数据类型:|

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

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

  • 'mt19937ar with seed'生成随机数使用mt19937ar算法,与指定的种子种子财产。

数据类型:字符|字符串

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

依赖关系

若要启用此属性,请设置RandomStream'mt19937ar with seed'

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

使用

描述

例子

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

测量= INS (gTruthsimTime另外指定模拟时间,simTime。要启用此语法,请设置TimeInput财产真正的

输入参数

全部展开

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

描述
“位置”

以米为单位的实数有限的位置N的- × 3矩阵xyz)向量。N是当前帧中的采样数。

“速度”

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

“定位”

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

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

  • 3-by-3-by -N旋转矩阵数组

  • N的- × 3矩阵xy球场z偏航[用度表示的角

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

“加速”

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

“AngularVelocity”

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

字段值必须是

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

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

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

数据类型:|

输出参数

全部展开

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

描述
“位置”

以米为单位的实数有限的位置N的- × 3矩阵xyz)向量。N是当前帧中的采样数。

“速度”

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

“定位”

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

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

  • 3-by-3-by -N旋转矩阵数组

  • N的- × 3矩阵xy球场z偏航[用度表示的角

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

“加速”

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

“AngularVelocity”

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

返回的字段值类型为的对应字段值的类型相同gTruth输入。

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

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

Fs = 100;持续时间= 10;numSamples = Fs*duration;运动= 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(运动);positionMeasurements(i,:) = measurements.Position;velocityMeasurements(i,:) = measurements.Velocity;方位测量(i) =测量。方位;结束

将方向从四元数转换为欧拉角以实现可视化。绘制位置、速度和方向随时间的测量值。

取向测量= eulerd(取向测量,“ZYX股票”“帧”);t = (0:(numSamples-1))/Fs;subplot(3,1,1) plot(t,positionMeasurements) title(“位置”)包含(“时间(s)”) ylabel (“位置(m)”)传说(“北”“东”“下来”) subplot(3,1,2) plot(t,velocityMeasurements) title(“速度”)包含(“时间(s)”) ylabel (“速度(米/秒)”)传说(“北”“东”“下来”) subplot(3,1,3) plot(t,orientationMeasurements) title(“定位”)包含(“时间(s)”) ylabel (的旋转(度))传说(“滚”“节”“偏航”

图中包含3个轴对象。标题为Position的轴对象1包含3个类型为line的对象。这些物体代表着北,东,下。标题为Velocity的坐标轴对象2包含3个类型为line的对象。这些物体代表着北,东,下。标题为方向的轴对象3包含3个类型为line的对象。这些对象代表横摇,俯仰,偏航。

生成INS测量值insSensor系统对象™。使用waypointTrajectory生成ground-truth路径。

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

eulerAngles = [0,0,0;...0, 0, 0;...90年,0,0;...90年,0,0);四元数(eulerAngles;“eulerd”“ZYX股票”“帧”);R = 20;Waypoints = [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 = floor(Fs*toa(end));路径= waypointTrajectory(“锚点”锚点,...“TimeOfArrival”toa,...“定位”取向,...“SampleRate”Fs,...“SamplesPerFrame”, numSamples);

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

ins = insSensor()“PositionAccuracy”, 0.1);

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

[motion.Position, motion.Orientation,运动。速度]=路径();insMeas = ins(运动);

返回的方向进行转换ins到欧拉角的度数,以便可视化。绘制出完整的路径和方向。

orientationmeasurementuler = eulerd(平均)。取向,“ZYX股票”“帧”);次要情节(2,1,1)情节(insMeas.Position (: 1), insMeas.Position (:, 2));标题(“路径”)包含(“北(m)”) ylabel (“东(m)”) subplot(2,1,2) t = (0:(numSamples-1)).'/Fs;情节(t, orientationMeasurementEuler (: 1),...t, orientationMeasurementEuler (:, 2),...t, orientationMeasurementEuler (:, 3));标题(“定位”)传说(“偏航”“节”“滚”)包含(“时间(s)”) ylabel (的旋转(度)

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

扩展功能

版本历史

在R2020b中引入

另请参阅

对象

对象