Skip to content

Offboard Mode (Generic/All Frames)

Апарат зберігає данні про положення, швидкість, прискорення, орієнтацію, значення сили тяги, відповідно заданим значенням, наданим деяким джерелом, зовнішнім по відношенню до польотного контролера, наприклад комп’ютером. Задані значення можна ввести за допомогою MAVLink (або MAVLink API таких як MAVSDK) або за допомогою ROS 2.

PX4 вимагає, щоб зовнішній контролер забезпечив постійний 2Hz "доказ життя" сигналу, через потокове передавання будь-яких підтримуваних повідомлень для передання значень MAVLink або повідомлення з ROS 2 OffboardControl. PX4 вмикає функції в оф-борді лише після отримання сигналу протягом більш ніж секунди, і відновлює керування якщо зупиняється сигнал.

Примітка

  • Для цього режиму потрібна інформація про позицію або орієнтацію за допомогою вказівника, наприклад, від GPS, оптичного потоку, візуально-інерційної одометрії, MoCap та ін.
  • Радіоуправління вимкнено, окрім ситуації, коли треба змінити режими (ви також можете літати без ручного контролера взагалі, встановивши параметр COM_RC_IN_MODE до 4: введення з джойстиків вимкнено).
  • Літальний апарат має вже отримувати потік повідомлень MAVLink або ROS 2 OffboardControlMode повідомлення перед тим, як увімкнути офборд режим або переключитися в офборд режим під час польоту.
  • Літальний апарат буде виходити з офборд режиму, якщо MAVLink повідомлення або OffboardControlMode не будуть отримані зі швидкістю > 2Hz.
  • Не всі значення координат та параметрів, дозволені MAVLink підтримуються для усіх повідомлень та транспортних засобів. Уважно прочитайте розділ нижче, щоб переконатися, що використовуються тільки підтримувані значення.

:::

Опис

Режим офборду використовується для керування транспортним засобом, встановленням положення, швидкості, прискорення, відносним положенням або індексом тяги/заданими значеннями крутного моменту.

PX4 повинен отримати потік встановлюваних повідомлень MAVLink або ROS 2 OffboardControlMode на 2 Гц як доказ того, що зовнішній контролер у порядку. Потік повинен бути відправлений як мінімум за секунду, перш ніж PX4 буде задіяно в режимі офборду, або переключено на режим офборду при польоті. Якщо частота впаде нижче 2Hz під зовнішнім контролем PX4 буде перемикатися з офборд режиму після тайм-ауту (COM_OF_LOSS_T) і спробує приземлитися або виконати інші безвідмовні дії. Дія залежить від того, чи доступне радіоуправління, і визначається в параметрі COM_OBL_RC_ACT.

При використанні MAVLink повідомлення передають обидва сигнали, щоб вказати, що зовнішнє джерело є "живим" і значення має цінність. Для того, щоб утримувати позицію в даному випадку, апарат повинен отримати потік заданих точок для поточного положення.

При використанні ROS 2 докази того, що зовнішнє джерело "живе" надає потік OffboardControlMode повідомлень, поки надається фактична точка публікації в одну з тем uORB, наприклад TrajectorySetpoint. Для того, щоб утримувати позицію в цьому випадку, апарат повинен отримати потік OffboardControlMode, але потребуватиме тільки TrajectorySetpoint.

Зверніть увагу, що офборд режим підтримує дуже обмежений набір команд MAVLink і повідомлень. Операції, як-от зліт, посадка, повернення на місце запуску, можуть найкраще бути виконаними з використанням відповідних режимів. Операції такі як завантаження, місії можуть бути виконані в будь-якому режимі.

Повідомлення ROS 2

Наступні повідомлення ROS 2 та їх конкретні поля та значення полів допускаються для вказаних кадрів. Крім надання функціональності «heartbeat», OffboardControlMode має ще дві основні цілі:

  1. Контролює рівень архітектури керування PX4, на якому необхідно впроваджувати відповідні величини керування з віддаленої системи та вимикає обхідні контролери.
  2. Визначає, які допустимі оцінки (положення або швидкості) необхідні, а також які повідомлення відповідно до заданих значень мають бути використані.

