Метадані PX4
PX4 використовує та генерує дані, які мають відповідні метадані, зрозумілі людині й машині:
- Параметри налаштовують поведінку PX4.
- Параметр представлено рядком ідентифікатора, який зіставляється зі значенням, що зберігається у PX4.
- Відповідні метадані включають опис параметра, його можливі значення, інформацію про те, як значення може бути представлено (наприклад, для бітових масок).
- Події повідомляють про події, такі як причини збою, попередження про низький заряд батареї, кінець калібрування і так далі.
- Подія позначається ідентифікатором і надсилається з відповідним рівнем журналу та аргументами.
- Пов'язані метадані включають повідомлення, опис та список аргументів (включаючи їх тип) кожної події.
- Конфігурація приводів налаштовує конкретну геометрію транспортного засобу, призначає приводи та двигуни вихідними сигналами контролера польоту та перевіряє реакцію приводу та двигуна.
- Метадані містять інформацію про підтримувані геометрії транспортних засобів, список вихідних драйверів та їх конфігурацію.
- QGroundControl використовує цю інформацію для динамічної побудови інтерфейсу конфігурації.
Метадані та переклади метаданих надаються зовнішнім системам, таким як QGroundControl, що дозволяє їм відображати інформацію про параметри та події, а також налаштовувати геометрію транспортного засобу та відображати відповідності виведення привода.
У цій темі пояснюється, як можна визначити метадані та допомогти перекладати рядки (а також "просто для інформації", як це все працює).
Переклад метаданих
Переклад метаданих PX4 виконується за допомогою Crowdin у проєкті PX4-Metadata-Translations. Для отримання додаткової інформації про роботу з PX4 та Crowdin див. Переклад.
Визначення метаданих
Метадані PX4 визначаються у вихідному коді PX4 разом з відповідними даними. Це можна зробити або в коментарі на C/C++ зі спеціальною розміткою для вказівки полів метаданих та їх значень, або за допомогою файлів YAML.
Докладнішу інформацію див. у темах для кожного типу даних:
- Параметри та конфігурації > Створення/визначення параметрів
- [Інтерфейс подій](. ./concept/events_interface.md)
- Метадані приводу (нижче)
Інструментарій метаданих
Процес обробки метаданих однаковий для всіх типів метаданих.
Метадані збираються у файли JSON кожного разу, коли збирається PX4.
Для більшості польотних контролерів (оскільки більшість з них мають достатньо доступного FLASH), файл JSON стискається xz-стисненням і зберігається у згенерованому бінарному файлі. Потім файл передається на наземні станції за допомогою протоколу MAVLink Component Metadata Protocol. Використання протоколу метаданих компонентів гарантує, що одержувач завжди отримує актуальні метадані для коду, що виконується на апараті. Метадані подій також додаються до файлів журналів, що дозволяє інструментам аналізу журналів (таким як Перегляд польотів) використовувати правильні метадані для відображення подій.
Бінарні файли для контролерів польоту з обмеженим обсягом пам'яті не зберігають метадані параметрів у бінарному файлі, а натомість посилаються на ті самі дані, що зберігаються на px4-travis.s3.amazonaws.com
. Це стосується, наприклад, Omnibus F4 SD. Метадані завантажуються через github CI для всіх цілей збірки (таким чином, вони будуть доступні лише після того, як параметри будуть об'єднані в main).
INFO
You can identify memory constrained boards because they specify CONFIG_BOARD_CONSTRAINED_FLASH=y
in their px4board definition file.
Якщо ви виконуєте індивідуальну розробку на платі з обмеженою FLASH-пам'яттю, ви можете змінити URL-адресу [тут](https://github. com/PX4/PX4-Autopilot/blob/main/src/lib/component_information/CMakeLists.txt#L41), щоб вказати на інший сервер.
Метадані на px4-travis.s3.amazonaws.com
використовуються, якщо метадані параметрів відсутні на бортовому комп'ютері безпілотника. Він також може використовуватися як запасний варіант, щоб уникнути дуже повільного завантаження через низькошвидкісне телеметричне з'єднання.
JSON-файли метаданих для CI-збірок main
також копіюються до репозиторію github: PX4/PX4-Metadata-Translations. Це інтегрується з Crowdin для отримання перекладів, які зберігаються у теці translated як xz-стиснуті файли перекладу для кожної мови. На них посилаються метадані компонентів безпілотника, і вони завантажуються за необхідності. Для отримання додаткової інформації див. PX4-Metadata-Translations та Протокол метаданих компонентів > Переклад.
INFO
Файл параметрів XML з головної гілки проєкту PX4 копіюється до дерева джерел QGC за допомогою безперервної інтеграції (CI). Цей файл використовується як резервний варіант у випадках, коли метадані недоступні через протокол метаданих компонентів (цей підхід передує появі протоколу метаданих компонентів).
Метадані приводу
У наступній діаграмі показано, як метадані приводу складаються з вихідного коду та використовуються QGroundControl:
- Ліворуч: метадані визначаються в файлах
module.yml
в різних модулях. Модуліcontrol_allocator
визначають геометрії, тоді як кожен вихідний драйвер визначає свій набір каналів та параметрів конфігурації. Файл схеми документує структуру цих файлів yaml. - Середній: Під час компіляції файли
module.yml
для всіх активованих модулів для поточної цілі компіляції аналізується і перетворюється у файлactuators.json
за допомогою сценарію Tools/module_config/generate_actuators_metadata.py. Також є файл схеми для цього. - Правильно: Під час виконання програми файли JSON запитуються QGroundControl через API метаданих компонентів MAVLink (який описано вище).
Додаткова інформація
- Параметри та конфігурації
- [Інтерфейс подій](. ./concept/events_interface.md)
- Переклад
- Протокол метаданих компонентів (mavlink.io)
- PX4-Metadata-Translations (Github)