Данные рейсы траектории для этого примера хранятся в файле с разделенными запятыми значениями в формате. Используя 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\FlightGear<your_FlightGear_version>'; 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.1' OutputFileName: 'runfg.bat' FlightGearBaseDirectory: 'C:\Program Files\FlightGear<your_FlightGear_version>' 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 Flight Simulator).
Примечание
The FlightGearBaseDirectory
и OutputFileName
свойства должны состоять из символов ASCII.
Чтобы запустить FlightGear из командной строки MATLAB, используйте system
команда для выполнения скрипта запуска. Укажите имя выходного файла, созданного GenerateRunScript, в качестве аргумента:
system('runfg.bat &');
FlightGear запускается в отдельном окне.
Совет
В особом внимании окна FlightGear нажмите клавишу V, чтобы чередовать различные виды самолета: кабина, вертолет, погоня и так далее.
Теперь вы готовы воспроизвести данные (см. Игру Назад к Рейсу Траектории). Если вы не можете просмотреть сцены, см. Раздел «Установка дополнительных сцен FlightGear».
Совет
Если FlightGear использует больше компьютерных ресурсов, чем вы хотите, можно изменить его приоритет планирования на меньший. Например, см. команды, такие как Windows® start
и Linux® nice
или их эквиваленты.
После запуска FlightGear объект FlightGearAnimation может начать связь с FlightGear. Для анимации данных траектории рейса используйте команду play:
play(h)
Следующий рисунок показывает снимок воспроизведения данных о рейсе в виде башни без рыскания.