PX4 数据链路(Data Links)全指南:MAVLink 遥测、数传电台、RC 遥测与卫星通信
2026/9/23 14:46:18 网站建设 项目流程
  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

PX4 的数据链路(Data Link)是飞行控制器与地面站、RC 遥控器之间交换遥测数据(位置、速度、电量等)与地面指令的无线电通道,通常与用于手动操控的 RC 遥控链路使用不同的射频设备。本文以 Data Links 索引文档 为主线,系统讲解 PX4 中 MAVLink 遥测通道的配置方法(含默认端口映射与实例参数)、主流数传电台选型与频率法规、FrSky / TBS Crossfire(CRSF)两种 RC 接收机遥测方案,以及基于 Iridium/RockBlock 的高延迟卫星通信系统搭建,并给出对应源码与配置路径作为依据。读完本文,你将能够独立完成遥测链路的硬件接线、PX4 参数配置与故障排查。

数据链路在 PX4 中的角色

数据链路承担两类任务:将飞行遥测(位置、速度、电池状态等)从飞控发送到地面站(以及部分 RC 遥控系统),并将地面指令回传飞行器。PX4 通过 MAVLink 协议 在无线链路上传输串行数据,这一点在 docs/en/data_links/index.md 中被明确说明。

从源码结构看,PX4 的遥测生态由三部分组成:

  • MAVLink 通道管理:位于 src/modules/mavlink,通过MAV_X_CONFIG等实例参数把某个串口/网口绑定到特定的 MAVLink 配置;
  • 非 MAVLink 遥测驱动:位于 src/drivers/telemetry,包括frsky_telemetry(FrSky D/S.Port)、iridiumsbd(Iridium 卫星调制解调器)、hott(HoTT)和bst(Betaflight)等;
  • 安全兜底:数据链路丢失触发的 failsafe 行为由 docs/en/config/safety.md 中的参数(如COM_DL_LOSS_TNAV_DLL_ACT)控制。

MAVLink 遥测通道配置(GCS/OSD/相机/云台/伴机)

地面站(GCS)、MAVLink OSD、MAVLink 相机、云台、Remote ID、伴机(Companion Computer)、ADS-B 接收机等 MAVLink 外设都通过独立的 MAVLink 数据流与 PX4 交互,每种外设走不同的串口。详细配置方法见 MAVLink Peripherals,其底层机制是先做 串口配置,再通过"MAVLink 实例"参数绑定通道属性。

MAVLink 实例(MAVLink Instances)概念

每个 MAVLink 实例代表一套可施加到某个端口上的 MAVLink 配置。当前定义了 3 个实例,用参数MAV_X_CONFIG(X = 0、1、2)表示。实例编号只是抽象概念,数字本身没有优先级含义,任何实例都可以分配到任意端口

每个实例关联以下关键参数(完整参数见 Parameter Reference > MAVLink):

参数作用
MAV_X_CONFIG为该实例设置串口(UART),可以是任意未使用端口,如TELEM2TELEM3GPS2
MAV_X_MODE指定该实例的 MAVLink profile(如 Normal、Onboard、OSD),profile 决定具体流式消息集合及其速率
MAV_X_RATE设置该实例的最大数据速率(字节/秒)。这是所有单条消息流的合计速率;当总速率超过该值时会降低各条消息的速率。默认值通常可用,若遥测链路饱和、丢包过多可调低。值为0表示设为理论值的一半
MAV_X_FORWARD是否把当前实例收到的 MAVLink 包转发到其他接口。例如用于在 GCS 与伴机之间转发消息,使 GCS 能与连接在伴机上的 MAVLink 相机通信

随后需要为MAV_X_CONFIG指定的串口设置波特率(如SER_GPS1_BAUDSER_TEL2_BAUD等),具体取值取决于连接类型和外设能力。参数在 QGroundControl 中可用前通常需要重启 PX4

默认 MAVLink 端口映射

PX4 出厂固件对常用端口做了默认映射(见 Serial Port Configuration > Default Port Mapping):

TELEM1(地面站遥测,默认)

