INS块的操作
我们将通过考虑哪些误差将出现在车辆左转的轨迹上,来演示惯性导航系统(INS)的误差模拟单元是如何工作的。
上传数据
矢量可以以任何格式存储,在本例中它们作为单独的矢量在JLD2或MAT文件中。 从文件下载它们:
In [ ]:
Pkg.add("JLD2")
In [ ]:
using JLD2
@load "leftTurnTrajectory.jld2"
Out[0]:
此文件包含以下变量:
dt-测量时间步长,可用于采样(等于0.4s),t-测量时间矢量,从0到7.88秒vehPos,vehVel,vehAcc,vehOrient,vehAngVel-轨迹参数的记录:位置,速度,加速度,角定向和角速度,每个都有3个参数的198个测量值。
让我们准备WorkspaceArray对象,每个对象都包含一个时间向量。 t 并且,对于每个时间框架,三个坐标(笛卡尔坐标系中的位置,速度和加速度,以及欧拉角和角速度):
In [ ]:
using DataFrames
vehPos_wa = WorkspaceArray("vehPos_wa", DataFrame(time = t[:], value = [collect(vec((row))) for row in eachrow(vehPos)]));
vehVel_wa = WorkspaceArray("vehVel_wa", DataFrame(time = t[:], value = [collect(vec((row))) for row in eachrow(vehVel)]));
vehOrient_wa = WorkspaceArray("vehOrient_wa", DataFrame(time = t[:], value = [collect(vec((row))) for row in eachrow(vehOrient)]));
vehAcc_wa = WorkspaceArray("vehAcc_wa", DataFrame(time = t[:], value = [collect(vec((row))) for row in eachrow(vehAcc)]));
vehAngVel_wa = WorkspaceArray("vehAngVel_wa", DataFrame(time = t[:], value = [collect(vec((row))) for row in eachrow(vehAngVel)]));
启动模型
我们的例子伴随着一个模型,我们将打开并运行。:
In [ ]:
engee.open("$(@__DIR__)/simulate_ins_block.engee")
data = engee.run("simulate_ins_block")
Out[0]:
该模型由两部分组成:数据导入,使用ANN块降噪,以及用于显示结果的图形(也可在信号可视化面板上获得)。
座 FromWorkspace 它需要一个特殊的WorkspaceArray格式,我们之前创建的对象。 它大大简化了实验数据的插值和外推。
结论
从图中可以看出,尽管输出数据与输入数据相当接近,但ANN模块增加了一定量的测量噪声。