* Add vitepress tree * Update existing workflows so they dont trigger on changes in the docs path * Add nojekyll, package.json, LICENCE etc * Add crowdin docs upload/download scripts * Add docs flaw checker workflows * Used docs prefix for docs workflows * Crowdin obvious fixes * ci: docs move to self hosted runner runs on a beefy server for faster builds Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: don't run build action for docs or ci changes Signed-off-by: Ramon Roche <mrpollo@gmail.com> * ci: update runners Signed-off-by: Ramon Roche <mrpollo@gmail.com> * Add docs/en * Add docs assets and scripts * Fix up editlinks to point to PX4 sources * Download just the translations that are supported * Add translation sources for zh, uk, ko * Update latest tranlsation and uorb graphs * update vitepress to latest --------- Signed-off-by: Ramon Roche <mrpollo@gmail.com> Co-authored-by: Ramon Roche <mrpollo@gmail.com>
7.0 KiB
Доставка пакунків у місіях
Місія доставки пакунка - це розширення операції з шляховою точкою, де користувач може планувати призначення пакету в якості шляхової точки.
Ця тема пояснює архітектуру функції доставки пакету. Він призначений для розробників, які працюють над розширенням архітектури, наприклад, для підтримки нових механізмів доставки вантажу.
:::info Зараз лише Grippers може бути використано для доставки пакету. Лебідки поки що не підтримуються. :::
:::info
Детальну документацію з налаштування плану місії доставки пакетів можна знайти тут.
Підготовка для модуля payload_deliverer описана у документації для механізму доставки, наприклад, Gripper.
:::
Діаграма Архітектури доставки пакетів
Функціонал доставки пакетів зосереджений навколо повідомлень VehicleCommand та VehicleCommandAck.
Основна ідея полягає в наявності сутності, яка обробляє команду транспортного засобу DO_GRIPPER або DO_WINCH, виконує її і надсилає підтвердження, коли успішна доставка підтверджена.
Оскільки PX4 автоматично транслює повідомлення uORB VehicleCommand до UART-порту, налаштованого на комунікацію у форматі MAVLink як повідомлення COMMAND_LONG, зовнішній навантаження може отримати команду і виконати її.
Аналогічно, оскільки PX4 автоматично перекладає повідомлення COMMAND_ACK, що надходить зовнішнім джерелом через порт UART, налаштований на MAVLink, в uORB-повідомлення vehicle_command_ack, підтвердження зовнішнього навантаження про успішне розгортання пакета може бути отримано модулем navigator PX4.
Нижче є пояснено кожен об'єкт, що бере участь в архітектурі доставки пакету.
Навігатор
Навігатор обробляє приймання команди ТЗ (описано нижче). Після отримання повідомлення про успішне розгортання воно встановлює прапорець на рівні блоку місії, щоб сигналізувати про успішне розгортання вантажу.
Це дозволяє місії перейти до наступного пункту (наприклад, Waypoint) безпечно, оскільки ми впевнені у підтвердженні успішного виконання розгортання.
Транспортний Командний ACK
Ми чекаємо на підтвердження (ACK), яке може прийти як внутрішнє (через модуль payload_deliverer), так і зовнішнє (зовнішня сутність відправляє повідомлення MAVLink COMMAND_ACK), щоб визначити, чи була успішною дія доставки пакету (або DO_GRIPPER, або DO_WINCH).
Місія
Команда «Захват/лебідка» розміщується як предмет місії.
Це можливо, оскільки всі пункти місії мають команду MAV_CMD для виконання (наприклад, Land, Takeoff, Waypoint і т. д.), яку можна встановити на DO_GRIPPER або DO_WINCH.
У логіці місії (зелена рамка вище), якщо досягнуто будь-який пункт місії Gripper/Winch, вона використовує функціональність brake_for_hold (яка встановлює прапорець valid наступного пункту місії зупинки на значення false) для вертольотів (наприклад, багтротика), щоб транспортний засіб утримував своє положення, поки виконується розгортання.
Для фіксованих крил та інших транспортних засобів не розглядається жодна особлива умова зупинки. Для літаків з фіксованими крилами та інших типів транспортних засобів не передбачено жодних спеціальних умов щодо зупинки.
Блок Місії
MissionBlock є батьківським класом Mission, який відповідає за частину "Чи завершена місія?".
Все це виконується у функції is_mission_item_reached_or_completed, щоб обробляти затримку часу / перехід до наступного пункту місії.
Також вона реалізує функцію issue_command, яка видасть команду транспортному засобу, відповідну команді MAV_CMD пункту місії, яку потім отримає зовнішній вантаж або модуль payload_deliverer внутрішньо.
Доставщик Вантажу
Це спеціалізований модуль, який відповідає за підтримку захопника / лебідки, який використовується для стандартного плану місії доставки пакетів.
Налаштування для модуля payload_deliverer описано у документації щодо налаштування реального механізму випуску пакету, такого як Gripper.
