Потокова передача відео через канал зв'язку WiFi в режимі Raw (WFB-ng)
Цей посібник показує, як налаштувати супутній комп'ютер з камерою Logitech C920 або RaspberryPi так, щоб відеопотік передавався з БЛА на земний комп'ютер і відображався в QGroundControl. Для налаштування використовується WiFi у режимі непідключеного (транслювання) та програмне забезпечення проекту WFB-ng.
Канал також може бути використаний як двосторонній телеметричний зв'язок та тунель TCP/IP для керування дроном під час польоту. Якщо ви керуєте дроном вручну за допомогою джойстика з QGroundControl (яке використовує MAVLink), то ви можете використовувати WFB-ng як єдине з'єднання для всіх комунікацій з дроном (відео, телеметрія MAVLink, дистанційне керування за допомогою джойстика).
WARNING
Перш ніж використовувати WFB-ng, перевірте, чи дозволяють регулятори такий тип використання WiFi в вашій країні.
Загальний огляд WFB-ng
Проект WFB-ng надає транспорт даних, який використовує низькорівневі пакети WiFi для уникнення обмежень відстані та затримки звичайного стеку IEEE 802.11.
Основні переваги WFB-ng включають:
- Низька затримка відеозв'язку.
- Двосторонній телеметричний зв'язок (MAVLink).
- TCP/IP тунель.
- Автоматичне різноманіття передавача - використовуйте кілька карт на землі, щоб уникнути відслідковувача антен.
- Повне шифрування та аутентифікація зв'язку (з використанням libsodium).
- Агрегація пакетів MAVLink (упаковка невеликих пакетів у партії перед передачею).
- Покращений OSD для Raspberry PI або загального лінуксового робочого стола з gstreamer.
Додаткова інформація наведена в FAQ нижче.
Апаратне забезпечення
Налаштування транспорту
Налаштування транспортного засобу складається з такого:
Raspberry PI 3B/3B+/ZeroW
Камера. Були протестовані наступні варіанти:
- Камера Raspberry Pi, підключена через CSI.
- Камера Logitech C920, підключена через USB
Модуль WiFi ALPHA AWUS036ACH або будь-яка інша карта на основі RTL8812au.
Наземна станція
Наземний комп'ютер на станції. Ці варіанти були перевірені:
- Будь-який Linux комп'ютер з USB-портом (протестований на Ubuntu 18.04 x86-64)
- Комп’ютер із будь-якою ОС із керуванням QGround та Raspberry PI, під’єднаний через Ethernet (RasPi забезпечує з’єднання Wi-Fi).
Модуль WiFi ALPHA AWUS036ACH або будь-яка інша карта на основі RTL8812au. Див. вікі WFB-ng > апаратне забезпечення WiFi для отримання додаткової інформації про підтримувані модулі.
Модифікація апаратного забезпечення
Alpha AWUS036ACH - це карта середньої потужності, яка використовує багато струму під час передачі. Якщо ви живите її від звичайного USB2, то на більшості ARM-плат вона скине порт. Якщо ви підключите її до порту USB3 за допомогою нативного кабелю USB3 до ноутбука на Linux, ви можете використовувати її без модифікацій.
Для Raspberry PI (UAV або земля) її необхідно підключити безпосередньо до 5V BEC (або адаптера високої потужності для земельного pi) одним із двох способів:
- Зробіть власний USB-кабель ([відірвіть провід
+5V
від USB-штепселя і підключіть його до BEC])(https://electronics.stackexchange.com/questions/218500/usb-charge-and-data-separate-cables) - Відірвіть провід
+5V
на платі поруч із USB-портом і підключіть його до BEC (не робіть цього, якщо сумніваєтеся - використовуйте власний кабель).
Вам також потрібно додати конденсатор низького опору з ємністю 470 мкФ (як у ESC) між +5В карти та землею, щоб фільтрувати перепади напруги. Ви повинні інтегрувати конденсатор з власним USB-кабелем. Без конденсатора ви можете отримати втрату пакетів або їх порушення. Будьте обережні з петлею маси при використанні декількох земляних проводів. Будьте обережні з петлею маси при використанні декількох земляних проводів.
:::note
Якщо ви використовуєте спеціальні "дуже" потужні карти з Taobao/Aliexpress, то ВИ МАЄТЕ живити їх так, як описано вище в БУДЬ-ЯКОМУ випадку. :::
Конфігурація UAV
- Завантажте образ Raspberry PI з останнього випуску wfb-ng
- Виконайте прошивку на Raspberry PI UAV
- Перезавантажте його і підключіться через ssh зі стандартними обліковими даними (pi/raspberry).
- Виконайте дії для ролі повітря, як показано в motd.
- Налаштуйте камерний канал. Відкрийте
/etc/systemd/system/fpv-camera.service
і розкоментуйте конвеєр відповідно до вашої камери (камера PI або камера Logitech) - Відкрийте
/etc/wifibroadcast.cfg
і налаштуйте канал WiFi відповідно до налаштувань вашої антени (або використовуйте замовчуваний #165 для 5.8GHz) - Налаштуйте PX4 на вивід потоку телеметрії зі швидкістю 1500 Кбіт/с (інші швидкості UART не добре відповідають дільникам частоти RPI). Підключіть UART Pixhawk до UART Raspberry PI. У розділі
/etc/wifibroadcast.cfg
файлу розкоментуйтеpeer = 'serial:ttyS0:1500000'
секцію.
Використання ноутбука Linux як GCS (важче, ніж використання RasPi)
На наземному Linux комп'ютері розробки:
shsudo apt install libpcap-dev libsodium-dev python3-all python3-twisted git clone -b stable https://github.com/svpcom/wfb-ng.git cd wfb-ng && make deb && sudo apt install ./deb_dist/wfb-ng*.deb
Слідуйте інструкції з Setup HOWTO для завершення встановлення
Не забудьте скопіювати
/etc/gs.key
з боку UAV на бік землі, щоб зв'язати два налаштування.Також не забудьте використовувати той самий канал частоти, що й на боці UAV.
Використання Raspberry PI як БЗК (легше)
Якщо у вас є Windows або OSX, або ви не хочете налаштовувати WFB-ng на свій ноутбук з Linux, тоді ви можете використовувати той самий готовий образ і ще один Raspberry Pi:
- Запишіть образ на ground Raspberry Pi.
- Перезавантажте його і підключіться через SSH за стандартними обліковими даними (pi/raspberry).
- Виконайте дії для ролі землі, як показано в motd, але пропустіть налаштування служби
fpv-video
таosd
. - Підключіть ваш ноутбук та земельний RasPi через Ethernet та налаштуйте IP-адреси
- Відредагуйте
/etc/wifibroadcast.cfg
і встановіть IP-адресу ноутбука в розділах[gs_mavlink]
та[gs_video]
(замінивши127.0.0.1
).
Налаштування QGroundControl
- Запустіть QGroundControl і встановіть
RTP h264
на порту 5600 як вихідне джерело відео - Використовуйте налаштування за замовчуванням (udp на порту 14550) як джерело mavlink
Налаштування радіо
З настройками WFB за замовчуванням використовуйте радіоканал 165 (5825 МГц), ширину 20 МГц, MCS #1 (QPSK 1/2) з довгим GI. Це забезпечує приблизно 7 мбіт/с ефективної швидкості (тобто використовуваної швидкості після FEC та кодування пакетів) в обох напрямках разом, оскільки WiFi є напівдуплексом. Таким чином, він підходить для потокового відео 720p@49fps (4 мбіт/с) + два потоки телеметрії з повною швидкістю (вгору та вниз). Якщо вам потрібна вища пропускна здатність, ви можете використовувати індекси MCS (наприклад, 2 або більше)
Антени та інше
У простих випадках ви можете використовувати всенапрямлені антени з лінійною (які комплектуються з WiFi картами) або круговою листковою (кругово-поляризована антена Coverleaf) поляризацією. Якщо ви хочете налаштувати зв'язок на велику відстань, ви можете використовувати кілька WiFi адаптерів з напрямними та всенапрямленими антенами. TX/RX Підтримується різноманіття передачі/прийому для кількох адаптерів з коробки (просто додайте кілька мережевих інтерфейсів до /etc/default/wifibroadcast
). Якщо ваш WiFi адаптер має дві антени (наприклад, Alfa AWU036ACH), різноманіття передачі втілено через STBC. Карти з 4 портами (наприклад, Alfa AWUS1900) наразі не підтримуються.
FAQ
З: Який тип даних можна передавати за допомогою wfb-ng?
A: Будь-який UDP з розміром пакета <= 1445. Наприклад, x264 в середині RTP або MAVLink.
Q: Які гарантії передачі?
A: Wifibroadcast використовує FEC (передню корекцію помилок). Ви можете налаштувати його як TX так і RX одночасно!), щоб відповідати вашим потребам.
Q Яка максимальна відстань, на яку я можу летіти і все ще зберігати зв'язок?
AЦе залежить від ваших антен та WiFi карт. З Alfa AWU036ACH і направленою антеною 20dBi на землі можливий польот на відстань приблизно 20 км.
WARNING
Не використовуйте діапазон, на якому працює RC TX! Або налаштуйте RTL належним чином, щоб уникнути втрати моделі.
Q: Чи підтримується лише Raspberry PI?
A: WFB-ng не зв'язаний з жодним GPU - він працює з UDP-пакетами. Але для отримання потоку RTP вам потрібен відеокодер (який кодує вихідні дані з камери у потік x264) або ви повинні використовувати камеру з апаратним відеокодеком, таку як Logitech C920 або камери спостереження з Ethernet.
Які ARM-плати рекомендуються для БПЛА?
- RPI3b/3b+/ZeroW. Існують готові образи, але вони підтримують лише відео h264 для камер CSI.
- Jetson Nano. Він підтримує h264 і h265, але вам потрібно налаштувати його самостійно за допомогою Setup HOWTO.
Ви можете використовувати будь-яку іншу ARM-плату з Linux, але вам потрібно використовувати камеру Ethernet або USB з вбудованими апаратними відеокодеками (наприклад, Logitech C920).
Теорія
WFB-ng переводить WiFi-карти у режим монітору. Цей режим дозволяє надсилати та отримувати довільні пакети без асоціації та очікування підтвердження (ACK). Аналіз можливостей ін'єкції та доступу до медіа апаратного забезпечення IEEE 802.11 в режимі монітору 802.11 часів