参数
MAV_0_CONFIGTELEM 1
MAV_0_MODENormal
MAV_0_RATE1200Bytes/s
MAV_0_FORWARDTrue
SER_TEL1_BAUD57600

TELEM2(伴机遥测,默认)

参数
MAV_1_CONFIGTELEM 2
MAV_1_MODEOnboard
MAV_1_RATE0(理论最大值的一半)
MAV_1_FORWARDDisabled
SER_TEL2_BAUD921600

ETHERNET(Pixhawk 5x 及以后带网口的硬件,默认对接 GCS)

参数
MAV_2_CONFIGEthernet(1000)
MAV_2_BROADCAST1
MAV_2_MODE0(Normal/GCS)
MAV_2_RADIO_CTL0
MAV_2_RATE100000
MAV_2_REMOTE_PRT14550(GCS)
MAV_2_UDP_PRT14550(GCS)

以太网场景的完整配置参见 PX4 Ethernet Setup。若需接入 MAVLink 相机(Camera Protocol v2)或 MAVLink 云台,分别参见 MAVLink Cameras > PX4 Configuration 与 Gimbal Configuration > MAVLink Gimbal (MNT_MODE_OUT=MAVLINK)。

数传电台(Telemetry Radios)选型与法规

数传电台为地面站(如 QGroundControl)与 PX4 飞行器之间提供无线 MAVLink 连接,支持飞行中调参、实时查看遥测、动态修改任务等。PX4 支持多类数传电台,见 Telemetry Radios/Modems:

  • SiK 固件电台(一般地,任何带 UART 接口的电台都应可用):SiK Radio、HolyBro SiK Telemetry Radio、HolyBro SiK Long Range、RFD900、ThunderFly TFSIK01;已停产的 HKPilot、3DR 电台标记为<del>。PX4 与 SiK 协议兼容,通常开箱即用(可能需要更换合适的连接器);
  • WiFi 数传:Telemetry Wifi,通常覆盖距离较短但数据率更高,更便于承载 FPV/视频流;其优点是飞行器端只需购买一个电台单元(假设地面站已有 WiFi);
  • J.Fi 无线数传模块:J.Fi Wireless Telemetry Module;
  • Microhard 串行数传电台:Microhard Serial,含 ARK Electron 与 Holybro Microhard P900;
  • CUAV 串行数传电台:CUAV P8;
  • XBee 串行数传电台(HolyBro XBP9X 已停产)。

重要限制:PX4不支持将 LTE USB 模块直接连接到飞控并通过互联网发送 MAVLink 流量;但可以将 LTE 模块接到伴机上,由伴机转发来自飞控的 MAVLink 流量,参见 Companion Computer Peripherals > Data Telephony (LTE)。

允许使用的频段

允许用于无人机的无线电频段在不同大洲、地区、国家甚至州之间各不相同,选择数传电台时必须确认其频段在计划飞行区域合法。低功率 SiK 电台(如 HolyBro 数传电台)通常提供 915 MHz 与 433 MHz 两种版本。大致而言:915 MHz 可用于美国,433 MHz 可用于欧盟、非洲、大洋洲和亚洲大部分地区——但仍需核对本国/本州法律。

FrSky 遥测(S.Port / D.Port)

FrSky 遥测允许在兼容的 RC 遥控器上查看飞行器状态信息,包括飞行模式、电池电量、RC 信号强度、速度、高度等,部分遥控器还能提供语音和振动告警(对低电量等 failsafe 警告特别有用)。PX4 同时支持较新的S.Port和较旧的D.Port两种端口,详见 FrSky Telemetry。

硬件接线

FrSky 遥测需要:兼容 FrSky 的 RC 发射机、支持遥测的 FrSky 接收机、以及把接收机 Smart Port 连接到飞控 UART 的线缆。接线分机型:

  • Pixhawk FMUv4 及更早:UART 与接收机遥测端口通常不兼容(Pixracer 除外)。S.Port 信号通常是反相的,需要转换线缆把 S.Port 拆成非反相 TX/RX 再接入 Pixhawk UART;若接收机提供非反相输出引脚,可直接接 UART 的 TX 引脚;
  • Pixhawk FMUv5/STM32F7 及以后:PX4 可以直接读取反相或非反相的 S.Port 信号,无需特殊线缆(Durandal 的 STM32H7 同理),只需把 UART 的 TX 引脚接到 S.Port 的反相或非反相引脚即可,PX4 会自动检测并处理两种类型。

