文章目录
前言
1.1 所需硬件
1.2 连接到自动驾驶仪
1.3 设置
1.4 ADSB输出配置
1.5 启用载人飞行器避障功能
1.6 飞行器数据库
1.7 开发者信息包括模拟
本文介绍了如何安装和配置 ADS-B 模块,以便你的飞机能够知道附近的其他飞机和空中交通管制,并/或向其传送信息。这也使地面上的飞行员能够知道附近的有人驾驶飞机,并可选择让飞行器自动避开它们。
ADS-B(又称自动依赖监视广播)(Automatic Dependent Surveillance Broadcast)是一种空中交通监视技术,使飞机能够被空中交通管制员和其他飞行员准确跟踪,而不需要传统雷达。
!Warning
避让功能是仍在开发中的新功能,应谨慎使用。如果启用了 ADSB 避让功能,强烈建议设置RCx_OPTION = 38 (ADSB Avoidance En)功能,以便在空中时轻松禁用,如果有此需要。
这些传感器可以直接从 uAvionix 或 Sagetech 购买,也可以从以下经销商处购买:
ADSB 接收机应连接到自动驾驶仪的串行端口。接收器的安装应使天线呈垂直方向。
设置 ADSB_TYPE 参数,以配合接收机的串行通信协议。
接收器所连接的串口应配置成也与 ADSB 接收器的协议相匹配:
ADSB Protocol |
ADSB_TYPE |
SERIALx_PROTOCOL |
SERIALx_BAUD |
MAVLINK |
1 |
MAVLink2 (2) |
57600 |
Sagetech |
2 |
ADSB (35) |
|
UCP |
3 |
115200 |
|
Sagetech MX |
4 |
例如,如果你将 uAvionix Ping2020i 插入自动驾驶仪上指定为 SERIAL4 的 UART,你会设置:
ADSB 接收机的规格可能只说明 MAVLink 为协议。在这种情况下,首先尝试 MAVLink2,如果不成功,就用 MAVLink 作为串口协议。
在做出这些改变后,你需要重新启动你的板子。
为了使 ADSB 数据流向 GCS,你要检查你的 StreamRate 参数。在某些情况下,它已经被设置好了,但最好还是检查一下。这些速率在每个遥测中都是可以调整的,比如在连接高带宽和低带宽的情况下。调整速率的参数将取决于你的 GCS 连接到哪一个。在大多数情况下,它是 telem1。
一旦投入使用,大约 50 公里范围内的飞机应出现在地面站地图上。
为了测试系统,你可以与 flightradar24.com 上显示的航班进行比较。
!Warning
确保你有正确的权限,使用能够发射的 ADSB 硬件。你将会在空中交通管制员的机场雷达上显示出来!
以下参数用于配置 ADS-B 输出:
在许多情况下,默认值是可以的,除了 ADSB_RF_SELECT 需要打开发射机外,你不需要改变任何这些。ADSB_RF_SELECT 发射位在启动时被清空,以确保你只在有意启用时进行发射。
在 uavionix.xml 中为 ADSB 提供了额外的 MAVLink 信息,允许 GCS 设置所有这些选项。即 msg UAVIONIX_ADSB_OUT_CFG 和 UAVIONIX_ADSB_OUT_DYNAMIC,其中 _cfg 是唯一可以指定自定义呼号的地方。
!Note
Mission Planner 的转发器标签不会向 Sagetech 的 XP 系列转发器发送正确的信息。为了改变工作模式,可以使用 Sagetech 的工程 GUI 将转发器设置为 ALT 模式,以确保传输与飞行控制器的工作。
ArduPilot 包括一个飞行模式,AVOID_ADSB,它试图根据 ADS-B 传感器的输出来避免有人驾驶的飞行器。当有必要根据下面的参数进行避让时,自动进入该模式。当威胁过去后也会自动退出。
要启用该功能,请与地面站连接并设置以下参数:
注意:有同等的"警告"参数(即 AVD_W_DIST_XY),可用于调整何时在地面站出现对飞行员的警告。
在 ArduPilot 固件 4.0 及以后的版本中,可以通过 RC 通道的开关来启用或禁用进入该模式,通过设置 RCx_OPTION = 38 (ADSB Avoidance En)。如果 RC 的 PWM > 1800us,那么如果有威胁出现,就会启用进入该模式。
当启用时,ADS-B 库最多可以存储 50 个由 ADS-B 接收器探测到的飞行器信息,但可以通过 ADSB_LIST_MAX 参数进一步限制。由于其他功能的一些实验性工作,如 EKF2,可用的 RAM 可能会受到限制。值得注意的是,当 ADSB 被禁用时(ADSB_TYPE = 0),那么内存就会被释放,有效地释放出大约 1KB 的 RAM。当启用时,检测到的飞行器列表每秒钟检查一次,以发现潜在的冲突。
数据是通过 ADSB_VEHICLE 消息(ADSB_VEHICLE message)传输的。当 ArduPilot 收到时,它将使用 SRx_ADSB 值进行流式传输,其中x是遥测端口号,该值是每秒要流式传输多少飞行器。如果使用 telem1,流率参数将是 SR1_ADSB。列表将不会重复超过 1 秒的速度。这种灵活性对于节省数据链路的带宽很有用,但也允许高速链路的最大更新率,如机载配套计算机。
ArduPilot 的 SITL 包括对支持 ADS-B 的飞机进行模拟。要启用这个功能,你必须有 pymavlink v1.1.70 或更高版本。如果你有一个旧版本,请使用:
sudo pip install --upgrade pymavlink MAVProxy
使用 SIM_ADSB_COUNT 参数设置要模拟的飞机数量。可以通过设置参数'SIM_ADSB_TX'来启用 Ping2020 模拟支持。ADS-B 的其他模拟选项也存在,都以 SIM_ADSB_ 开头。
使用 USB-Serial 转换器将硬件 ADS-B 接收器插入你的计算机,或使用 PingUSB,将允许你在模拟中叠加真实的 ADS-B 交通。你可以通过这种方式调用 SITL 来实现这种效果:
sim_vehicle.py -v ArduCopter -A "--uartC uart:$SERIAL_DEVICE:57600"
其中 SERIAL_DEVICE 在 Linux 系统上可能是/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A4008ZND-if00-port0(用命令 ls /dev/serial/by-id/* 或 ls /dev/ttyS* 查找有效的串行设备列表,用于 Cygwin 的 COM 端口)。一旦 SITL 启动,可能需要设置 SERIAL3_ 参数:
:ref:`SERIAL3_PROTOCOL
:ref:`SERIAL3_BAUD