Этот пример показывает, как создать анимацию рейса для траектории с помощью Объекта Animation FlightGear.
Примечание: При выполнении этого примера в продукте, необходимо настроить пример с установкой FlightGear и не прокомментировать GenerateRunScript, систему и команды игры. Необходимо также скопировать папку $MATLAB/toolbox/aero/astdemos/HL20 в папку $FLIGHTGEAR/data/Aircraft/.
Данные о траектории рейса для этого примера хранятся в разделенном значении запятой, отформатировал файл. Используйте dlmread, чтобы считать данные из файла, запускающегося в строке 1 и столбце 0, пропускающем информацию о заголовке.
tdata = dlmread('asthl20log.csv',',',1,0);
Используйте команду timeseries MATLAB®, чтобы создать объект временных рядов, ts, от широты, долготы, высоты и данных об Угле Эйлера наряду с массивом времени в tdata. Чтобы преобразовать широту, долгота и Углы Эйлера от степеней до радианов используют функцию convang.
ts = timeseries([convang(tdata(:,[3 2]),'deg','rad') ... tdata(:,4) convang(tdata(:,5:7),'deg','rad')],tdata(:,1));
Можно создать импортированные данные из этих данных с помощью других допустимых форматов, таких как 'Array6DoF', Например:
ts = [tdata (: 1) convang (tdata (: [3 2]), 'градус', 'рад') tdata (: 4)... convang (tdata (: 5:7), 'градус', 'рад')];
и 'Array3DoF'.
ts = [tdata (: 1) convang (tdata (: 3), 'градус', 'рад') tdata (: 4)... convang (tdata (: 6), 'градус', 'рад')];
Откройте объект FlightGearAnimation.
h = Aero.FlightGearAnimation;
Установите свойства объектов FlightGearAnimation для timeseries.
h.TimeseriesSourceType = 'Timeseries';
h.TimeseriesSource = ts;
Установите свойства объектов FlightGearAnimation о FlightGear
Эти свойства включают путь к папке установки, номеру версии, модели геометрии самолета и сетевой информации для средства моделирования рейса FlightGear.
h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear'; 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;
Включите "как раз вовремя" установку пейзажа для средства моделирования рейса FlightGear. Необходимый пейзаж будет загружен, в то время как средство моделирования запускается.
h.InstallScenery = true;
Отключите программы построения теней FlightGear.
h.DisableShaders = true;
Установите секунды данных анимации в секунду тактового стеной времени.
h.TimeScaling = 5;
Использование заставляет (h) проверять свойства объектов FlightGearAnimation и их значения.
get(h)
TimeseriesSource: [1x1 timeseries] TimeseriesSourceType: 'Timeseries' TimeseriesReadFcn: @TimeseriesRead TimeScaling: 5 FramesPerSecond: 12 FlightGearVersion: '2018.2' OutputFileName: 'runfg.bat' FlightGearBaseDirectory: 'C:\Program Files\FlightGear' GeometryModelName: 'HL20' DestinationIpAddress: '127.0.0.1' DestinationPort: '5502' AirportId: 'KSFO' RunwayId: '10L' InitialAltitude: 7224 InitialHeading: 113 OffsetDistance: 4.7200 OffsetAzimuth: 0 InstallScenery: 1 DisableShaders: 1 TStart: NaN TFinal: NaN Architecture: 'Default'
Запустить FlightGear с желаемых начальных условий (местоположение, дата, время, погода, и рабочие режимы), создают скрипт выполнения с командой GenerateRunScript. По умолчанию GenerateRunScript сохраняет скрипт выполнения как текстовый файл под названием 'runfg.bat'.
GenerateRunScript (h)
Вы не должны генерировать этот файл каждый раз, когда данные просматриваются. Сгенерируйте его только, когда желаемая информация о начальных условиях или FlightGear изменится.
Чтобы запустить FlightGear с подсказки команды MATLAB, введите системную команду, чтобы выполнить скрипт выполнения, созданный GenerateRunScript.
система ('runfg.bat &');
Совет: С окном FlightGear в особом внимании нажмите V клавиш, чтобы чередоваться между различными представлениями самолета: представление кабины, вертолетное представление и представление преследования.
Если FlightGear в порядке, объект FlightGearAnimation может начать связываться с FlightGear. Чтобы отобразить анимацию рейса с FlightGear, используйте команду игры.
вопроизведите (h)
Чтобы отобразить снимок экрана анимации рейса, используйте команду изображений MATLAB.
image(imread([matlabroot filesep fullfile('toolbox','aero','astdemos','figures','astfganim01.png')],'png')); axis off; set(gca,'Position',[ 0 0 1 1 ]); set(gcf,'MenuBar','none');