PX4 参数配置

用 TEL_FRSKY_CONFIG 配置 FrSky 运行的串口,无需设置波特率(由驱动自行配置)。通常使用TELEM 2(Pixracer 除外,它默认预配置为 FrSky 端口)。若 QGroundControl 中看不到该参数,说明固件里没有编译对应驱动,需要按 Serial Port Configuration > Parameter Not In Firmware 把以下驱动加入固件:

drivers/telemetry/frsky_telemetry

其余无需额外配置:FrSky 遥测在连接后自动启动,并自动检测 D 或 S 模式。

源码侧的实现印证

从源码看,frsky_telemetry.cpp 中的get_telemetry_flight_mode()函数把 PX4 导航状态映射为 FrSky 遥测的飞行模式整数编码(Manual=18、Altitude=23、Position=22、Mission=27、Hold=26、Return=28、Acro=19、Offboard=24、Stabilized=20、Takeoff=25、Land=29、Follow Me=30),这与文档中Tmp1消息的取值表完全一致;UART 打开逻辑则位于 sPort_open_uart(),设置 8-N-1、无硬件流控等串口参数。

遥测消息

S.Port 接收机传输以下 PX4 消息:AccX/AccY/AccZ(加速度计)、Alt(气压计高度,相对 Home)、Curr(电流)、Fuel(设置了battery_capacitysmartport_fuel_percent = ON时显示剩余电量百分比,否则显示已消耗 mAh)、GAlt(GPS 高度,海平面为 0)、GPS(坐标)、GSpd(GPS 水平地速)、Hdg(航向,正北为 0°)、VFAS(电池电压)、VSpd(垂直速度 cm/s)、Tmp1(飞行模式整数编码,见上文)、Tmp2(GPS 信息,最右一位为定位类型 0=无、2=2D、3=3D,其余数字为卫星数)。PX4不支持标准的ASpd、A4两条 S.Port 消息。

D.Port 接收机传输:AccX/AccY/AccZ、Alt(气压计高度,初始为 0)、Cels(平均电芯电压)、Curr、Fuel、Date(通电时间)、GAlt、GPS、GSpd、Hdg、RPM(解锁时输出油门值,否则输出电池容量;Taranis 中叶片数需设为 12)、Tmp1、Tmp2、VFAS、VSpd。

兼容的 RC 发射机与接收机

常用发射机包括 FrSky Taranis X9D Plus(推荐)、X9D、X9E、Q X7、Turnigy 9XR Pro,上述发射机无需额外配置即可显示遥测数据。Taranis 系列(OpenTX 2.1.6 或更新)还可使用 LuaPilot 脚本自定义遥测显示界面;脚本中建议修改local BattLevelmAh = -1(使用飞行器的电量计算)和local SayFlightMode = 0(PX4 飞行模式没有配套 WAV 文件)。

兼容接收机见下表(X 系列如 XSR、X8R 为推荐型号;R、G 系列未经测试团队验证但理论上可用):

接收机遥控距离组合输出数字遥测输入尺寸重量
D4R-II1.5kmCPPM (8)D.Port40x22.5x6mm5.8g
D8R-XP1.5kmCPPM (8)D.Port55x25x14mm12.4g
D8R-II Plus1.5kmD.Port55x25x14mm12.4g
X4R1.5kmCPPM (8)Smart Port40x22.5x6mm5.8g
X4R-SB1.5kmS.Bus (16)Smart Port40x22.5x6mm5.8g
X6R / S6R1.5kmS.Bus (16)Smart Port47.42×23.84×14.7mm15.4g
X8R / S8R1.5kmS.Bus (16)Smart Port46.25 x 26.6 x 14.2mm16.6g
XSR / XSR-M1.5kmS.Bus (16) / CPPM (8)Smart Port26x19.2x5mm3.8g
RX8R1.5kmS.Bus (16)Smart Port46.25x26.6x14.2mm12.1g
RX8R PRO1.5kmS.Bus (16)Smart Port46.25x26.6x14.2mm12.1g
R-XSR1.5kmS.Bus (16) / CPPM (8)Smart Port16x11x5.4mm1.5g
G-RX81.5kmS.Bus (16)Smart Port + 内置垂直速度计55.26178mm5.8g
R910kmS.Bus (16)Smart Port43.3x26.8x13.9mm15.8g
R9 slim10kmS.Bus (16)Smart Port43.3x26.8x13.9mm15.8g

