Работа блока ИНС
Продемонстриурем, как работает блок имитации погрешностей инерциальной навигационной системы (ИНС), рассмотрев, какие погрешности появятся на траектории, где транспортное средство предпринимает поворот налево.
Загружаем данные
Векторы могут храниться в любом формате, в данном примере они находятся в JLD2 или MAT файле в виде отдельных векторов. Загрузим их из файла:
Pkg.add("JLD2")
using JLD2
@load "leftTurnTrajectory.jld2"
В этом файле лежат следующие переменные:
dt- временной шаг измерений, можно использовать для дискретизации (равен 0.4 с),t- вектор времени совершения измерений, от 0 до 7.88 секундvehPos,vehVel,vehAcc,vehOrient,vehAngVel- запись параметров траектории: положения, скорости, ускорения, угловой ориентации и угловой скорости, в каждом 198 измерений по 3 параметра.
Подготовим объекты WorkspaceArray, в каждом из которых лежит вектор времени t и, для каждого временного отсчета, три координаты (положение, скорость и ускорение в декартовой системе координат, а также углы Эйлера и угловая скорость):
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)]));
Запуск модели
Наш пример сопровождается моделью, которую мы откроем и запустим:
engee.open("$(@__DIR__)/simulate_ins_block.engee")
data = engee.run("simulate_ins_block")
.png)
Модель состоит из двух частей: импорт данных, зашумление при помощи блока ИНС, и графика для вывода результатов (также доступны на панели Визуализация сигналов).
Блок FromWorkspace требует специального формата WorkspaceArray, объекты которого мы создали ранее. Он значительно упрощает интерполяцию и экстраполяцию экспериментальных данных.
Заключение
Как видно из графиков, блок ИНС добавляет заданное количество шума измерений, хотя выходные данные вполне близки к входным.