Skip to content

Візуально-інерційна одометрія (VIO)

Візуальна інерціальна одометрія (VIO) — це техніка комп’ютерного бачення, яка використовується для оцінки тривимірної пози (локального положення та орієнтації) і швидкості транспортного засобу, що рухається, відносно локальної вихідної позиції. Він зазвичай використовується для навігації транспортного засобу в ситуаціях, коли GPS відсутній або ненадійний (наприклад, у приміщенні або під час прольоту під мостом).

VIO використовує Візуальну одометрію для оцінки позиції транспортного засобу на основі зображень із камери в поєднанні з інерційними вимірюваннями з IMU транспортного засобу (щоб виправити помилки, пов’язані зі швидким рухом транспортного засобу, що призводить до поганого захоплення зображення).

Ця тема надає керівництво щодо налаштування PX4 та супутнього комп'ютера для налаштування VIO.

:::note Рекомендоване налаштування використовує ROS для передачі інформації VIO до PX4. Однак сам PX4 не цікавиться джерелом повідомлень, якщо вони надаються через відповідний інтерфейс MAVLink. :::

Рекомендована настройка

Апаратна та програмна настройка для VIO запропонована в розділах нижче як ілюстрація того, як підключити систему VIO до PX4. Вона використовує готову систему відстеження камери та супутній комп'ютер, що працює під керуванням ROS. ROS використовується для зчитування інформації про одометрію з камери та подачі її до PX4.

Прикладом підходящої відстежуючої камери є камера відстеження Intel® RealSense™ T265.

Встановлення камери

Прикріпіть камеру до супутнього комп'ютера та закріпіть її на рамі:

  • Прикріпіть камеру з лінзами, спрямованими вниз, якщо це можливо (за замовчуванням).
  • Камери зазвичай дуже чутливі до вібрацій; рекомендується використовувати м'яке кріплення (наприклад, за допомогою віброізоляційної піни).

Налаштування комп'ютера компаньйона

Для налаштування ROS та PX4:

  • На комп'ютері-супутнику встановіть та налаштуйте MAVROS.
  • Реалізуйте та запустіть вузол ROS для зчитування даних з камери та публікації відомостей VIO за допомогою MAVROS.
    • Дивіться розділ нижче про вузол ROS VIO для подробиць щодо вимог до цього вузла.
  • Слідуйте інструкціям нижче для налаштування оцінювача EKF2 в PX4.
  • Перевірте підключення до керуючого контролера.

TIP

Ви можете використовувати QGroundControl MAVLink Inspector, щоб переконатися, що ви отримуєте повідомлення ODOMETRY або VISION_POSITION_ESTIMATE (або перевірити наявність Повідомлення HEARTBEAT, які мають ідентифікатор компонента 197 (MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY)).

ROS VIO вузол

У цьому рекомендованому налаштуванні ROS вузла VIO потрібно

  1. інтерфейс з обраною апаратурою камери або сенсора,
  2. створити повідомлення відомостей, що містять оцінку позиції, які будуть надіслані до PX4 за допомогою MAVROS, та
  3. публікувати повідомлення для вказівки стану системи VIO.

Реалізація вузла ROS буде конкретною для використовуваної камери і буде потребувати розробки для використання відповідного інтерфейсу та драйверів для камери.

Повідомлення відомостей повинні бути типу nav_msgs/Odometry та публікуватися на темі /mavros/odometry/out.

Повідомлення стану системи типу mavros_msgs/CompanionProcessStatus повинні публікуватися на темі /mavros/companion_process/status. Вони повинні ідентифікувати компонент як MAV_COMP_ID_VISUAL_INERTIAL_ODOMETRY (197) та вказувати стан системи. Рекомендовані значення статусу:

  • MAV_STATE_ACTIVE коли система VIO працює як очікувалося,
  • MAV_STATE_CRITICAL коли система VIO працює, але з низькою впевненістю, та
  • MAV_STATE_FLIGHT_TERMINATION коли система зазнала відмови або впевненість в оцінці неприйнятно низька.

Вдосконалення

Наступні параметри повинні бути задані для використання зовнішньої позиції з EKF2.

ПараметрНалаштуйте зовнішнє позиційне оцінювання
EKF2_EV_CTRLВстановіть горизонтальне об'єднання позиції, вертикальне об'єднання позиції, об'єднання швидкості та об'єднання кута курсу згідно з вашою бажаною моделлю об'єднання.
EKF2_HGT_REFВстановіть на Vision, щоб використовувати візуальну інформацію як датчик відліку висоти.
EKF2_EV_DELAYВстановіть різницю між міткою часу вимірювання та "фактичним" часом захоплення. Для отримання додаткової інформації дивіться нижче. Для отримання додаткової інформації див. нижче.
EKF2_EV_POS_X, EKF2_EV_POS_Y, EKF2_EV_POS_ZВстановіть положення візуального датчика відносно корпусу транспортного засобу.

Їх можна встановити в QGroundControl > Налаштування автомобіля > Параметри > EKF2 (не забудьте перезавантажити контролер польоту, щоб зміни параметрів набули чинності).

