主要内容

insSensor

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

描述

insSensor系统对象™模型设备,融合测量从一个惯性导航系统(INS)和全球导航卫星系统(GNSS)如GPS、并输出融合测量。

输出融合INS和GNSS测量:

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

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

INS= insSensor返回一个系统对象,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属性设置为,位置误差的增长速度二次加速度计由于常数的偏见。一个位置组件的位置误差E(t)可以表示为E(t)= 1/2αt2,在那里α是相应的组件和位置误差因素t是自GNSS修复丢失的时间。在运行时,对象的计算t基于simTime输入。计算出的E(t)的值x,y,z组件的组件被添加到相应的位置gTruth输入。

可调:是的

依赖关系

要启用这个特性,设置TimeInput真正的HasGNSSFix

数据类型:|

随机数来源,指定这些选项之一:

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

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

数据类型:字符|字符串

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

依赖关系

要启用这个特性,设置RandomStream“与种子mt19937ar”

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

使用

描述

例子

测量= INS (gTruth)模型从一个INS传感器接收到的数据阅读和GNSS传感器读数。真实的输出测量是基于惯性传感器的身体状态,gTruth

例子

测量= INS (gTruth,simTime)另外指定模拟的时候,simTime。要启用这种语法,设置TimeInput财产真正的

输入参数

全部展开

惯性传感器身体的真实状态,在当地笛卡尔坐标系,指定为一个包含这些字段的结构:

描述
“位置”

位置,在米,指定为一个真正的、有限的N3的矩阵xyz)向量。N在当前帧的样本数量。

“速度”

速度(v),米每秒,指定为一个真正的、有限的N3的矩阵vxvyvz)向量。N在当前帧的样本数量。

“定位”

取向对当地的笛卡儿坐标系统,指定为这些选项之一:

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

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

  • N3的矩阵xy球场z偏航)角的度

每一个四元数或旋转矩阵是一个框架旋转从本地笛卡尔坐标系统电流传感器体坐标系。N在当前帧的样本数量。

“加速”

加速度(一个米每秒的平方),指定为一个真正的、有限的N3的矩阵一个x一个y一个z)向量。N在当前帧的样本数量。

“AngularVelocity”

角速度(ω),在度每秒的平方,指定为一个真正的、有限的N3的矩阵ωxωyωz)向量。N在当前帧的样本数量。

必须的字段值类型

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

例子:结构(“位置”,[0 0 0],“速度”,[0 0 0],“定位”,四元数([1 0 0 0]))

仿真时间,以秒为单位,指定为一个非负实数。

数据类型:|

输出参数

全部展开

测量传感器的身体运动,在当地的笛卡尔坐标,返回包含这些字段的结构:

描述
“位置”

位置,在米,指定为一个真正的、有限的N3的矩阵xyz)向量。N在当前帧的样本数量。

“速度”

速度(v),米每秒,指定为一个真正的、有限的N3的矩阵vxvyvz)向量。N在当前帧的样本数量。

“定位”

取向对当地的笛卡儿坐标系统,指定为这些选项之一:

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

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

  • N3的矩阵xy球场z偏航)角的度

每一个四元数或旋转矩阵是一个框架旋转从本地笛卡尔坐标系统电流传感器体坐标系。N在当前帧的样本数量。

“加速”

加速度(一个米每秒的平方),指定为一个真正的、有限的N3的矩阵一个x一个y一个z)向量。N在当前帧的样本数量。

“AngularVelocity”

角速度(ω),在度每秒的平方,指定为一个真正的、有限的N3的矩阵ωxωyωz)向量。N在当前帧的样本数量。

返回的字段值的类型和相同类型的中相应的字段值gTruth输入。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

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

例子

全部折叠

创建一个动态结构,定义了一个固定位置在当地north-east-down (NED)的起源。因为这个平台是静止的,你只需要定义一个样本。假设真实运动采样10秒100 Hz采样率。创建一个默认的insSensor系统对象™。Preallocate变量来保存的输出insSensor对象。

Fs = 100;时间= 10;numSamples = f *时间;运动=结构(“位置”,0 (1、3)“速度”,0 (1、3)“定位”,(1,1,“四元数”));INS = insSensor;positionMeasurements = 0 (numSamples, 3);velocityMeasurements = 0 (numSamples, 3);orientationMeasurements = 0 (numSamples 1“四元数”);

在一个循环中,调用INS运动与静止的结构返回位置,速度,在当地NED和方向测量坐标系统。日志的位置、速度和姿态测量。

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

从四元数与欧拉角转换方向可视化的目的。情节的位置、速度和方向测量。

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

图包含3轴对象。坐标轴对象1标题位置包含3线类型的对象。这些对象代表北,东,下来。坐标轴对象2与标题速度包含3线类型的对象。这些对象代表北,东,下来。轴面向对象3标题包含3线类型的对象。这些对象代表辊、俯仰、偏航。

生成的INS传感器测量车辆在驾驶的情况下安装。情节INS测量地面真理的车辆和可视化的速度和加速度。

创建驾驶场景

负载的地理数据的行驶路线MathWorks®苹果在纳蒂克山校区,马。

