В этом примере показано, как создать анимацию рейса для траектории с помощью объекта FlightGear Animation.
Примечание.При запуске этого примера в продукте необходимо настроить пример с помощью установки FlightGear и разомкнуть команды GenerateRunScript, system и play. Необходимо также скопировать папку $ MATLAB/toolbox/aero/astdemos/HL20 в папку $ FLIGHTGEAR/data/Aircraft/.
Данные рейсы траектории для этого примера хранятся в файле с разделенными запятыми значениями в формате. Используйте dlmread, чтобы считать данные из файла, начиная с строки 1 и столбца 0, пропуская информацию о заголовке.
tdata = dlmread('asthl20log.csv',',',1,0);
Используйте команду MATLAB ® timeseries, чтобы создать объект временных рядов 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]), 'deg', 'rad') tdata (:, 4)... convang (tdata (:, 5:7), 'deg', 'rad')];
и 'Array3DoF'.
ts = [tdata (:, 1) convang (tdata (:, 3), 'deg', 'rad') tdata (:, 4)... convang (tdata (:, 6), 'deg', 'rad')];
Откройте объект FlightGearAnimation.
h = Aero.FlightGearAnimation;
Установите свойства объекта FlightGearAnimation для timeseries.
h.TimeseriesSourceType = 'Timeseries';
h.TimeseriesSource = ts;
Установите свойства объекта FlightGearAnimation о FlightGear
Эти свойства включают путь к папке установки, модель геометрии самолета и информацию о сети для симулятора рейса FlightGear.
h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear'; 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. Требуемые декорации будут загружены во время работы симулятора. Для систем Windows ® при запуске FlightGear с включенной опцией может возникнуть сообщение об ошибке. Для получения дополнительной информации смотрите Установка дополнительного FlightGear Scenery.
h.InstallScenery = true;
Отключите шейдеры FlightGear.
h.DisableShaders = true;
Установите секунды данных анимации в секунду настенного времени.
h.TimeScaling = 5;
Используйте get (h), чтобы проверить свойства объекта FlightGearAnimation и их значения.
get(h)
TimeseriesSource: [1x1 timeseries] TimeseriesSourceType: 'Timeseries' TimeseriesReadFcn: @TimeseriesRead TimeScaling: 5 FramesPerSecond: 12 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, используйте команду play.
play (h)
Для отображения скриншота анимации рейса используйте команду MATLAB image.
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');