Анализ журнала рейсов автопилота БПЛА с помощью Flight Log Analyzer

В этом примере показано, как запустить приложение Flight Log Analyzer, импортировать данные журнала рейсов, создать рисунки и графики, экспортировать сигналы и использовать пользовательское отображение сигналов в приложении.

Приложение Flight Log Analyzer позволяет вам анализировать файлы журнала, сгенерированные симулированными или реальными рейсами.

Журнал анализ помогает найти первопричину сбоя или контролировать состояние во время рейса транспортного средства. Можно выполнить основной анализ, чтобы определить:

  • Насколько хорошо контроллеры отслеживают свои ссылки

  • Есть ли сильная вибрация

  • Если транспортное средство испытывает отказы в степени

Откройте приложение Flight Log Analyzer

На вкладке Apps, в разделе Control System Design and Analysis, нажмите Flight Log Analyzer.

Также можно использовать flightLogAnalyzer функция из командной строки MATLAB ®.

Импорт файла ULOG

Загрузите файл ULOG.

ulg = ulogreader('flight.ulg')
ulg = 
  ulogreader with properties:

            FileName: 'flight.ulg'
           StartTime: 00:00:00.176000
             EndTime: 00:02:15.224000
     AvailableTopics: [51x5 table]
    DropoutIntervals: [0x2 duration]

На панели инструментов приложения Flight Log Analyzer выберите Import > From Workspace. В разделе Log Data окна Import flight log signal mapping and logg data from Workspace выберите ulogreader ulg объекта и нажмите Импортировать.

По умолчанию приложение отображает спутниковую карту с записанными в журнал данными GPS и режимами рейса в виде таблицы. Режимы рейса вместе с соответствующими временами начала и конца сведены в таблицу на панели Рейса Modes.

Создание фигур и графиков

Каждый БПЛА (фиксированный или мультиротор) оборудован набором датчиков, таких как гироскоп, акселерометр, магнитометр и барометр, для определения состояния транспортного средства. Состояние транспортного средства включает в себя положение, скорость, высоту, скорость и скорости вращения транспортного средства.

Добавление предопределенного графика

В разделе Plot на панели инструментов приложения нажмите Add Figure, чтобы добавить пустой рисунок на панель графического изображения. Затем в галерее графиков нажмите IMU, чтобы добавить графики к рисунку для гироскопа, гироскопа и акселерометра, Accelerometer.

Можно использовать различные предопределенные графики из галереи графиков, чтобы визуализировать данные с разных датчиков.

Изменение особого внимания графика с помощью панорамы

На панели Режимы рейса найдите первый образец режима рейса Loiter и отметьте его значения Время начала и Время окончания. Особое внимание на режиме рейса путем, на панели Panner, перетаскивания красных и синих указателей на начальное и конечное время, соответственно, необходимого режима рейса. Кроме того, можно ввести значения «Время начала» и «Время окончания» в полях «Слева» и «Справа» под полосным графиком. Щелкните График ускорения (Acceleration plot), чтобы сосредоточиться на нем.

Если вибрация БПЛА находится в хорошей области значений, то z- ускорение оси должно оставаться ниже x-ось и y- ускорение оси. Нанесенные на график данные о рейсе указывают, что в этой точке рейса вибрация БПЛА находится в хорошей области значений. Используя «Паннер», сосредоточьтесь на трех других режимах рейса «Лойтера» и наблюдайте разгон БПЛА.

Добавление пользовательского графика

Затем создайте пользовательский график Timeseries, чтобы сравнить предполагаемый крен с целевым значением крена.

  1. Сначала в разделе Пользовательские графики галереи графиков нажмите Timeseries.

  2. На панели «Сигналы» дважды нажмите Add Signal, чтобы добавить два сигнала.

  3. Дважды кликните столбец Y-Axis первого сигнала и в панели Signal Browser введите RollTarget в поле поиска, а затем щелкните стреле рядом с AttitudeTargetEuler и выберите RollTarget. Затем нажмите кнопку Обновить.

  4. Повторите предыдущие три шага для добавления второго сигнала Roll.

  5. Переименуйте первый сигнал в RollTarget и второй сигнал на Roll. Чтобы переименовать сигнал, дважды кликните его запись в столбце «Имя сигнала» и введите новое имя.

  6. На панели «Сведения» выберите «Легенда Показа», чтобы отобразить легенду на графике.

