如何使用mqtt对接大疆实时拉流和飞控操作的方法
要通过 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. 准备工作
-
确认机型与固件
确保您的行业无人机(如 M30/M300/M4 系列)和遥控器/机场固件已支持上云 API。消费级机型通常不支持。
-
注册开发者并创建应用
在 大疆开发者平台注册账号,创建“上云 API”应用,获取
App ID、App Key和License。 -
部署基础服务
-
MQTT Broker: 如 EMQX, Mosquitto。
-
流媒体服务: 如 Nginx-RTMP, EasyDSS, ZLMediakit,用于接收和分发视频流。
-
业务后端: 提供 Web 登录、设备管理、API 接口等服务。
-
前端: 用于展示地图、视频和控制面板。
-
3. Pilot 2 / Dock 配置
-
升级固件
将遥控器和机场的固件升级到支持上云 API 的最新版本,Pilot 2 通常会随之自动安装。
-
配置云平台地址
在 Pilot 2 的“云服务”→“开放平台”中,填入您云平台 H5 页面的 URL。首次连接时,Pilot 2 会加载此页面进行登录认证。
-
云端互联 (可选,对接司空 2)
若使用司空 2,可在其“云端互联”中配置您的 MQTT Broker 地址和 RTMP 服务器地址,由司空 2 负责转发数据。
4. 实时拉流实现
视频流并非通过 MQTT 传输,而是 Pilot 2/Dock 将码流推送到您配置的流媒体服务器。
-
选择推流协议
大疆支持 RTMP、RTSP、GB28181、Agora(WebRTC) 等。推荐使用 RTMP 或 GB28181。
-
在云平台开启直播
通过调用上云 API 或监听 Pilot 2 的 MQTT 指令,向无人机下发“开始直播”命令,并指定您的 RTMP 推流地址(如
rtmp://your-server/live/drone1)。 -
云端拉流与分发
您的流媒体服务器接收推流后,可进行转码、录制,并通过 HTTP-FLV、HLS 等协议分发给 Web 或移动端播放。
5. 飞控操作实现
飞控操作分为两类:常规指令和实时控制。
-
常规指令 (通过物模型属性/事件)
这类指令通过修改设备属性或调用服务来触发,适合非实时性要求高的操作。
-
示例: 修改云台角度、设置相机参数、触发拍照/录像等。
-
实现: 云平台通过 MQTT 向特定主题发布指令,Pilot 2/Dock 接收后调用本地 SDK 执行,并将结果通过 MQTT 回传。
-
-
实时控制 (通过 DLC 链路)
这是实现低延迟远程操控(如指点飞行、紧急避障)的核心。
-
开启 DLC 模式: 通过上云 API 调用
drc_enter接口,云端会获得一个专用于 DLC 的 MQTT 连接账号。 -
维持心跳: 必须定时(如每10秒)发送心跳包,否则 DLC 链路会断开。
-
订阅下行 Topic: 订阅 DLC 下行 Topic,接收来自无人机的状态和控制反馈。
-
发布上行指令: 向 DLC 上行 Topic 发布
drone_control指令,实现远程控制。该指令需要有飞行控制权。
-
🛠️ 方案二:自建网关 + 私有 MQTT 协议
此方案不依赖大疆的云 API,灵活性更高,但需要自行处理所有协议转换和安全逻辑。
-
在遥控器/机场上运行自研 App
基于 MSDK (Android) 或 PSDK (Linux) 开发一个 App,安装在遥控器或机场中。
-
App 内部实现
-
通过 MSDK/PSDK 获取无人机数据(状态、视频等)。
-
在 App 内部启动一个 MQTT 客户端,连接到您自己的 MQTT Broker。
-
将无人机数据封装成自定义格式(如 JSON, Protobuf)后,通过 MQTT 发布到指定主题。
-
订阅控制主题,接收来自云平台的指令,并通过 MSDK/PSDK 执行。
-
-
视频流处理
与方案一类似,在 App 中调用 MSDK 的直播接口,将视频流推送到您自己的流媒体服务器。
💡 关键注意事项
-
权限与安全: 飞控指令通常需要“飞行控制权”。所有通信链路(MQTT/RTMP)都应使用 TLS 加密,并对指令进行签名或权限校验。
-
网络环境: 确保遥控器/机场有稳定的 4G/5G 或专网连接。在复杂网络下,需设计好重连和指令重试机制。
-
日志与调试: 充分利用大疆提供的日志工具和 MQTT 客户端(如 MQTTX)进行联调,可以快速定位问题。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)