Логи и топики PX4

Для детального анализа поведения прошивки PX4 можно просмотреть полетные логи. Полетные логи представляют собой сообщения в uORB-топиках, записанные в файл с раширением .ulg. Лог-файл можно скачать с помощью QGroundControl по Wi-Fi или USB во вкладке Log Download:

Также необходимые .ulg-файлы можно скопировать непосредственно с MicroSD-карты, находившейся в полетном контроллере.

Анализ

Лог-файл можно анализировать с помомщью программы FlightPlot. Актуальную версию программы можно скачать на GitHub.

В программе можно просмотреть полный список записанных топиков (Fields List). В нем нужно выбрать необходимые топики, после чего они появятся на графике:

Основные топики в PX4

uORB представляет собой pubsub механизм, аналогичный ROS-топикам, однако сильно упрощенный и подходящий для embedded-среды.

Полный список топиков можно узнать в исходном коде проекта в каталоге msg.

Список некоторых топиков:

  • vehicle_status – состояние коптера (режим и т. д.);
  • vehicle_local_position – локальная позиция коптера;
  • vehicle_attitude – ориентация коптера;
  • vehicle_local_position_setpoint – целевая точка (setpoint) коптера по позиции;
  • vehicle_global_position – глобальная позиция коптера;
  • vehicle_vision_position – полученная визуальная позиция коптера, аналог MAVLink пакета VISION_POSITION_ESTIMATE или MAVROS-топика /mavros/vision_position_estimate/pose;
  • att_pos_mocap – полученная MOCAP-позиция коптера, аналог MAVLink пакета ATT_POS_MOCAP или MAVROS-топика /mavros/mocap/pose;
  • actuator_controls – сигналы на моторы;
  • vehicle_land_detected – статус Land-detector'а;

Мониторинг топиков в режиме реального времени

Для более новых версий платы PixHawk (px4fmu-v3), а также для плат PixRacer, в прошивку включен модуль topic_listener, который позволяет просматривать значения топиков в режиме реального времени (в том числе в полете).

Для ее использования нужно выбрать вкладку Mavlink Console в QGroundControl:

Команда list_topics выводит список топиков, доступных для просмотра (включена только в SITL).

Команда listener <название топика> выводит текущее значение в топике. Существует третий опциональный параметр, который определяет количество сообщений, которые необходимо вывести.

Примеры команд:

listener vehicle_local_position

listener vehicle_attitude 5

results matching ""

    No results matching ""