要通过 MQTT 对接大疆无人机,实现实时拉流和飞控操作,主要有两种路径,您可以根据项目需求选择:

  • 方案一:使用大疆上云 API (推荐)

    通过 Pilot 2 或大疆机场接入,利用官方物模型和标准 MQTT 接口,开发工作量小,稳定性高。

  • 方案二:自建网关 + 私有 MQTT 协议

    在遥控器或机场上运行自研 App (基于 MSDK/PSDK),将无人机数据通过自定义的 MQTT 协议转发至您的云平台。此方案灵活性高,但开发量较大。

以下将重点介绍 方案一​ 的具体实现方法。


🚀 方案一:基于大疆上云 API 的 MQTT 对接

1. 整体架构与核心概念
  • 设备连接链路

    无人机遥控器(Pilot 2) / 机场(Dock)您的云平台

    您的云平台通过 MQTT 与 Pilot 2/Dock 通信,不直接连接无人机。

  • MQTT 角色分工

    • 上行 (云平台 → 无人机):​ 下发控制指令,如起飞、降落、修改云台角度、开始直播等。

    • 下行 (无人机 → 云平台):​ 上报实时状态(遥测数据 OSD)和事件通知。

  • DRC 链路 (指令飞行)

    这是实现远程实时控制的关键。通过专用的 DLC 链路,云平台可以低延迟地发送 drone_control等指令来控制飞行器。

2. 准备工作
  1. 确认机型与固件

    确保您的行业无人机(如 M30/M300/M4 系列)和遥控器/机场固件已支持上云 API。消费级机型通常不支持。

  2. 注册开发者并创建应用

    大疆开发者平台注册账号,创建“上云 API”应用,获取 App IDApp KeyLicense

  3. 部署基础服务

    • MQTT Broker:​ 如 EMQX, Mosquitto。

    • 流媒体服务:​ 如 Nginx-RTMP, EasyDSS, ZLMediakit,用于接收和分发视频流。

    • 业务后端:​ 提供 Web 登录、设备管理、API 接口等服务。

    • 前端:​ 用于展示地图、视频和控制面板。

3. Pilot 2 / Dock 配置
  1. 升级固件

    将遥控器和机场的固件升级到支持上云 API 的最新版本,Pilot 2 通常会随之自动安装。

  2. 配置云平台地址

    在 Pilot 2 的“云服务”→“开放平台”中,填入您云平台 H5 页面的 URL。首次连接时,Pilot 2 会加载此页面进行登录认证。

  3. 云端互联 (可选,对接司空 2)

    若使用司空 2,可在其“云端互联”中配置您的 MQTT Broker 地址和 RTMP 服务器地址,由司空 2 负责转发数据。

4. 实时拉流实现

视频流并非通过 MQTT 传输,而是 Pilot 2/Dock 将码流推送到您配置的流媒体服务器。

  1. 选择推流协议

    大疆支持 RTMP、RTSP、GB28181、Agora(WebRTC) 等。推荐使用 RTMP​ 或 GB28181

  2. 在云平台开启直播

    通过调用上云 API 或监听 Pilot 2 的 MQTT 指令,向无人机下发“开始直播”命令,并指定您的 RTMP 推流地址(如 rtmp://your-server/live/drone1)。

  3. 云端拉流与分发

    您的流媒体服务器接收推流后,可进行转码、录制,并通过 HTTP-FLV、HLS 等协议分发给 Web 或移动端播放。

5. 飞控操作实现

飞控操作分为两类:常规指令和实时控制。

  • 常规指令 (通过物模型属性/事件)

    这类指令通过修改设备属性或调用服务来触发,适合非实时性要求高的操作。

    • 示例:​ 修改云台角度、设置相机参数、触发拍照/录像等。

    • 实现:​ 云平台通过 MQTT 向特定主题发布指令,Pilot 2/Dock 接收后调用本地 SDK 执行,并将结果通过 MQTT 回传。

  • 实时控制 (通过 DLC 链路)

    这是实现低延迟远程操控(如指点飞行、紧急避障)的核心。

    1. 开启 DLC 模式:​ 通过上云 API 调用 drc_enter接口,云端会获得一个专用于 DLC 的 MQTT 连接账号。

    2. 维持心跳:​ 必须定时(如每10秒)发送心跳包,否则 DLC 链路会断开。

    3. 订阅下行 Topic:​ 订阅 DLC 下行 Topic,接收来自无人机的状态和控制反馈。

    4. 发布上行指令:​ 向 DLC 上行 Topic 发布 drone_control指令,实现远程控制。该指令需要有飞行控制权。


🛠️ 方案二:自建网关 + 私有 MQTT 协议

此方案不依赖大疆的云 API,灵活性更高,但需要自行处理所有协议转换和安全逻辑。

  1. 在遥控器/机场上运行自研 App

    基于 MSDK (Android) 或 PSDK (Linux) 开发一个 App,安装在遥控器或机场中。

  2. App 内部实现

    • 通过 MSDK/PSDK 获取无人机数据(状态、视频等)。

    • 在 App 内部启动一个 MQTT 客户端,连接到您自己的 MQTT Broker。

    • 将无人机数据封装成自定义格式(如 JSON, Protobuf)后,通过 MQTT 发布到指定主题。

    • 订阅控制主题,接收来自云平台的指令,并通过 MSDK/PSDK 执行。

  3. 视频流处理

    与方案一类似,在 App 中调用 MSDK 的直播接口,将视频流推送到您自己的流媒体服务器。


💡 关键注意事项

  • 权限与安全:​ 飞控指令通常需要“飞行控制权”。所有通信链路(MQTT/RTMP)都应使用 TLS 加密,并对指令进行签名或权限校验。

  • 网络环境:​ 确保遥控器/机场有稳定的 4G/5G 或专网连接。在复杂网络下,需设计好重连和指令重试机制。

  • 日志与调试:​ 充分利用大疆提供的日志工具和 MQTT 客户端(如 MQTTX)进行联调,可以快速定位问题。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