График показывает, что расчетный крен тесно следует по цели крена до последних нескольких секунд рейса.

Экспортируйте сигналы

Для дальнейшего анализа данных можно экспортировать сигналы. На панели инструментов приложения нажмите Экспорт, а затем выберите Экспорт Signal.

Используйте диалоговое окно Export Signal, чтобы выбрать интересующие вас сигналы и экспортировать их В Рабочую область или В MAT-файл. Сигналы экспортируются как расписание.

Использование пользовательского отображения сигналов в приложении Flight Log Analyzer

Отображение сигнала по умолчанию возвращает предопределенный набор сигналов.

flsmObj = flightLogSignalMapping('ulog');
info(flsmObj,"Signal")
ans=18×4 table
         SignalName          IsMapped                                                                                                   SignalFields                                                                                                                       FieldUnits                     
    _____________________    ________    __________________________________________________________________________________________________________________________________________________________________________________________________________    ___________________________________________________

    "Accel"                   true       "AccelX, AccelY, AccelZ"                                                                                                                                                                                      "m/s^2, m/s^2, m/s^2"                              
    "Airspeed"                true       "PressDiff, IndicatedAirSpeed, Temperature"                                                                                                                                                                   "Pa, m/s, degreeC"                                 
    "AttitudeEuler"           true       "Roll, Pitch, Yaw"                                                                                                                                                                                            "rad, rad, rad"                                    
    "AttitudeRate"            true       "BodyRotationRateX, BodyRotationRateY, BodyRotationRateZ"                                                                                                                                                     "rad/s, rad/s, rad/s"                              
    "AttitudeTargetEuler"     true       "RollTarget, PitchTarget, YawTarget"                                                                                                                                                                          "rad, rad, rad"                                    
    "Barometer"               true       "PressAbs, PressAltitude, Temperature"                                                                                                                                                                        "Pa, m, degreeC"                                   
    "Battery"                 true       "Voltage_1, Voltage_2, Voltage_3, Voltage_4, Voltage_5, Voltage_6, Voltage_7, Voltage_8, Voltage_9, Voltage_10, Voltage_11, Voltage_12, Voltage_13, Voltage_14, Voltage_15, Voltage_16, RemainingCapacity"    "v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, %"
    "GPS"                     true       "Latitude, Longitude, Altitude, GroundSpeed, CourseAngle, SatellitesVisible"                                                                                                                                  "degree, degree, m, m/s, degree, N/A"              
    "Gyro"                    true       "GyroX, GyroY, GyroZ"                                                                                                                                                                                         "rad/s, rad/s, rad/s"                              
    "LocalENU"                true       "X, Y, Z"                                                                                                                                                                                                     "m, m, m"                                          
    "LocalENUTarget"          true       "XTarget, YTarget, ZTarget"                                                                                                                                                                                   "m, m, m"                                          
    "LocalENUVel"             true       "VX, VY, VZ"                                                                                                                                                                                                  "m/s, m/s, m/s"                                    
    "LocalENUVelTarget"       true       "VXTarget, VYTarget, VZTarget"                                                                                                                                                                                "m/s, m/s, m/s"                                    
    "LocalNED"                true       "X, Y, Z"                                                                                                                                                                                                     "m, m, m"                                          
    "LocalNEDTarget"          true       "XTarget, YTarget, ZTarget"                                                                                                                                                                                   "m, m, m"                                          
    "LocalNEDVel"             true       "VX, VY, VZ"                                                                                                                                                                                                  "m/s, m/s, m/s"                                    
      ⋮

При сложении предопределенного набора сигналов можно сопоставить другие сигналы, присутствующие в журнале рейса. Для примера используйте mapSignal для сопоставления WindSpeed на flightLogSignalMapping объект, flsmObj.

mapSignal(flsmObj,"WindSpeed", ...
    @(data)getTime(getTable(data,"wind_estimate")), ...
    @(data)getModeValue(getTable(data,"wind_estimate")), ...
    ["WindSpeed_East","WindSpeed_North"]);

