Анализируйте журнал рейса автопилота UAV Используя Flight Log Analyzer

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

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

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

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

  • Существует ли какая-либо сильная вибрация

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

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

Во вкладке Apps, в соответствии с Проектом Системы управления и Анализом, нажимают 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 журнала рейса Импорта отображение сигнала и данные логов от диалогового окна Workspace, выберите ulogreader объект ulg и нажмите Import.

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

Создайте фигуры и графики

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

Добавьте предопределенный график

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

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

Измените особое внимание графика Используя регулятор панорамы

В панели Режимов Рейса найдите первую инстанцию Слоняться режима рейса и отметьте его значения Времени начала и Времени окончания. Фокусируйтесь на режиме рейса, в панели Регулятора панорамы, перетаскивая красные и синие указатели на Время начала и Время окончания, соответственно, желаемого режима рейса. В качестве альтернативы можно ввести значения Времени начала и Времени окончания в полях Left and Right ниже полосного графика. Кликните по Ускоряющему графику фокусироваться на нем.

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

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

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

  1. Во-первых, в разделе Custom Plots галереи графика, нажмите Timeseries.

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

  3. Дважды кликните столбец Оси Y первого сигнала и, в панели Браузера Сигнала, введите RollTarget в Поле поиска, и затем кликают по стреле рядом с AttitudeTargetEuler и выберите RollTarget. Затем нажмите Update.

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

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

  6. В Панели выберите Легенду Show, чтобы показать легенду на графике.

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

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

Чтобы далее анализировать данные, можно экспортировать сигналы. На панели инструментов приложения нажмите Export, и затем выберите Export 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. На панели инструментов приложения нажмите Import и выберите From Workspace.

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

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

  4. Нажмите Import.

Создайте, пользовательский Timeseries строит и выполняет шаги в, Добавляет Пользовательский График добавить 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

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