一、什么是大疆PSDK?
PSDK = Payload SDK,负载软件开发套件
大疆开放给第三方开发者,用来开发挂载在机腹 E-Port/SkyPort 上的自研负载(相机、多光谱、激光雷达、传感器、抛投装置等),让自研负载和飞行器、Pilot2 地面站、O4 图传链路深度打通。
区分三个 SDK,避免混淆:
- PSDK:跑在负载硬件上(自研板),负载 ↔ 飞行器通信
- MSDK:跑在地面端(安卓平板 / APP),地面站 ↔ 遥控器 ↔ 飞行器
- OSDK(现已合并进新版 PSDK):跑在妙算机载计算机,用于机载算力开发
二、PSDK 核心定位
1、PSDK 本质
是一套协议栈 + API 库 + 硬件 HAL 适配层,运行在自研负载板 MCU/SOC(RTOS/Linux 均可,C 语言开发),不需要妙算。
2、核心目标
- 负载和飞行器握手、身份认证(依赖 SkyPort V2 内置 CC 认证芯片,I2C 总线)
- 读取飞行器飞行状态(位置、RTK、姿态、高度、电池、遥控器按键)
- 负载上报自身状态给 Pilot2 地面站,在地面站生成自定义 UI 控件
- MDI 高速通道:把自研相机图像 / 视频流注入飞行器 O4 图传,直接回传到遥控器 Pilot2
- 双向自定义数据透传:负载 ↔ 地面站之间传输自定义业务数据
三、硬件通信链路选型(M400 + SkyPort V2)
M400 挂载 SkyPort V2 时,PSDK 支持两种组合:
1、DJI_USE_ONLY_UART:
只用 UART 串口,低速,只传指令、状态,无法传输图像
2、DJI_USE_UART_AND_NETWORK_DEVICE:
UART + MDI 以太网
- UART(DJI_RX/TX,3.3V TTL 串口):信令 / 指令通道(PSDK 控制协议、飞行状态、遥控按键、负载控制命令),带宽低,高可靠
- MDI 以太网:高速媒体数据流通道,H.264/H.265 视频流、大文件、传感器大数据,直接送入飞行器 O4 图传链路,遥控器 Pilot2 实时预览画面DJI
其他链路:USB Bulk / USB RNDIS,SkyPort V2 不支持 USB 链路,只有 E-Port 直连才支持。
四、PSDK 软件架构(分层)
1、HAL 硬件适配层
对接底层硬件:UART 读写函数、MDI 网口初始化、I2C 认证芯片读写、PPS 时间同步。
PSDK 库不绑定硬件,HAL 由开发者实现。
2、核心协议栈(大疆闭源库)
飞行器与负载之间私有帧协议,处理帧打包、校验、重传、心跳、握手认证、链路保活。
3、API 业务层(开放头文件,可直接调用)
模块化 API,分为:
- 飞行器状态订阅模块:姿态、位置、速度、电量、GPS/RTK、飞行模式
- 遥控器按键订阅模块:读取自定义 C1/C2、拨轮、按键事件
- 自定义 Widget 控件模块:在 Pilot2 界面生成按钮、滑块、文本框,地面站下发参数控制负载
- Media 媒体推流模块(MDI 通道核心):把图像 H.264 码流推送给飞行器图传,地面实时预览
- 数据透传模块:自定义双向数据包,业务数据负载↔地面站
- 云台控制模块:控制 SkyPort 云台俯仰、横滚
- 时间同步 PPS 模块:I2C+PPS 脉冲,图像像素与飞行器 GNSS 时间戳对齐,巡检打点、测绘打标必备
五、核心能力清单(自研负载板,SkyPort V2)
1、可用能力
- 飞行器实时状态:经度纬度、高度、速度、姿态角、RTK 定位状态、剩余电量、飞行模式
- 遥控器自定义按键、拨轮事件订阅
- Pilot2 自定义 UI 控件(按钮、开关、数值输入、提示弹窗),地面控制负载
- MDI 以太网视频推流:自研相机 H.264 流送入 O4 图传,遥控器实时看画面
- 云台控制:控制 SkyPort V2 云台转动、角度读取
- 双向自定义数据透传(负载 ↔ 地面 MSDK/Pilot2)
- PPS 时间同步,图像打 GPS 时间戳
- 多负载协同(M400 支持多个 E-Port 挂载多 PSDK 负载)
2、不可用(无妙算 Manifold3)
- 无法读取 M400 机载激光雷达、毫米波、机载 FPV 相机原始码流 / 点云,这个能力必须妙算 3
- 无法在负载端运行机载 AI 算法(妙算才是机载算力),算法只能跑在自研负载板上

六、上电与握手流程(SkyPort V2)
- M400 上电,E-Port V2 输出电源给 SkyPort V2
- SkyPort V2 内部CC 认证芯片(I2C)和飞行器握手,完成负载身份校验;校验失败,飞行器会切断负载供电、PSDK 链路无法启动
- 自研负载板上电,初始化 UART 和 MDI PHY
- PSDK 库启动,UART 链路和飞行器 PSDK 服务端建立心跳握手,版本协商
- HAL 层上报硬件就绪,订阅飞行状态、注册 Widget 回调
- MDI 以太网链路建立,负载调用 Media API,开始推送图像码流
- 地面 Pilot2 自动识别 PSDK 负载,加载自定义 UI、预览 MDI 推送视频
关键:认证芯片在 SkyPort V2 转接环上,不是自研板。
七、开发环境与移植要点
- 开发语言:C 语言,支持 RTOS(FreeRTOS)、嵌入式 Linux
- 编译:CMake,交叉编译,编译生成应用跑在你的 SOC/MCU
- 移植核心工作:
- 实现 HAL 串口读写(DJI_RX/TX)
- MDI 以太网 PHY 硬件调试(MDI 是飞行器专用差分以太网,不是普通家用 RJ45)
- 对接 SkyPort V2 I2C(认证通信,无需你读写认证芯片密钥)
- Media 推流接口:封装 H.264 码流送入 MDI 通道
- 账号:需要大疆开发者企业账号,SkyPort V2 硬件序列号在开发者后台绑定,否则认证无法通过。
八、PSDK 与 SkyPort V2 开发常见的问题
- SkyPort V2 原生固件不支持 M400,必须升级 v01.04.1112 固件,否则飞行器不认负载,握手失败
- PSDK 版本锁定:SkyPort V2 只能 PSDK V1,不能用 V3
- UART 是 3.3V TTL,严禁 5V 电平,会烧毁 SkyPort 信号管脚
- MDI 以太网不是普通 TCP/IP 随便传,必须使用 PSDK Media 推流 API 封装码流,裸 TCP 图像数据飞行器图传链路无法识别,Pilot2 无法解码预览
- 上电时序:负载不能先于飞行器完成 PSDK 初始化,必须等飞行器握手就绪,否则链路断开
- 心跳保活:UART 链路必须维持 PSDK 心跳,心跳超时飞行器判定负载离线,断开图传和通信
九、PSDK、MSDK、妙算整体数据流全景
1、Pilot2地面站(平板) <---MSDK---> 遥控器 <---O4图传---> M400飞行器
2、飞行器 <---UART(PSDK指令)+MDI(图像)---> SkyPort V2 ---> 自研PSDK负载板