线缆与适配

  • 成品线缆:适用于 Pixhawk FMUv4 及更早(Pixracer 除外),有 DF-13 兼容 PicoBlade 接头(FMUv2/3DR Pixhawk、FMUv2/HKPilot32)与 JST-GH 接头(FMUv3/Pixhawk 2 "The Cube"、FMUv4/PixRacer v1)两种版本;
  • DIY 线缆:Pixracer 板载了 S.PORT 与 UART 信号转换电路,其他板卡需要 UART 转 S.PORT 适配器(如 FrSky FUL-1、SPC)。各机型接线要点:Pixracer 接 S.Port 接收机时将 TX/RX 线并接后接到接收机 S.port 引脚;接 D.Port 接收机时 FS out→RX、FS in→TX;Pixhawk 3 Pro 可接到 TELEM4(无需额外软件配置);FMUv5 及以后直接接一个 UART TX 引脚;多数其他板卡(如 Pixhawk 1、mRo Pixhawk、Pixhawk2)通过 TELEM2 UART 连接。

TBS Crossfire(CRSF)遥测

CRSF 是既能用于 RC 控制、也能在兼容 RC 发射机上获取飞行器遥测的双向协议,由 Team BlackSheep 为其 Crossfire 遥控系统开发,也被 ExpressLRS(ELRS)采用。它只需一个 UART即可同时通信 RC 与遥测,详见 CRSF Telemetry。若不需要遥测,也可把 Crossfire 接到RCIN端口并让接收机使用 S.BUS;Crossfire 系统本身也可作为数传电台使用。

硬件接线

将飞控 UART 的 TX/RX 接到接收机对应通道,信号通常是非反相的,可直接连接(无需额外的反相电路,但请查阅具体接收机手册):

  • TBS 接收机(以 Nano RX 为例):FC TX → Ch2,FC RX → Ch1;
  • ExpressLRS 接收机:FC TX → RX,FC RX → TX,VCC → VCC,GND → GND。

PX4 配置(需自编译固件)

PX4 默认固件不包含 CRSF 协议支持,必须自行编译并上传包含crsf-rc、移除rc_input的自定义固件:

  1. 搭建 PX4 开发环境 并进入PX4-Autopilot目录;

  2. boardconfig启动 PX4 board config 工具(menuconfig),例如 ARKV6X 目标:

    make ark_fmu-v6x_default boardconfig
  3. 在配置工具中:进入drivers子菜单取消rc_input*勾选;进入RC子菜单启用crsf_rc,保存退出;

  4. 编译固件:

    make ark_fmu-v6x_default
  5. 上传固件(make ark_fmu-v6x_default upload,或使用 QGroundControl 安装自定义固件,见 Installing PX4 main, beta, or custom firmware);

  6. 设置参数:

    • RC_CRSF_PRT_CFG:设为连接 CRSF 接收机的端口(如TELEM1)。该参数会把串口配置为 CRSF 协议;注意某些串口已有默认的 串口映射 或 MAVLink 默认端口映射,使用前需先解除——例如要用TELEM1/TELEM2需先修改MAV_0_CONFIG/MAV_1_CONFIG停止占用。无需设置波特率(由驱动配置);
    • RC_CRSF_TEL_EN:启用以激活 Crossfire 遥测。

RC 通道映射与校准参见 Radio Control Setup。

支持与不支持的遥测数据点

