# 使用 WIFI 原始模式的视频流数据链路 (WFB-ng)
本教程介绍如何设置 配套电脑 摄像头,从而将视频流从无人飞行器传输到地面计算机,并显示为 QGroundControl.设置使用未连接(广播)模式下的 WiFi 和软件。 WFB-ng 项目 (打开新窗口).
该通道还可用作双向 遥测 在飞行过程中,WFB-ng 可通过 MAVLink 链接和 TCP/IP 隧道对无人机进行控制。如果您使用 QGroundControl(使用 MAVLink)中的操纵杆手动控制无人机,那么您可以使用 WFB-ng 作为所有无人机通信(视频、MAVLink 遥测、使用操纵杆的远程控制)的单一链接。
警告
使用前 WFB-ng 检查监管机构是否允许在您的国家使用这种 WiFi。
# WFB-ng 概览
WFB-ng 项目 提供了一种使用低级 WiFi 数据包的数据传输,以避免普通 IEEE 802.11 协议栈的距离和延迟限制。
的高水平效益 WFB-ng 包括
- 低延迟视频链接
- 双向遥测链路(MAVLink)。
- TCP/IP 隧道。
- 自动 TX 分集 - 在地面上使用多个卡,以避免天线跟踪器。
- 全链路加密和验证(使用 解钠 (打开新窗口)).
- 聚合 MAVLink 数据包(传输前将小数据包打包成批)。
- 增强型 OSD (打开新窗口) 用于 Raspberry PI 或使用 gstreamer 的通用 Linux 桌面。
更多信息见 常见问题 下图
# 硬件
# 载具设置
载具设置包括
树莓派 3B/3B+/ZeroW
一台照相机。这些都是经过测试的:
- Raspberry Pi 摄像头 (打开新窗口) 通过 CSI 连接。
- 罗技摄像头 C920 (打开新窗口) 通过 USB 连接
WiFi 模块 alpha awus036ach (打开新窗口) 或任何其他 RTL8812au 卡
# 地面站
地面站计算机。这些选项已经过测试:
- 任何带有 USB 端口的 Linux 计算机(在 Ubuntu 18.04 x86-64 上进行了测试)
- 通过以太网(RasPi 提供 wifi 连接)连接一台装有运行 QGround 控制功能的任何操作系统的电脑和树莓派(Raspberry PI)。
WiFi 模块 alpha awus036ach (打开新窗口) 或任何其他 RTL8812au 卡。请参见 WFB-ng wiki > WiFi 硬件 (打开新窗口) 了解有关支持模块的更多信息。
# 硬件改造
Alpha AWUS036ACH 是一款中等功率卡,在传输时会消耗大量电流。如果使用普通 USB2 为其供电,大多数情况下都会重置端口。 ARM 板.如果将其连接到 USB3 通过 本机 USB3 电缆 至 Linux 笔记本电脑 无需修改即可使用。
对于 树莓派 (无人飞行器或地面)必须通过两种方式之一直接连接到 5V BEC(或地面 pi 的大电流电源适配器):
- 制作自定义 USB 电缆([切割
+5V
将 USB 插头上的导线连接至 BEC])(https://electronics.stackexchange.com/questions/218500/usb-charge-and-data-separate-cables) - 剪一个
+5V
在靠近 USB 端口的 PCB 上接线,并将其连接至 BEC(如有疑问,请勿这样做,而应使用定制电缆)。
还必须添加一个 470uF 低 ESR 电容器 (之间(如 ESC 所具有的 卡 +5v 和接地 以过滤电压尖峰。您应该将电容器与定制的 USB 电缆集成在一起。如果没有电容器,数据包可能会损坏或丢失。请注意 接地回路 (打开新窗口) 当使用多条接地线时。
备注
如果您使用的是从淘宝/Aliexpress 购买的特殊"very"高功率显卡,那么在任何情况下,您都必须按照上述方法为显卡供电。
# 无人机配置
- 从以下地址下载树莓派图像 WFB-NG 最新版本 (打开新窗口)
- 闪烁到 无人驾驶飞行器 树莓派
- 重新启动它,然后使用标准凭据 ssh(pi/raspberry)。
- 运行以下操作 气 角色,如 motd 中显示的那样。
- 设置摄像头管道打开
/etc/systemd/system/fpv-camera.service
并根据您的摄像头(PI 摄像头或罗技摄像头)取消管道注释 - 开放
/etc/wifibroadcast.cfg
并根据天线设置配置 WiFi 频道(或使用 5.8GHz 的默认 #165)。 - 配置 PX4,以 1500 Kbps 的速度输出遥测数据流(其他 UART 速度与 RPI 分频器不匹配)。将 Pixhawk UART 连接到 Raspberry PI UART。在
/etc/wifibroadcast.cfg
未批注同行 = 'serial:ttyS0:1500000'
于[无人机导航链接]
节。
# 使用 Linux 笔记本电脑作为 GCS(比使用 RasPi 更难)
关于 地面 Linux 开发计算机
苏都 适切 安装 libpcap-dev libsodium-dev python3-all python3-twisted Git clone -b stable https://github.com/svpcom/wfb-ng.git CD wfb-ng &&; 生产 辩论 &&; 苏都 适切 安装 ./deb_dist/wfb-ng*.deb
按照 设置 HOWTO (打开新窗口) 完成安装
不要忘记复制
/etc/gs.key
从 无人驾驶飞行器 侧对 地面 侧绑定两个设置。此外,不要忘记使用与无人机侧相同的频率频道。
# 使用 Raspberry PI 作为 GCS(更简单)
如果您使用的是 Windows 或 OSX 操作系统,或者不想在 Linux 笔记本电脑上安装 WFB-ng,那么您可以使用相同的预构建镜像和另一台 Raspberry Pi:
- 闪存图像到 地面 树莓派
- 重新启动它,然后使用标准凭证 SSH 登录(pi/raspberry)。
- 运行以下操作 地面 中显示的角色,但跳过设置
fpv 视频
服务和osd
服务。 - 通过以太网连接笔记本电脑和地面 RasPi,并配置 IP 地址
- 编辑
/etc/wifibroadcast.cfg
中设置笔记本电脑的 IP 地址。[全球卫星导航系统链接]
和[视频]
部分(取代127.0.0.0.1
).
# QGroundControl 设置
- 运行 QGroundControl 并设置
RTP h264
5600 端口作为视频源 - 使用默认设置(端口 14550 上的 udp)作为 mavlink 信号源
# 调整参数无线电设置
在默认设置下,WFB 使用无线电信道 165(5825 MHz),宽度为 20MHz,MCS #1(QPSK 1/2)和长 GI。这可提供 ~7 mbit/s 的 有效 速度(即经过 FEC 和数据包编码后的可用速度)为 双向 总之,因为 WiFi 是半双工的。因此,它适用于 720p@49fps (4 mbit/s)视频下行流 + 两个全速遥测流(上行和下行)。如果您需要更高的带宽,可以使用其他 MCS 指数(例如 2 或更高指数)。
# 天线和分集
在简单的情况下,您可以使用线性全向天线(与 WIFI 卡捆绑在一起)或环形天线(与 WIFI 卡捆绑在一起)。圆极化盖叶天线 (打开新窗口)极化)。如果要建立长距离链接,可以使用多个带有定向和全向天线的无线适配器。开箱即支持多个适配器的 TX/RX 分集(只需添加多个网卡到 /etc/default/wifibroadcast
).如果 WiFi 适配器有两根天线(如 Alfa AWU036ACH),TX 分集可通过以下方式实现 STBC (打开新窗口).目前不支持带 4 个端口的卡 (如 Alfa AWUS1900)。
# 常见问题
Q: 使用 wfb-ng 可以传输什么类型的数据?
A: 数据包大小为 1445 的任何 UDP。例如 RTP 或 MAVLink 内的 x264。
Q: 什么是传输保证?
A: Wifibroadcast 使用 FEC(前向纠错)。您可以根据自己的需要对其进行调整(TX 和 RX 同时进行!)。
Q 我还能飞多远?
A 这取决于您的天线和 WiFi 卡。使用阿尔法 AWU036ACH 和地面上的 20dBi 贴片天线,可以达到 ~20km 的距离。
警告
不要使用遥控发射机工作的波段!或正确设置 RTL 以避免模型丢失。
Q: 只支持 Raspberry PI 吗?
A: WFB-ng 与任何 GPU 都不绑定--它使用 UDP 数据包运行。但要获得 RTP 流,您需要一个视频编码器(可将摄像机的原始数据编码为 x264 流),或者您必须使用带有硬件视频编解码器的摄像机,如罗技 C920 或以太网安全摄像机。
# 无人机推荐使用哪些 ARM 板?
- RPI3b/3b+/ZeroW。可提供预制图像,但只支持 CSI 摄像机的 h264 视频。
- Jetson Nano。它支持 h264 和 h265,但您需要根据以下说明自行设置 设置 HOWTO (打开新窗口)
您可以使用任何其他 Linux ARM 板,但需要使用内置硬件视频编解码器的以太网或 USB 摄像头(如 Logitech C920)。
# 理论
WFB-ng 将 WiFi 网卡置于监控模式。该模式允许发送和接收任意数据包,无需关联和等待 ACK 数据包。 监控模式下 IEEE 802.11 硬件的注入能力和媒体访问分析 (打开新窗口) 802.11 时序 (打开新窗口)