insSensor
惯性导航系统与GNSS/GPS仿真模型
描述
的insSensor
System object™模拟了一种设备,该设备融合了来自惯性导航系统(INS)和全球导航卫星系统(GNSS)(如GPS)的测量结果,并输出融合的测量结果。
输出融合的INS和GNSS测量值:
创建
insSensor
对象并设置其属性。调用带参数的对象,就像调用函数一样。
要了解有关System对象如何工作的更多信息,请参见什么是系统对象?
创建
属性
除非另有说明,否则属性是nontunable,这意味着在调用对象之后不能更改它们的值。对象在调用时被锁定,而释放
函数将它们解锁。
如果一个属性可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见利用系统对象在MATLAB中进行系统设计。
MountingLocation
- - - - - -传感器在平台位置(m)
[00 00 00]
(默认)|形式的三元实值向量[xyz]
传感器在平台上的位置,单位为米,表示为形式为[的三元实值矢量xyz]。矢量定义传感器原点到平台原点的偏移量。
可调:是的
数据类型:单
|双
RollAccuracy
- - - - - -轧辊测量精度(度)
0.2
(默认)|非负实标量
传感器体的横摇测量精度,以度为单位,用非负实标量表示。
卷是绕着x传感器本体的-轴。将滚动噪声建模为白噪声过程。RollAccuracy
设置横摇测量噪声的标准差。
可调:是的
数据类型:单
|双
PitchAccuracy
- - - - - -节距测量精度(度)
0.2
(默认)|非负实标量
传感器体的螺距测量精度,以度为单位,用非负实标量表示。
球场是绕着y传感器本体的-轴。基音噪声被建模为一个白噪声过程。PitchAccuracy
定义基音测量噪声的标准偏差。
可调:是的
数据类型:单
|双
YawAccuracy
- - - - - -偏航测量精度(度)
1
(默认)|非负实标量
传感器体的偏航测量精度,以度为单位,用非负实标量表示。
偏航是绕着z传感器本体的-轴。偏航噪声被建模为一个白噪声过程。YawAccuracy
定义偏航测量噪声的标准偏差。
可调:是的
数据类型:单
|双
PositionAccuracy
- - - - - -位置测量精度(m)
[11 11]
(默认)|非负实标量|三元素实值向量
传感器体的位置测量精度,以米为单位,用非负实标量或三元实值矢量表示。向量的元素设置的精度x-,y- - - - - -,z-位置测量值。如果你指定PositionAccuracy
作为标量值,该对象将所有三个位置的精度设置为该值。
位置噪声被建模为白噪声过程。PositionAccuracy
定义位置测量噪声的标准差。
可调:是的
数据类型:单
|双
VelocityAccuracy
- - - - - -测速精度(m/s)
0.05
(默认)|非负实标量
测量传感器体速度的精度,单位为米/秒,用非负实标量表示。
将速度噪声建模为白噪声过程。VelocityAccuracy
定义速度测量噪声的标准差。
可调:是的
数据类型:单
|双
AccelerationAccuracy
- - - - - -加速度测量精度(m/s)2)
0
(默认)|非负实标量
测量传感器体加速度的精度,单位为米每秒,用非负实标量表示。
加速度噪声建模为白噪声过程。AccelerationAccuracy
定义加速度测量噪声的标准差。
可调:是的
数据类型:单
|双
AngularVelocityAccuracy
- - - - - -角速度测量精度(度/秒)
0
(默认)|非负实标量
测量传感器体角速度的精度,单位为米每秒,用非负实标量表示。
角速度建模为白噪声过程。AngularVelocityAccuracy
定义加速度测量噪声的标准差。
可调:是的
数据类型:单
|双
TimeInput
- - - - - -使能仿真时间输入
假
或0
(默认)|真正的
或1
HasGNSSFix
- - - - - -启用GNSS修复
真正的
或1
(默认)|假
或0
启用GNSS修复,指定为逻辑1
(真正的
)或0
(假
)。将此属性设置为假
来模拟GNSS接收器修复的丢失。当GNSS接收机定位丢失时,位置测量以由PositionErrorFactor
财产。
可调:是的
依赖关系
若要启用此属性,请设置TimeInput
来真正的
。
数据类型:逻辑
PositionErrorFactor
- - - - - -没有GNSS固定的位置误差因子
[00 00 00]
(默认)|负的标量|1 × 3的标量向量
RandomStream
- - - - - -随机数源
“全球流”
(默认)|'mt19937ar with seed'
随机数源,指定为以下选项之一:
“全球流”
——使用当前的全局随机数流生成随机数。'mt19937ar with seed'
生成随机数使用mt19937ar算法,与指定的种子种子
财产。
数据类型:字符
|字符串
种子
- - - - - -最初的种子
67
(默认)|非负整数
mt19937ar随机数生成器算法的初始种子,指定为非负整数。
依赖关系
若要启用此属性,请设置RandomStream
来'mt19937ar with seed'
。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
使用
描述
输入参数
gTruth
- - - - - -传感器本体惯性地真状态
结构
传感器体的惯性地真状态,在局部笛卡尔坐标下,指定为包含以下字段的结构:
场 | 描述 |
---|---|
“位置” |
以米为单位的实数有限的位置N的- × 3矩阵xyz)向量。N是当前帧中的采样数。 |
“速度” |
速度(v),单位为米每秒,指定为实的,有限的N的- × 3矩阵vxvyvz)向量。N是当前帧中的采样数。 |
“定位” |
相对于本地笛卡尔坐标系的方向,指定为以下选项之一:
每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器体坐标系的一帧旋转。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]))
simTime
- - - - - -仿真时间
非负实标量
模拟时间,以秒为单位,指定为非负实标量。
数据类型:单
|双
输出参数
测量
-测量传感器体的运动
结构
测量传感器体的运动,在局部笛卡尔坐标下,作为包含以下字段的结构返回:
场 | 描述 |
---|---|
“位置” |
以米为单位的实数有限的位置N的- × 3矩阵xyz)向量。N是当前帧中的采样数。 |
“速度” |
速度(v),单位为米每秒,指定为实的,有限的N的- × 3矩阵vxvyvz)向量。N是当前帧中的采样数。 |
“定位” |
相对于本地笛卡尔坐标系的方向,指定为以下选项之一:
每个四元数或旋转矩阵是从局部笛卡尔坐标系到当前传感器体坐标系的一帧旋转。N是当前帧中的采样数。 |
“加速” |
加速度(一个),单位是米/秒的平方,指定为实的,有限的N的- × 3矩阵一个x一个y一个z)向量。N是当前帧中的采样数。 |
“AngularVelocity” |
角速度(ω),单位为度/秒的平方,指定为实的,有限的N的- × 3矩阵ωxωyωz)向量。N是当前帧中的采样数。 |
返回的字段值类型为双
或单
的对应字段值的类型相同gTruth
输入。
对象的功能
要使用对象函数,请指定System对象作为第一个输入参数。例如,释放system对象的系统资源obj
,使用以下语法:
发行版(obj)
例子
从平稳输入生成INS测量值
创建一个运动结构,在本地东北向下(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 (的旋转(度))传说(“滚”,“节”,“偏航”)
生成一个车削平台的INS测量
生成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数据。设置PositionAccuracy
来0.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 (的旋转(度))
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
Abrir比如
Tiene una versión modificada de este ejemploo。是否对所有的修改进行了修改?
MATLAB编程
在MATLAB中,该函数对应于一个最基本的函数:
在MATLAB中,用MATLAB编写了仿真程序。Los navegadores web no admit commandos de MATLAB。
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。