跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI

树莓派 4B 连接大疆 M300 RTK 无人机 PSDK 开发指南

详细记录了树莓派 4B 连接大疆 M300 RTK 无人机的 PSDK 开发全流程。涵盖硬件选型与 E-Port 套件接线规范,重点解析了 Linux 环境下 USB Gadget 配置、Bulk 传输驱动编译及自启动服务搭建。针对 OpenCV 编译报错、PSDK 版本兼容性(推荐 v3.11.0)及常见通信错误提供了具体解决方案。通过配置 UART 与 USB 双链路,实现了无人机数据订阅、相机码流获取及飞行控制功能,适用于嵌入式开发与二次开发场景。

292440837发布于 2026/4/10更新于 2026/10/5103 浏览
树莓派 4B 连接大疆 M300 RTK 无人机 PSDK 开发指南

注:本教程基于树莓派 4B 与大疆 M300 RTK 无人机进行 Payload SDK (PSDK) 开发。不同型号细节存在差异,具体配置请参照官方文档。

1. 硬件准备

1.1 硬件选型
  • 无人机型号:M300 RTK。顶部有三个接口:OSDK 端口、云台口(Payload SDK Port)用于运行 PSDK 程序;Type-C 调参口用于连接电脑升级固件或导出日志。
编号部件
25调参接口
26OSDK 接口
27PSDK 接口

(此处省略图片描述,实际发布时保留图片链接)

  • 第三方开发板:Raspberry Pi 4B
  • 大疆开发套件:E-Port 开发者套件

注意:E-Port 开发板左侧开关靠近接口侧为 OFF,反之为 ON;右侧 USB 主/从切换,靠近接口侧为 HOST,反之为 DEVICE。

  • 其余设备:
    • USB-TTL (CH340):部分树莓派串口性能有限,建议使用此模块辅助调试。
    • XT30 转 Type-C 线:用于 E-Port 供电。
    • Type-A 转 Type-C 数据线:必须支持数据传输。
    • E-Port 同轴线:套件配套。
1.2 硬件连接
  1. 树莓派与 USB-TTL 连接:Type-A 端插入树莓派 USB 3.0 口。
  2. E-Port 与 USB-TTL 连接:RX 接 TX,TX 接 RX,GND 接 GND。此线主要用于 UART 低速数据传输。
  3. E-Port 同轴线连接:Type-C 端插入 E-Port 的 E-Port 接口,标识 B 朝上。
  4. 最终连线模式:将 E-Port 开关拨至 ON,USB 主/从切换拨至 DEVICE。M300 作为 Device 从设备,开发板作为 Host 主设备。启动无人机后,开发板指示灯应亮绿灯。
    • E-Port 接入 M300 的 OSDK 端口(同轴线 A 标识朝内)。PSDK 3.x 版本集成了 OSDK 功能,比 4.1 更轻量。
  5. 树莓派与 E-Port 数据连接:使用 Type-A 转 Type-C 数据线,Type-A 端接树莓派 USB 2.0 接口,Type-C 端接 E-Port USB 2.0 接口。此线用于 Bulk 高速数据传输。
  6. 树莓派供电:通过 XT30 转 Type-C 线连接 E-Port 的 5V/2A 输出接口至树莓派 Type-C 电源口。

至此硬件连线完成,后续将在软件部分验证连接状态。

2. 软件准备

PSDK 版本:v3.11.0(最高仅支持此版本获取相机码流,更高版本可能无法正常工作)。 连接模式:DJI_USE_UART_AND_USB_BULK_DEVICE

2.1 环境下载与安装
  • 系统:Raspberry Pi OS (64-bit),推荐使用 Raspberry Pi Imager 烧录。
  • 依赖库安装:
sudo apt-get install libusb-1.0-0-dev
  • OpenCV 3.4.15:
sudo apt install libgtk2.0-dev pkg-config
unzip opencv-3.4.15.zip
cd opencv-3.4.15/
mkdir build && cd build
cmake ../
make -j4
sudo make install

提示:若 GCC 版本过高导致编译报错(如 persistence_base64.cpp),需修改源码第 167 行逻辑,将指针比较改为空值判断。

  • FFmpeg 4.3:
tar -zxvf ffmpeg-4.3.2.tar.gz
./configure --enable-shared
make -j4
sudo make install
  • Opus 1.3.1:
tar -xzvf opus-1.3.1.tar.gz
cd opus-1.3.1/
autoreconf -f -i
./configure
make -j4 && sudo make install
  • 其他工具:
sudo apt-get install automake libaio-dev gcc g++ cmake
sudo apt-get update && sudo apt-get upgrade
2.2 开启树莓派 USB 能力

Linux 设备需启用 UDC (USB Device Controller) 功能。本文基于官方脚本修改,适配 PSDK 3.11.0。

  1. 修改配置文件:

    • /boot/firmware/config.txt 末尾添加:
      dtoverlay=dwc2
      
      (注意:不要删除原有的 dtoverlay=vc4-kms-v3d,否则图形界面无法启动)
    • /boot/firmware/cmdline.txt 在 rootwait 后添加:
      modules-load=dwc2
      
    • /etc/modules 末尾添加:
      libcomposite
      
  2. 重新编译 start_bulk 程序: 部分系统自带程序不可用,需自行编译。

cd usb-bulk-configuration-reference
make clean
make