CRSF 遥测数据点(摘自 TBS Crossfire 手册)包括:1RSS/2RSS(上行的两根天线 RSSI)、RQly(上行链路质量)、RSNR(上行信噪比)、RFMD(上行更新率,0=4Hz、1=50Hz、2=150Hz)、TPWR(上行发射功率)、TRSS/TQly/TSNR(下行信号强度/链路质量/信噪比)、ANT(仅调试)、GPS/Alt/Sats/Hdg(来自 TBS GPS 或飞控)、RXBt(电池电压)、Curr(电流)、Capa(累计消耗)、Ptch/Roll/Yaw(飞控姿态角)、FM(飞行模式)、Alt(相对起飞点的融合高度)、VSpd(垂直速度)。

注意:GPS 传感器中的GAlt是相对平均海平面的 GPS 高度,而Alt/VSpd是 PX4 融合的局部高度与爬升率(相对估计器原点,大致为起飞点)。PX4 以 CRSF 气压高度帧发送这些数据,因此尽管帧名是气压计,数值并非原始气压读数。VSpd使用线性垂直速度形式,需要较新的 EdgeTX(2.9+);高度显示需要 EdgeTX 2.7.1 及以上。

卫星通信:Iridium/RockBlock 高延迟链路

卫星通信系统可提供地面站与飞行器之间的长距离、高延迟链路。PX4 文档描述了以 RockBlock 作为 Iridium SBD 卫星通信系统服务提供商的完整搭建方案,信号良好时延迟约 10~15 秒,详见 Iridium/RockBlock Satellite Communication System。

系统由三部分组成:连接了 RockBlock 9603 模块的 Pixhawk(刷 PX4 固件)、运行 Ubuntu 的消息中继服务器、以及运行 QGroundControl 的 Ubuntu 地面站。RockBlock 9603 模块推荐用于其更小更轻;RockBlock MK2 也可用。成本方面,每个模块每月激活费 £10,每条消息每 50 字节消耗一个 credit,credit 套餐价格约 £0.04~£0.11/个。

机载端设置

接线:RockBlock 模块需通过高功率串口供电(最大 0.5 A @ 5 V),若没有空闲高功率串口,需另设与 Pixhawk 共地的电源。模块可用内置天线或通过 SMA 接口的外接天线(需移动小型 RF 链路线切换);使用外接天线时务必先接天线再上电,避免损坏模块。

模块配置:模块默认波特率为 19200,而 PX4 的iridiumsbd驱动要求 115200,需用 AT 指令修改:

  1. 以 19200/8-N-1 连接模块,用AT确认通信正常(应答应为OK);

  2. 修改波特率:

    AT+IPR=9
  3. 以 115200/8-N-1 重新连接并保存配置:

    AT&W0

软件配置:用 ISBD_CONFIG 配置 RockBlock 运行的串口,无需设置波特率。若 QGroundControl 中无此参数,需把驱动加入固件:

drivers/telemetry/iridiumsbd

从源码结构看,该驱动位于 src/drivers/telemetry/iridiumsbd,包含IridiumSBD.cpp/.h调制解调器通信实现、iridiumsbd_params.yaml参数定义与module.yaml模块元数据。

RockBlock 账户设置

首次购买模块时需创建 RockBlock 账户,在My RockBLOCKs下注册模块、激活月租并确保账户内有足够 credit(默认设置下飞行器每分钟向地面站发送一条消息)。随后为消息中继服务器创建 delivery group 并将模块加入其中。

中继服务器搭建

中继服务器建议运行 Ubuntu 16.04 或 14.04,需静态 IP 和两个公网 TCP 端口:5672(RabbitMQ 消息代理,可在 rabbitmq 设置中修改)与45679(HTTP POST 接口,可在 relay.cfg 中修改):

  1. 安装 Python 模块:sudo pip install pika tornado future
  2. 安装消息代理:sudo apt install rabbitmq-server
  3. 配置代理凭据(PWD 换成你的密码):sudo rabbitmqctl add_user iridiumsbd PWDsudo rabbitmqctl set_permissions iridiumsbd ".*" ".*" ".*"
  4. 克隆 SatComInfrastructure 仓库并配置队列:./setup_rabbit.py localhost iridiumsbd PWD
  5. 验证:sudo rabbitmqctl list_queues应列出MOMO_LOGMTMT_LOG四个队列
  6. 编辑relay.cfg并以后台方式启动中继脚本:screen -dm bash -c 'cd SatcomInfrastructure/; ./relay.py'ctrl+a d脱离、ctrl+a :quit终止、screen -dr重新附着)

