insSensor
惯性导航系统和GNSS/GPS仿真模型
描述
的insSensor
系统对象™为一种设备建模,该设备融合了来自惯性导航系统(INS)和全球卫星导航系统(GNSS)(如GPS)的测量数据,并输出融合的测量数据。
输出融合的INS和GNSS测量值:
创建
insSensor
对象并设置其属性。调用带有参数的对象,就像调用函数一样。
要了解更多关于System对象如何工作的信息,请参见什么是系统对象?
创建
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
函数打开它们。
如果属性是可调,您可以随时更改其值。
有关更改属性值的更多信息,请参见在MATLAB中使用系统对象设计系统.
MountingLocation
- - - - - -平台上传感器位置(m)
(0 0 0)
(默认)|形式的三元实值向量[xyz]
传感器在平台上的位置,以米为单位,指定为形式为[的三元素实值向量xyz].该向量定义了传感器原点与平台原点的偏移量。
可调:是的
数据类型:单
|双
RollAccuracy
- - - - - -轧辊测量精度(度)
0.2
(默认)|非负实数
传感器体的滚转测量精度,以度为单位,指定为非负实标量。
卷旋转是围绕x传感器体的-轴。滚动噪声建模为白噪声过程。RollAccuracy
设置轧辊测量噪声的标准差。
可调:是的
数据类型:单
|双
PitchAccuracy
- - - - - -节距测量精度(度)
0.2
(默认)|非负实数
传感器体的节距测量精度,以度为单位,指定为非负实标量。
球场旋转是围绕y传感器体的-轴。基音噪声建模为白噪声过程。PitchAccuracy
定义节距测量噪声的标准偏差。
可调:是的
数据类型:单
|双
YawAccuracy
- - - - - -偏航测量精度(度)
1
(默认)|非负实数
传感器体的偏航测量精度,以度为单位,指定为非负实标量。
偏航旋转是围绕z传感器体的-轴。偏航噪声被建模为白噪声过程。YawAccuracy
定义偏航测量噪声的标准偏差。
可调:是的
数据类型:单
|双
PositionAccuracy
- - - - - -位置测量精度(m)
(1 1 1)
(默认)|非负实数|三元素实值向量
传感器体的位置测量精度,以米为单位,指定为非负实标量或三元实值向量。向量的元素设置了向量的精度x- - - - - -,y- - - - - -,z分别测量-安置。如果您指定PositionAccuracy
作为一个标量值,对象将所有三个位置的精度设置为这个值。
位置噪声建模为白噪声过程。PositionAccuracy
定义位置测量噪声的标准差。
可调:是的
数据类型:单
|双
VelocityAccuracy
- - - - - -速度测量精度(m/s)
0.05
(默认)|非负实数
传感器体的速度测量精度,以米/秒为单位,指定为非负实标量。
速度噪声被建模为白噪声过程。VelocityAccuracy
定义速度测量噪声的标准偏差。
可调:是的
数据类型:单
|双
AccelerationAccuracy
- - - - - -加速度测量精度(m/s2)
0
(默认)|非负实数
传感器体加速度测量的精度,以米/秒为单位,指定为非负实标量。
加速度噪声被建模为白噪声过程。AccelerationAccuracy
定义加速度测量噪声的标准偏差。
可调:是的
数据类型:单
|双
AngularVelocityAccuracy
- - - - - -角速度测量精度(度/秒)
0
(默认)|非负实数
传感器体角速度测量的精度,以米/秒为单位,指定为非负实标量。
角速度被建模为白噪声过程。AngularVelocityAccuracy
定义加速度测量噪声的标准偏差。
可调:是的
数据类型:单
|双
TimeInput
- - - - - -使能模拟时间输入
假
或0
(默认)|真正的
或1
HasGNSSFix
- - - - - -使GNSS修复
真正的
或1
(默认)|假
或0
启用GNSS补丁,指定为逻辑1
(真正的
)或0
(假
).将此属性设置为假
来模拟GNSS接收器固定装置的损失。当GNSS接收器固定丢失时,位置测量以指定的速率漂移PositionErrorFactor
财产。
可调:是的
依赖关系
若要启用此属性,请设置TimeInput
来真正的
.
数据类型:逻辑
PositionErrorFactor
- - - - - -没有GNSS修正的位置误差因子
(0 0 0)
(默认)|负的标量|1 × 3的标量向量
RandomStream
- - - - - -随机数源
“全球流”
(默认)|“与种子mt19937ar”
随机数字源,指定为以下选项之一:
“全球流”
—使用当前全局随机数流生成随机数。“与种子mt19937ar”
——使用mt19937ar算法生成随机数,种子由种子
财产。
数据类型:字符
|字符串
种子
- - - - - -最初的种子
67
(默认)|非负整数
mt19937ar随机数生成器算法的初始种子,指定为非负整数。
依赖关系
若要启用此属性,请设置RandomStream
来“与种子mt19937ar”
.
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
使用
描述
输入参数
gTruth
- - - - - -传感器体的惯性地真状态
结构
传感器体的惯性基真状态,在局部笛卡尔坐标中,指定为包含以下字段的结构:
场 | 描述 |
---|---|
“位置” |
位置,以米为单位,指定为实数,有限值N-by-3矩阵的[xyz)向量。N是当前帧中的样本数。 |
“速度” |
速度(v),单位为米每秒,指定为实数,有限N-by-3矩阵的[vxvyvz)向量。N是当前帧中的样本数。 |
“定位” |
方向:相对于局部笛卡尔坐标系的方向,指定为下列选项之一:
每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器体坐标系的一帧旋转。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]))
simTime
- - - - - -仿真时间
非负实数
模拟时间,以秒为单位,指定为非负实标量。
数据类型:单
|双
输出参数
测量
-测量传感器体的运动
结构
传感器体运动的测量,在局部笛卡尔坐标中,返回为包含以下字段的结构:
场 | 描述 |
---|---|
“位置” |
位置,以米为单位,指定为实数,有限值N-by-3矩阵的[xyz)向量。N是当前帧中的样本数。 |
“速度” |
速度(v),单位为米每秒,指定为实数,有限N-by-3矩阵的[vxvyvz)向量。N是当前帧中的样本数。 |
“定位” |
方向:相对于局部笛卡尔坐标系的方向,指定为下列选项之一:
每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器体坐标系的一帧旋转。N是当前帧中的样本数。 |
“加速” |
加速度(一个),单位为米每秒平方,指定为实数,有限N-by-3矩阵的[一个x一个y一个z)向量。N是当前帧中的样本数。 |
“AngularVelocity” |
角速度(ω),单位为每秒度数的平方,指定为实数,是有限的N-by-3矩阵的[ωxωyωz)向量。N是当前帧中的样本数。 |
返回的字段值为类型双
或单
的对应字段值具有相同的类型gTruth
输入。
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj
,使用以下语法:
发行版(obj)
例子
从固定输入生成INS测量值
创建一个运动结构,在本地东北向下(NED)原点定义一个固定位置。因为平台是固定的,所以只需要定义一个样本。假设地面真实运动以100赫兹的采样率采样10秒。创建一个默认的insSensor
系统对象™。对象的输出预分配变量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坐标系中的位置、速度和方向测量值。记录位置,速度和方向测量。
为i = 1:numSamples measurements = 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)”)传说(“北”,“东”,“下来”) subplot(3,1,2) plot(t,velocityMeasurements)“速度”)包含(“时间(s)”) ylabel (“速度(米/秒)”)传说(“北”,“东”,“下来”子图(3,1,3)图(t,orientation, measurement)“定位”)包含(“时间(s)”) ylabel (的旋转(度))传说(“滚”,“节”,“偏航”)
为跟踪场景生成INS测量
方法生成INS度量值insSensor
系统对象™。使用waypointTrajectory
生成地面真相路径。使用trackingScenario
组织模拟和可视化运动。
将地面真实轨迹指定为东北方向平面上的八字轨迹。使用50hz采样速率和5秒持续时间。
Fs = 50;时间= 5;numSamples = f *时间;t = (0: (numSamples-1)。/ Fs;= 2;X = a.*√(2).*cos(t) ./ (sin(t). X = a.*√(2).*cos(t) ./ (sin(t). X = a。^ 2 + 1);Y = sin(t) .* x;z = 0 (numSamples, 1);路点= [x, y, z];路径= waypointTrajectory (“锚点”锚点,“TimeOfArrival”t);
创建一个insSensor
接收INS数据的建模系统对象。设置PositionAccuracy
来0.1
.
ins = insSensor (“PositionAccuracy”, 0.1);
创建一个单平台的跟踪场景,其运动定义为路径
.
场景= trackingScenario (“UpdateRate”Fs);四轴飞行器=平台(场景);四轴飞行器。轨迹=路径;
创造一个戏剧情节来可视化基本真相四轴飞行器
运动和四轴飞行器运动测量模型insSensor
.
tp = theaterPlot (“XLimits”, 3, 3,“YLimits”, 3, 3);quadPlotter = platformPlotter (tp,…“DisplayName的”,“真实运动”,…“标记”,“年代”,…“MarkerFaceColor”,“蓝”);insPlotter = detectionPlotter (tp,…“DisplayName的”,“INS测量”,…“标记”,' d ',…“MarkerFaceColor”,“红色”);
在循环中,推进场景直到它完成。对于每个时间步,获取当前运动样本,为运动建模INS测量,然后绘制结果。
而advance(场景)motion = platformpose(场景)“四元数”);insMeas = ins(运动);plotPlatform (quadPlotter motion.Position);plotDetection (insPlotter insMeas.Position);暂停(1 / scenario.UpdateRate)结束
生成转向平台的INS测量
方法生成INS度量值insSensor
系统对象™。使用waypointTrajectory
生成地面真相路径。
指定从传感器体开始的地面真实方向x-轴与北对齐,末端与传感器体x-轴与东方对齐。为弧线轨迹指定路径点,并为相应的路径点指定到达时间向量。使用100赫兹的采样率。创建一个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 (“锚点”锚点,…“TimeOfArrival”toa,…“定位”取向,…“SampleRate”Fs,…“SamplesPerFrame”, numSamples);
创建一个insSensor
接收INS数据的建模系统对象。设置PositionAccuracy
来0.1
.
ins = insSensor (“PositionAccuracy”, 0.1);
称之为路径点轨迹对象,路径
,以产生地面真实运动。给INS模拟器打电话,ins
,与地面真实运动生成国际惯导测量。
[motion.Position, motion.Orientation,运动。速度]=路径();insMeas = ins(运动);
转换返回的方向ins
欧拉角的角度,便于可视化。绘制完整的路径和方向。
orientationMeasurementEuler = eulerd (insMeas。取向,“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 (的旋转(度))
扩展功能
C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。