OffboardControlMode визначається як показане.

sh
# Off-board контрольний режим

uint64 мітка часу # час, скільки система запущена (мікросекунди)

bool положення
bool швидкість
bool прискорення
bool орієнтація
bool кутова швидкість тіла
bool тяга та крутний момент
bool прямий привід

Поля впорядковані за пріоритетом так, що положення має перевагу над швидкістю і іншими полями, швидкість має перевагу над прискоренням, і так далі. Перше поле, яке має ненульове значення (зверху вниз), визначає, яка допустима оцінка необхідна для використання режиму безпілотного керування, а також повідомлення заданих значень, які можуть бути використані. Наприклад, якщо поле прискорення є першим полем з ненульовим значенням, то PX4 вимагає наявності дійсної оцінки швидкості, а задане значення повинно бути вказане за допомогою повідомлення TrajectorySetpoint.

бажана кількість контролюполе положенняполе швидкостіполе прискоренняполе орієнтаціїполе кутової швидкості тілаполе тяги та крутного моментполе прямого приводунеобхідна оцінканеобхідне повідомлення
положення (NED)------положенняTrajectorySetpoint
швидкість (NED)-----швидкістьTrajectorySetpoint
прискорення (NED)----швидкістьTrajectorySetpoint
орієнтація (FRD)---нічогоVehicleAttitudeSetpoint
кутова швидкість (FRD)--нічогоVehicleRatesSetpoint
тяга та крутний момент (FRD)-нічогоVehicleThrustSetpoint and VehicleTorqueSetpoint
двигуни та сервонічогоActuatorMotors and ActuatorServos

де ✓ означає, що біт встановлено, ✗ означає, що біт не встановлено, а - означає, що значення біта неважливе.

примітка Перед використанням режиму безпілотного керування з ROS 2, будь ласка, відведіть кілька хвилин на розуміння різних конвенцій кадру, які використовують PX4 і ROS 2. :::

Коптер

  • px4_msgs::msg::TrajectorySetpoint

    • Підтримуються наступні вхідні комбінації:

      • Задання точки положення (положення відмінне від NaN). Не - NaN значення швидкості та прискорення використовуються як вхідні дані для керування зворотним зв'язком внутрішнього контуру.
      • Задання точки швидкості (швидкість відмінна від NaN, а положення встановлено на NaN). Не - NaN значення швидкості та прискорення використовуються як вхідні дані для керування зворотним зв'язком внутрішнього циклу.
      • Задання точки прискорення (прискорення відмінне від NaN, а положення та швидкість встановлені на NaN)
    • Всі значення інтерпретуються в NED (Nord, East, Down) координатну систему і одиниці вимірювання, є [m/s] і [m/s^2] для позиції, швидкості і прискорення, відповідно.

  • px4_msgs::msg::VehicleAttitudeSetpoint

    • Підтримується наступна комбінація введення:

      • комбінація введення підтримується: кватерніон q_d + задання тяги thrust_body. Не-NaN значення yaw_sp_move_rate використовуються як терміни прямого зв’язку, виражені в координатах Землі та в [рад/с].
    • Кватерніон представляє обертання між корпусом дрона у системі координат FRD (перед, праворуч, вниз) та системою координат NED. Тяга у корпусі дрона виражена у системі координат FRD та у нормалізованих значеннях.

  • px4_msgs::msg::VehicleRatesSetpoint

    • Підтримується наступна комбінація введення:

      • крен, тангаж, крен та тяга.
    • Всі значення подані в для дрона в системі FRD. Значення в [rad/s] і thrust_body нормалізовано в [-1, 1].

Універсальний апарат