地面站设置与验证

地面站同样安装pika tornado future、克隆 SatComInfrastructure 仓库、编辑udp2rabbit.cfg,然后安装 QGroundControl(daily build)并添加 UDP 连接:

  • Listening port:10000
  • Target hosts:127.0.0.1:10001
  • High Latency: 勾选

验证步骤:运行./udp2rabbit.py,在 RockBlock 账户的Test Delivery Groups标签页向 delivery group 发送测试消息;若几秒内终端显示消息确认(acknowledge),说明 delivery group、中继服务器与 udp2rabbit 脚本配置正确。

运行与链路优先级

启动 QGroundControl 后先手动连接高延迟链路、再连接常规遥测链路;启动udp2rabbit.py;给飞行器上电;等待 QGC 收到第一条HIGH_LATENCY2消息(可通过 MAVLink Inspector 组件或工具栏 LinkIndicator 检查)。链路优先级规则:

  • 用户未指定时,常规无线电遥测链路优先于高延迟链路;
  • 当飞行器已解锁且常规遥测链路丢失(一段时间未收到 MAVLink 消息)时,飞控与 QGC 会回退到高延迟链路;链路恢复后自动切回;
  • 用户可通过工具栏 LinkIndicator 手动选择优先级链路。

卫星链路故障排查

  • 能收到飞行器消息但无法下发命令(飞行器无反应):检查中继服务器设置,尤其是 IMEI;
  • 地面站收不到任何卫星消息:用系统控制台执行iridiumsbd status检查驱动是否启动、模块是否收到卫星信号;验证中继服务器、delivery group 与udp2rabbit.py配置;检查链路是否连接及设置是否正确;
  • IridiumSBD 驱动不启动:重启飞行器;若有效,增大extras.txt中驱动启动前的休眠时间;确认 Pixhawk 与模块共地、模块波特率为 115200;
  • 地面能收到首条消息但飞行中无法发送或延迟明显增大(分钟级):飞行后检查信号质量,若飞行中持续下降且使用内置天线,考虑换外接天线;外接天线尽量远离电子设备与干扰源,并确认天线无损坏。

数据链路丢失 Failsafe(安全兜底)

数据链路丢失 failsafe 在到最后一个 MAVLink 地面站(如 QGroundControl)的连接丢失时触发,详见 Safety Configuration > Data Link Loss Failsafe。关键参数:

设置参数说明
数据链路丢失超时COM_DL_LOSS_T丢失数据连接后触发 failsafe 前的等待时间
Failsafe 动作NAV_DLL_ACTDisabled、Hold、Return、Land、Disarm、Terminate
模式例外COM_DLL_EXCEPT在这些模式下忽略数据链路丢失

大多数 failsafe 被触发后会先进入 Hold 模式并保持 COM_FAIL_ACT_T 秒再执行关联动作,给用户接管时间。当多个 failsafe 同时触发时,取更严重的动作执行(例如 RC 与 GPS 同时丢失且分别配置为 Return 与 Land 时,执行 Land)。

总结

PX4 的数据链路体系覆盖从短距离高频的 MAVLink 遥测(实例化串口/网口配置、默认端口映射)、中距离的数传电台(SiK/WiFi/Microhard 等,注意频段法规),到 RC 接收机遥测(FrSky S/D.Port、CRSF/ELRS,其中 CRSF 需要自编译固件),再到超远距离的 Iridium/RockBlock 卫星链路(含中继服务器与地面站搭建)。配置的共通要点是:先通过串口配置把协议绑定到正确的 UART 并解除默认 MAVLink 映射,再设置实例参数与波特率(或由驱动自管),最后用参数启动对应驱动。配合 Data Link Loss Failsafe 兜底,可构建完整的遥测与指令链路。

  • 嵌入式
  • 物联网
  • 机器人
  • 自动驾驶
  • 智能硬件

【免费下载链接】PX4-Autopilot

PX4 Autopilot Software

项目地址:https://gitcode.com/gh_mirrors/px/PX4-Autopilot
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询