data =负载(“ahroute.mat”);拉丁= data.latitude;lonIn = data.longitude;

路线的纬度和经度坐标转换成笛卡尔坐标系。设置第一个坐标原点的行驶路线。为简单起见,假设海拔0的路线。

alt = 0;起源=[拉丁语(1)lonIn (1), alt);[xEast, yNorth, z上]= latlon2local(拉丁语,lonIn alt、起源);

创建一个驾驶场景。设置转换路线的起源作为地理的参考点。

场景= drivingScenario (“GeoReference”、来源);

创建一个基于道路的笛卡尔坐标的路线。

roadCenters = [xEast yNorth z上);路(场景,roadCenters);

创建一个车辆,道路的中心线。车辆之间的旅行4和5米每秒(9到11英里每小时),减速曲线在路上。创建轨迹,使用smoothTrajectory函数。轨迹计算最小化混蛋并避免在加速度不连续,这是一个要求建模INS传感器。

egoVehicle =车辆(场景中,“ClassID”1);egoPath = roadCenters;egoSpeed = [5 5 5 4 4 4 5 4 4 4 4 5 5 5 5 5];smoothTrajectory (egoVehicle egoPath egoSpeed);

情节场景和显示三维视图从自我后面车辆。

情节(场景)chasePlot (egoVehicle)

创建INS传感器

创建一个INS传感器接受输入的模拟时间。引入噪声传感器测量通过设置速度和精度测量的标准偏差0.1和0.05,分别。

INS = insSensor (“TimeInput”,真的,“VelocityAccuracy”,0.1,“AccelerationAccuracy”,0.05);

可视化INS测量

初始化一个地理球员显示INS测量和演员地面实况。配置玩家显示其最后10位置和缩放级别设置为17。

zoomLevel = 17;球员= geoplayer(拉丁语(1)lonIn (1) zoomLevel,“HistoryDepth”10“HistoryStyle”,“行”);

预先分配的空间仿真时间、速度测量和加速度测量期间捕获的模拟。

numWaypoints =长度(拉丁);* = 0 (numWaypoints, 1);gTruthVelocities = 0 (numWaypoints, 1);gTruthAccelerations = 0 (numWaypoints, 1);sensorVelocities = 0 (numWaypoints, 1);sensorAccelerations = 0 (numWaypoints, 1);

模拟的场景。在模拟循环,获得地面真理的自我,一个INS测量状态。这些读数转换成地理坐标,在每一个路标,可视化地面真理和INS的地理数据的球员。也捕捉的速度和加速度数据绘制速度和加速度资料。

nextWaypoint = 2;推进(场景)%获得地面真理的自我状态车辆。gTruth =状态(egoVehicle);%获得INS传感器测量。测量= INS (gTruth scenario.SimulationTime);%将数据转换为地理坐标。[它实用,lonOut] = local2latlon (measurement.Position (1),measurement.Position (2),measurement.Position(3),来源);%情节差异地面实况报告的地点和位置传感器。reachedWaypoint =总和(abs (roadCenters (nextWaypoint:) - gTruth.Position)) < 1;如果reachedWaypoint plotPosition(球员,拉丁语(nextWaypoint) lonIn (nextWaypoint),“TrackID”(1)plotPosition lonOut播放器,它实用,“TrackID”2,“标签”,“英寸”)%捕获仿真时间、速度和加速度。时间(1)nextWaypoint = scenario.SimulationTime;gTruthVelocities (nextWaypoint 1) = gTruth.Velocity (2);gTruthAccelerations (nextWaypoint 1) = gTruth.Acceleration (2);sensorVelocities (nextWaypoint 1) = measurement.Velocity (2);sensorAccelerations (nextWaypoint 1) = measurement.Acceleration (2);nextWaypoint = nextWaypoint + 1;结束如果nextWaypoint > numWaypoints打破结束结束

情节速度剖面

比较地面车辆的纵向速度随着时间的推移,真理对INS捕获的速度测量的传感器。

删除零矢量和速度矢量。

* (* = = 0)= [];gTruthVelocities (gTruthVelocities = = 0) = [];sensorVelocities (sensorVelocities = = 0) = [];图保存情节(次,gTruthVelocities)情节(次,sensorVelocities)标题(“纵向速度剖面”)包含(“时间(s)”)ylabel (“速度(米/秒)”)传说(“地面实况”,“英寸”)举行

情节加速度剖面

比较汽车的地面实况纵向加速度随时间变化对加速度的测量被INS传感器。

gTruthAccelerations (gTruthAccelerations = = 0) = [];sensorAccelerations (sensorAccelerations = = 0) = [];图保存情节(次,gTruthAccelerations)情节(次,sensorAccelerations)标题(纵向加速度剖面的)包含(“时间(s)”)ylabel (“加速度(m / s ^ 2)”)传说(“地面实况”,“英寸”)举行

提示

  • 获得真实的演员在驾驶的情况下,使用状态函数。

  • 传感器测量报告当地的笛卡儿坐标系统。将这些测量转换为可视化地图上的地理位置,使用local2latlon函数。这个数据转换回当地坐标,使用latlon2local函数。

扩展功能

版本历史

介绍了R2021a