Данные о траектории рейса для этого примера хранятся в разделенном значении запятой, отформатировал файл. Используя dlmread
, данные считаны из файла, запускающегося в строке 1 и столбце 0, который не использует информацию о заголовке.
tdata = dlmread('asthl20log.csv',',',1,0);
Объект временных рядов, ts
, создается из широты, долготы, высоты, данных об Угле Эйлера и массива времени в tdata
с помощью команды MATLAB® timeseries
. Широта, долгота и Углы Эйлера также преобразованы от степеней до радианов с помощью функции convang
.
ts = timeseries([convang(tdata(:,[3 2]),'deg','rad') ... tdata(:,4) convang(tdata(:,5:7),'deg','rad')],tdata(:,1));
Этот ряд команд создает объект FlightGearAnimation:
Откройте объект FlightGearAnimation.
h = fganimation;
Установите свойства объектов FlightGearAnimation для временных рядов.
h.TimeseriesSourceType = 'Timeseries'; h.TimeseriesSource = ts;
Установите свойства объектов FlightGearAnimation, относящиеся к FlightGear. Эти свойства включают путь к папке установки, номеру версии, модели геометрии самолета и сетевой информации для средства моделирования рейса FlightGear.
h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear20182'; h.FlightGearVersion = '2018.2'; h.GeometryModelName = 'HL20'; h.DestinationIpAddress = '127.0.0.1'; h.DestinationPort = '5502';
Установите начальные условия (местоположение и ориентация) для средства моделирования рейса FlightGear.
h.AirportId = 'KSFO'; h.RunwayId = '10L'; h.InitialAltitude = 7224; h.InitialHeading = 113; h.OffsetDistance = 4.72; h.OffsetAzimuth = 0;
Установите секунды данных анимации в секунду тактового стеной времени.
h.TimeScaling = 5;
Проверяйте свойства объектов FlightGearAnimation и их значения.
get(h)
Пример прекращает запускаться и возвращает объект FlightGearAnimation, h
:
TimeseriesSource: [1x1 timeseries] TimeseriesSourceType: 'Timeseries' TimeseriesReadFcn: @TimeseriesRead TimeScaling: 5 FramesPerSecond: 12 FlightGearVersion: '2018.2' OutputFileName: 'runfg.bat' FlightGearBaseDirectory: 'C:\Program Files\FlightGear20182' GeometryModelName: 'HL20' DestinationIpAddress: '127.0.0.1' DestinationPort: '5502' AirportId: 'KSFO' RunwayId: '10L' InitialAltitude: 7224 InitialHeading: 113 OffsetDistance: 4.7200 OffsetAzimuth: 0 TStart: NaN TFinal: NaN Architecture: 'Default'
Можно теперь установить свойства объектов для воспроизведения данных (см. Изменение Свойств объектов FlightGearAnimation).
Измените свойства объектов FlightGearAnimation по мере необходимости. Если ваша папка установки FlightGear отличается от того в примере (например, FlightGear
), измените свойство FlightGearBaseDirectory
путем выдачи следующей команды:
h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear';
Точно так же, если вы хотите использовать конкретное имя файла для скрипта выполнения, измените свойство OutputFileName
.
Проверьте свойства объектов FlightGearAnimation:
get(h)
Можно теперь сгенерировать скрипт выполнения (см. Генерацию Скрипта Выполнения).
Чтобы запустить FlightGear с начальных условий (местоположение, дата, время, погода, рабочие режимы), что вы хотите, создают скрипт выполнения при помощи команды GenerateRunScript
:
GenerateRunScript(h)
По умолчанию GenerateRunScript
сохраняет скрипт выполнения как текстовый файл под названием runfg.bat
. Можно задать другое имя путем изменения свойства OutputFileName
объекта FlightGearAnimation, как описано на предыдущем шаге.
Вы не должны генерировать файл каждый раз, когда данные просматриваются, только когда информация о начальных условиях или FlightGear изменяется.
Вы теперь готовы запустить FlightGear (см. Запуск Средства моделирования Рейса FlightGear).
Свойства FlightGearBaseDirectory
и OutputFileName
должны состоять из символов ASCII.
Чтобы запустить FlightGear с подсказки команды MATLAB, используйте команду system
, чтобы выполнить скрипт выполнения. Обеспечьте имя выходного файла, созданного GenerateRunScript в качестве аргумента:
system('runfg.bat &');
FlightGear запускается в отдельном окне.
С окном FlightGear в особом внимании нажмите V клавиш, чтобы чередоваться между различными представлениями самолета: кабина, вертолет, преследование, и так далее.
Вы теперь готовы воспроизвести данные (см. Воспроизведение Траектории Рейса). Если вы не можете просмотреть сцены, смотрите Устанавливающий Дополнительный Пейзаж FlightGear.
Если FlightGear использует больше ресурсов компьютера, чем вы хотите, можно изменить его приоритет планирования на меньший. Например, смотрите команды как Windows® start
и Linux® nice
или их эквиваленты.
Если FlightGear запускается, объект FlightGearAnimation может начать связываться с FlightGear. Чтобы анимировать данные о траектории рейса, используйте команду игры:
play(h)
Следующий рисунок показывает снимок состояния воспроизведения полетных данных в представлении башни без отклонения от курса.