Проверяйте это flsmObj теперь содержит новый сигнал.

info(flsmObj,"Signal")
ans=19×4 table
         SignalName          IsMapped                                                                                                   SignalFields                                                                                                                       FieldUnits                     
    _____________________    ________    __________________________________________________________________________________________________________________________________________________________________________________________________________    ___________________________________________________

    "Accel"                   true       "AccelX, AccelY, AccelZ"                                                                                                                                                                                      "m/s^2, m/s^2, m/s^2"                              
    "Airspeed"                true       "PressDiff, IndicatedAirSpeed, Temperature"                                                                                                                                                                   "Pa, m/s, degreeC"                                 
    "AttitudeEuler"           true       "Roll, Pitch, Yaw"                                                                                                                                                                                            "rad, rad, rad"                                    
    "AttitudeRate"            true       "BodyRotationRateX, BodyRotationRateY, BodyRotationRateZ"                                                                                                                                                     "rad/s, rad/s, rad/s"                              
    "AttitudeTargetEuler"     true       "RollTarget, PitchTarget, YawTarget"                                                                                                                                                                          "rad, rad, rad"                                    
    "Barometer"               true       "PressAbs, PressAltitude, Temperature"                                                                                                                                                                        "Pa, m, degreeC"                                   
    "Battery"                 true       "Voltage_1, Voltage_2, Voltage_3, Voltage_4, Voltage_5, Voltage_6, Voltage_7, Voltage_8, Voltage_9, Voltage_10, Voltage_11, Voltage_12, Voltage_13, Voltage_14, Voltage_15, Voltage_16, RemainingCapacity"    "v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, %"
    "GPS"                     true       "Latitude, Longitude, Altitude, GroundSpeed, CourseAngle, SatellitesVisible"                                                                                                                                  "degree, degree, m, m/s, degree, N/A"              
    "Gyro"                    true       "GyroX, GyroY, GyroZ"                                                                                                                                                                                         "rad/s, rad/s, rad/s"                              
    "LocalENU"                true       "X, Y, Z"                                                                                                                                                                                                     "m, m, m"                                          
    "LocalENUTarget"          true       "XTarget, YTarget, ZTarget"                                                                                                                                                                                   "m, m, m"                                          
    "LocalENUVel"             true       "VX, VY, VZ"                                                                                                                                                                                                  "m/s, m/s, m/s"                                    
    "LocalENUVelTarget"       true       "VXTarget, VYTarget, VZTarget"                                                                                                                                                                                "m/s, m/s, m/s"                                    
    "LocalNED"                true       "X, Y, Z"                                                                                                                                                                                                     "m, m, m"                                          
    "LocalNEDTarget"          true       "XTarget, YTarget, ZTarget"                                                                                                                                                                                   "m, m, m"                                          
    "LocalNEDVel"             true       "VX, VY, VZ"                                                                                                                                                                                                  "m/s, m/s, m/s"                                    
      ⋮

Чтобы использовать это пользовательское отображение сигналов в приложении Flight Log Analyzer:

  1. На панели инструментов приложения нажмите Импортировать и выберите Из рабочей области.

  2. В диалоговом окне выберите flsmObj из списка Отображение.

  3. Выберите ulogreader ulg объекта из раздела Log Data.

  4. Нажмите кнопку Импорт.

Создайте пользовательский график Timeseries и следуйте шагам в Add Custom Plot, чтобы добавить WindSpeed_East и WindSpeed_North сигналы от браузера сигналов.

Вы можете использовать этот процесс, чтобы сопоставить другие сигналы с пользовательским объектом отображения сигналов и визуализировать их в приложении.

Ссылки

[1] PX4 автопилот. «Анализ журнала рейсов». PX4 руководство пользователя. Доступ к 14 декабря 2020 года. https://docs.px4.io/master/en/log/flight_log_analysis.html

[2] PX4 автопилот. «Логгирование анализа с использованием проверки полетов». PX4 руководство пользователя. Доступ к 14 декабря 2020 года. https://docs.px4.io/master/en/log/flight_review.html

Для просмотра документации необходимо авторизоваться на сайте