Для отримання додаткової детальної інформації дивіться: ECL/EKF огляд і налаштування & Tuning> Зовнішня система візуальної оцінки.

Налаштування EKF2_EV_DELAY

EKF2_EV_DELAY - це затримка оцінювача позиції за допомогою візійної системи відносно вимірювань. Іншими словами, це різниця між міткою часу візійної системи та "фактичним" часом захоплення, який був би записаний годинником IMU (тобто "базовий годинник" для EKF2).

Технічно це може бути встановлено на 0, якщо є правильне відміткове (не тільки час прибуття) та синхронізація часу (наприклад, за допомогою NTP) між MoCap та (наприклад) комп'ютерами ROS. На практиці це може потребувати емпіричного налаштування, оскільки затримки в ланцюгу зв'язку дуже специфічні для конкретного обладнання. Рідко коли система налаштована з повністю синхронізованим ланцюгом!

Приблизна оцінка затримки може бути отримана з журналів, перевіряючи зсув між частотами IMU та частотами EV:

ekf2_ev_delay log

:::note Графік зовнішніх даних проти вбудованої оцінки (як вище) може бути створений за допомогою FlightPlot або подібних засобів аналізу польоту. :::

Значення може бути подальшим налаштоване шляхом зміни параметра для знаходження значення, яке дає найменші інновації EKF під час динамічних маневрів.

Перевірка/підтвердження оцінки VIO

::: note Параметр MAV_ODOM_LP, згаданий нижче, був вилучений у PX4 v1.14. Цей розділ потрібно оновити. :::

Виконайте наступні перевірки, щоб переконатися, що VIO працює належним чином перед першим польотом:

  • Встановіть параметр PX4 MAV_ODOM_LP на 1. Після цього PX4 буде передавати отриману зовнішню позицію у вигляді повідомлень MAVLink ODOMETRY. Ви можете перевірити ці повідомлення MAVLink за допомогою інспектора MAVLink в QGroundControl
  • Поверніть літак так, щоб кватерніон повідомлення ODOMETRY був дуже близьким до одиничного кватерніону (w=1, x=y=z=0).
    • На цьому етапі корпус виробу зорієнтований у відповідності з ориєнтацією відносно зовнішньої системи координат.
    • Якщо вам не вдається отримати кватерніон, близький до одиничного, без обертання або нахилу вашого літака, це, ймовірно, означає, що ваша рама все ще має зміщення нахилу або кочування. У цьому випадку не продовжуйте і перевірте знову свої координатні рамки.
  • Після зорієнтування ви можете підняти літак з землі, і ви маєте бачити, як координата z позиції зменшується. Переміщення літака вперед повинно збільшувати координату x позиції, а переміщення вправо - збільшувати координату y. Переміщення засобу праворуч повинно збільшити координату Y.
  • Перевірте, що лінійні швидкості у повідомленні виражені в описаній відносно корпусу FRD відліковій системі.
  • Встановіть параметр PX4 MAV_ODOM_LP назад на 0. PX4 припинить передавати повідомлення ODOMETRY назад.

Якщо ці кроки є послідовними, ви можете спробувати свій перший польот:

  1. Покладіть літак на землю і почніть передавати зворотний зв'язок ODOMETRY (як вище). Потягніть палицю газу вниз і зберметизуйте двигуни.

    На цьому етапі, зліва палиця на найнижчому положенні, перейдіть у режим позиціонного контролю. Ви повинні побачити зелену лампочку. Зелена лампочка свідчить про те, що доступний зворотний зв'язок позиції, і позиційний контроль активований.

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

  3. Збільшуйте значення перемикача газу, і літак злетить. Відразу після цього поверніть його в середину.

  4. Переконайтеся, що літак може утримувати свою позицію.

Відстеження проблем

Спочатку переконайтеся, що MAVROS успішно підключається до автопілота.

Якщо підключення відбувається належним чином, можливі проблеми/рішення:

  • Проблема: У мене виникає дрейф / відліт дрона, коли він літає, але не коли я несу його без пропелерів.

    • Якщо використовуєте T265, спробуйте його м'яко кріпити (ця камера дуже чутлива до високочастотних вібрацій).
  • Проблема: У мене виникає "туалетний боулінг", коли ввімкнено VIO.

    • Переконайтеся, що орієнтація камери відповідає трансформації в запущеному файлі. Використовуйте Інспектор MAVLink QGroundControl, щоб перевірити, що швидкості в повідомленні ODOMETRY, що надходить від MAVROS, вирівнані з системою координат FRD.
  • Проблема: Я хочу використовувати позицію зору для замикання петель, і також хочу запустити GPS.

    • Це дійсно складно, оскільки коли вони не збігаються, це збентежить EKF. За результатами тестування, надійніше використовувати візійну швидкість (якщо ви знайдете спосіб зробити цю конфігурацію надійною, дайте нам знати).

Інформація для розробників

Розробники, які зацікавлені в розширенні цієї реалізації (або написанні іншої, яка може не залежати від ROS), повинні подивитися використання візійних або систем відстеження руху для оцінки позиції..

Ця тема також пояснює, як налаштувати VIO для використання з оцінювачем LPE (застарілим).

Додаткова інформація