常见问题:若编译报错 htole32/htole16 未定义,需创建 fix_endian.h 头文件并替换源码中的关键字。

  1. 编写启动脚本: 创建 raspi-usb-device-start.sh,用于配置 gadget。脚本中根据需求设置 enable_bulk=1,其余设为 0。 (此处省略长脚本内容,实际发布时保留完整脚本)

  2. 配置自启动服务: 创建 systemd 服务文件 /etc/systemd/system/bulk-gadget.service,确保每次开机自动加载 USB 设备功能。

sudo systemctl enable bulk-gadget
sudo reboot
  1. 验证设备信息: 连接电脑后执行 lsusb,应看到 ID 为 2ca3:f001 的设备。确认 VID/PID 及 Endpoint 地址,以便后续 PSDK 配置。
2.3 验证线路连接

启动无人机,连接树莓派,进入终端检查:

  • UART 连接:ls /dev/tty*,出现 /dev/ttyACM0 表示连接成功。
  • USB-TTL 连接:出现 /dev/ttyUSB0 表示 CH340 识别正常。
  • USB 设备:lsusb 应显示相关转换芯片信息。

3. 启动 PSDK

下载 PSDK v3.11.0 源码包并解压。以 C++ 样例为例。

3.1 配置用户信息

修改 samples/sample_c++/platform/linux/manifold2/application/dji_sdk_app_info.h:

#define USER_APP_NAME "your_app_name"
#define USER_APP_ID "your_app_id"
#define USER_APP_KEY "your_app_key"
#define USER_APP_LICENSE "your_app_license"
#define USER_DEVELOPER_ACCOUNT "[email protected]"
#define USER_BAUD_RATE "921600"

提示:应用名称不宜过长,建议控制在 4 个字符以内,避免初始化报错。

3.2 配置硬件连接方式

修改 samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.h:

#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_USB_BULK_DEVICE

M300 OSDK 端口仅支持 UART 或 UART+USB BULK 模式。

3.3 修改 UART 配置文件

修改 samples/sample_c++/platform/linux/manifold2/hal/hal_uart.h:

#define LINUX_UART_DEV1 "/dev/ttyUSB0"
#define LINUX_UART_DEV2 "/dev/ttyACM0"

DEV2 是 M300 特有的 USB 通道配置,需根据实际情况调整。

3.4 修改 Bulk 配置文件

修改 samples/sample_c++/platform/linux/manifold2/hal/hal_usb_bulk.h,填入步骤 2.2 中查到的 VID、PID 及 Endpoint 地址:

#define LINUX_USB_VID (0x2CA3)
#define LINUX_USB_PID (0xF001)
// ... 其他 Endpoint 配置 ...
3.5 编译运行

修改 CMakeLists.txt 指向正确的 Linux 路径,然后编译:

cd Payload-SDK/
mkdir build && cd build
cmake ../
make -j4
sudo ./dji_sdk_demo_linux_cxx

运行结果分析: 成功启动后,终端会打印 SDK 版本、飞机序列号等信息。若出现 gimbal init error: 0x000000E0,属于正常现象。M300 RTK 的 OSDK 接口对云台控制支持有限,不影响飞行控制、数据订阅和相机码流等核心功能。

常见问题

  1. 串口 CRC8 错误:少量警告可忽略。若频繁出现,更换高性能 USB-TTL 模块或缩短串口线。
  2. DjiAccessAdapter_IsUartConnect 错误:检查负载端串口是否开启,USB-TTL 设备是否正常。
  3. 无法订阅相机码流:尝试降低 PSDK 版本至 3.11.0,高版本可能存在兼容性问题。
  4. 模拟飞行测试:可通过数据线连接电脑,使用 DJI Assistant 2 (Enterprise Series) 进行仿真测试。

目录

  1. 1. 硬件准备
  2. 1.1 硬件选型
  3. 1.2 硬件连接
  4. 2. 软件准备
  5. 2.1 环境下载与安装
  6. 2.2 开启树莓派 USB 能力
  7. 2.3 验证线路连接
  8. 3. 启动 PSDK
  9. 3.1 配置用户信息
  10. 3.2 配置硬件连接方式
  11. 3.3 修改 UART 配置文件
  12. 3.4 修改 Bulk 配置文件
  13. 3.5 编译运行
  14. 常见问题

更多推荐文章

查看全部
  • 2025 年中秋月相计算:Python 实现与可视化
  • SpringBoot Logback 动态获取 application 配置项
  • 爬虫 Cookies 模拟浏览器登录技术详解
  • 无人机操控模式详解:美日中三手型差异与选择
  • 昇腾 NPU 部署 CodeLlama 实战指南
  • Linux 文件系统架构、原理与实战操作指南
  • C# 扩展 Dynamics 365 Copilot:自定义插件与场景实战
  • 基于 Higress 将 REST API 转换为 MCP Server 工具
  • VS Code + GitHub Copilot 实战指南:从安装配置到高效协作
  • ChatGPT、Gemini 与 Spotify 教育版权益介绍
  • 基于 AutoGPT 与 Python 构建自主 AI 智能体实战指南
  • DeepSeek 使用指南与提示词技巧
  • 前端状态管理方案选型指南:从 Redux 到 Zustand 再到 Pinia
  • 数据结构与算法:优先队列(priority_queue)
  • Python 学习历程与应用场景:从爬虫到数据分析实战
  • AI 双重突破:MWC IQ 时代与 DeepSeek V4 多模态革命
  • 3DMAX VR 渲染器局部渲染设置
  • 三菱 R 系列 PLC 高端应用:远程 IO、机器人通信与多屏配方
  • OrangePi-5 Plus/5 Ultra 部署 YOLO26n 无人机检测与性能优化
  • Windows 11 新机跳过联网激活的三种方法及 OOBE 命令解析

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online