Наступні режими керування з відбором оминуть всі внутрішні контрольні системи PX4 і повинні використовуватися з великою обережністю.

  • px4_msgs::msg::VehicleThrustSetpoint + px4_msgs::msg::VehicleTorqueSetpoint

    • Підтримується наступна комбінація введення:
      • xyz для тяги та xyz для оберту.
    • Усі значення виражені у системі координат тіла дрона FRD та нормалізовані у діапазоні [-1, 1].
  • px4_msgs::msg::ActuatorMotors + px4_msgs::msg::ActuatorServos

    • Ви безпосередньо керуєте вихідними сигналами моторів та/або сервоприводів.
    • Усі значення нормалізовані у діапазоні [-1, 1]. Для вихідних сигналів, які не підтримують від'ємні значення, від'ємні значення відображаються як NaN.
    • NaN карти для роззброєння.

Наступні повідомлення MAVLink та їх конкретні поля та значення полів дозволені для вказаних кадрів літального апарату.

Copter/VTOL

  • SET_POSITION_TARGET_LOCAL_NED

    • Підтримуються наступні вхідні комбінації:

      • Данні про положення (тільки x, y, z)
      • Швидкість (лише vx, vy, vz)
      • Прискорення (тільки afx, afy, afz)
      • Задання точки положення та задання швидкості (задання швидкості використовується як вхідна величина; вона додається до вихідної величини контролера положення, і результат використовується як вхідні дані для контролера швидкості).
      • Задання точки положення та задання швидкості та задання прискорення (задання швидкості та прискорення використовуються як вхідні величини; задання швидкості додається до вихідної величини контролера положення, і результат використовується як вхідні дані для контролера швидкості; задання прискорення додається до вихідної величини контролера швидкості, і результат використовується для обчислення вектора тяги).
    • PX4 підтримує такі значення coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_POSITION_TARGET_GLOBAL_INT

    • Підтримуються наступні вхідні комбінації:

      • Данні про положення (тільки x, y, z)

      • Швидкість (only vx, vy, vz)

      • Тяга (only afx, afy, afz)

        Задані значення прискорення відображаються таким чином, щоб створити нормалізоване задання тяги (тобто задання прискорення "неправильно" підтримується). :::

      • Задання точки положення та задання швидкості (задання швидкості використовується як зворотній зв'язок; воно додається до вихідної величини контролера положення, і результат використовується як вхідні дані для контролера швидкості).

    • PX4 підтримує такі значення coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_ATTITUDE_TARGET

    • Підтримуються наступні вхідні комбінації:
      • Орієнтація/положення (SET_ATTITUDE_TARGET.q) разом зі значенням тяги (SET_ATTITUDE_TARGET.thrust).
      • Частота обертання тіла (SET_ATTITUDE_TARGET .body_roll_rate, .body_pitch_rate, .body_yaw_rate) зі значенням тяги (SET_ATTITUDE_TARGET.thrust).

Безпілотник-крило

  • SET_POSITION_TARGET_LOCAL_NED

    • Підтримуються такі комбінації вводу (через type_mask):

      • Задання положення (x, y, z тільки; показники швидкості і прискорення проігноровані).

        • Вкажіть тип задання в type_mask (якщо ці біти не встановлені, апарат буде літати патерном квітки): :::note Деякі зі значень типу задання, наведених нижче, не є частиною стандарту MAVLink для поля type_mask. :::

          Значення:

          • 292: планування. Це налаштовує TECS на пріорітезацію швидкості над висотою, щоб змусити безпілотник планувати, коли немає тяги (тобто кут крену контролюється для регулювання швидкості). Це еквівалентно налаштуванням type_mask таким як POSITION_TARGET_TYPEMASK_Z_IGNORE, POSITION_TARGET_TYPEMASK_VZ_IGNORE, POSITION_TARGET_TYPEMASK_AZ_IGNORE.
          • 4096: Точка взльоту.
          • 8192: Точка посадки.
          • 12288: Задання Loiter (політ по колу, центрованому на заданій точці).
          • 16384: Задання бездіяльності (нульовий газ, нульовий крен/тангаж).
    • PX4 підтримує такі значення поля coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_POSITION_TARGET_GLOBAL_INT

    • Підтримуються такі комбінації вводу (через type_mask):

      • Данні про положення (тільки x, y, z)

        • Вкажіть тип задання точки в type_mask (якщо ці біти не встановлені, транспортний засіб буде літати квіткоподібною траєкторією):

:::note Наведені нижче значення типу задання не є частиною стандарту MAVLink для поля type_mask. :::

    Значення:

    - 4096: Точка взльоту.
    - 8192: Точка посадки.
    - 12288: Задання Loiter (політ по колу, центрованому на заданій точці).
    - 16384: Задання бездіяльності (нульовий газ, нульовий крен/тангаж).
  • PX4 підтримує такі значення coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_ATTITUDE_TARGET

    • Підтримуються наступні вхідні комбінації:
      • Орієнтація/положення (SET_ATTITUDE_TARGET.q) разом зі значенням тяги (SET_ATTITUDE_TARGET.thrust).
      • Кутова швидкість (SET_ATTITUDE_TARGET .body_roll_rate, .body_pitch_rate, .body_yaw_rate) зі значенням тяги (SET_ATTITUDE_TARGET.thrust).

Землехід

  • SET_POSITION_TARGET_LOCAL_NED

    • Підтримуються такі комбінації вводу (через type_mask):

      • Данні про положення (тільки x, y, z)

        • Вкажіть тип точки в type_mask:

:::note Наведені нижче значення типу задання не є частиною стандарту MAVLink для поля type_mask. ::

    Значення:

    - 12288: задане значення Loiter (пристрій зупиняється, коли вже достатньо близько, щоб встановити точку).

- Швидкість (лише `vx`, `vy`, `vz`)
  • PX4 підтримує такі значення поля coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_POSITION_TARGET_GLOBAL_INT

    • Підтримуються такі комбінації вводу (учерез type_mask):

      • Данні про положення (тільки x, y, z)
    • Вкажіть тип вказаної точки в type_mask (не частина стандарту MAVlink). Значення:

      • Якщо наступні біти не встановлені, то виконується звичайна поведінка.
      • 12288: задане значення Loiter (пристрій зупиняється, коли вже достатньо близько до заданої точки).
    • PX4 підтримує такі значення поля coordinate_frame (тільки): MAV_FRAME_LOCAL_NED і MAV_FRAME_BODY_NED.

  • SET_ATTITUDE_TARGET

    • Підтримуються наступні вхідні комбінації:
      • Орієнтація/положення (SET_ATTITUDE_TARGET.q) разом зі значенням тяги (SET_ATTITUDE_TARGET.thrust). :::note Фактично використовується/виділяється тільки параметр рискання. :::

Offboard Parameters

На Режим автопілота впливають наступні параметри:

ПараметрОпис
COM_OF_LOSS_TЧас очікування (у секундах) при втраті з'єднання безпілотного керування, перш ніж спрацює аварійний захист в разі втрати безпілотного керування (COM_OBL_RC_ACT)
COM_OBL_RC_ACTРежим польоту, на який перейти у випадку втрати керування безпілотним пунктом (Значення - 0: Положення, 1: Орієнтація, 2: Ручне, 3: *Повернення, 4: Посадка).
COM_RC_OVERRIDEКонтролює переміщення джойстика на мультикоптері (або конвертоплані у режимі MC) зміну режиму на Режим положення. За замовчуванням це неможливо ввімкнути в режимі автопілоту.
COM_RC_STICK_OVКількість рухів джойстика, яка викликає перехід у режим Положення (якщо COM_RC_OVERRIDE увімкнено).
COM_RCL_EXCEPTВкажіть режими, в яких втрата радіокерування ігнорується, а запобіжний алгоритм не виконуватиметься. Встановіть біт 2, щоб ігнорувати втрати радіоконтролю в режимі автопілоту.

Ресурси Розробника

Зазвичай розробники не працюють безпосередньо на рівні MAVLink, а використовують API робототехніку, таку як MAVSDK або ROS (вони забезпечують зручний розробницький API і відповідають за управління та підтримку з'єднань, відправлення повідомлень і контроль відповідей - всі дрібниці роботи з режимом автопілоту та MAVLink).

Наступні ресурси можуть бути корисними для аудиторії розробників: