Документация Engee
Notebook

Работа блока ИНС

Продемонстриурем, как работает блок имитации погрешностей инерциальной навигационной системы (ИНС), рассмотрев, какие погрешности появятся на траектории, где транспортное средство предпринимает поворот налево.

Загружаем данные

Векторы могут храниться в любом формате, в данном примере они находятся в JLD2 или MAT файле в виде отдельных векторов. Загрузим их из файла:

In [ ]:
Pkg.add("JLD2")
In [ ]:
using JLD2
@load "leftTurnTrajectory.jld2"
Out[0]:
7-element Vector{Symbol}:
 :dt
 :vehPos
 :t
 :vehAcc
 :vehOrient
 :vehVel
 :vehAngVel

В этом файле лежат следующие переменные:

  • dt - временной шаг измерений, можно использовать для дискретизации (равен 0.4 с),
  • t - вектор времени совершения измерений, от 0 до 7.88 секунд
  • vehPos, vehVel, vehAcc, vehOrient, vehAngVel - запись параметров траектории: положения, скорости, ускорения, угловой ориентации и угловой скорости, в каждом 198 измерений по 3 параметра.

Подготовим объекты 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]:
SimulationResult(
    run_id => 14,
    "insPos_xyz" => WorkspaceArray{Matrix{Float64}}("simulate_ins_block/insPos_xyz")
,
    "vehPos_xyz" => WorkspaceArray{Vector{Float64}}("simulate_ins_block/vehPos_xyz")

)
image.png

Модель состоит из двух частей: импорт данных, зашумление при помощи блока ИНС, и графика для вывода результатов (также доступны на панели Визуализация сигналов).

Блок FromWorkspace требует специального формата WorkspaceArray, объекты которого мы создали ранее. Он значительно упрощает интерполяцию и экстраполяцию экспериментальных данных.

Заключение

Как видно из графиков, блок ИНС добавляет заданное количество шума измерений, хотя выходные данные вполне близки к входным.