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

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

详细记录了树莓派 4B 与大疆 M300 RTK 无人机通过 PSDK 3.11.0 进行硬件连接与软件开发的全过程。内容涵盖 E-Port 套件选型、UART 与 USB Bulk 混合连接方式、树莓派 USB Gadget 配置、OpenCV 及 FFmpeg 环境搭建、SDK 参数修改及编译运行。重点解决了高版本 PSDK 兼容性、USB 设备识别及常见报错问题,适合嵌入式开发人员参考实战。

活在当下发布于 2026/4/7更新于 2026/9/974 浏览
树莓派 4B 连接大疆 M300 RTK 无人机开发指南

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

本教程基于树莓派 4B 与大疆 M300 RTK 无人机,介绍如何通过 Payload SDK (PSDK) 实现硬件连接与软件开发。不同型号间存在细节差异,建议结合官方文档进行针对性调整。

1. 硬件准备

1.1 设备选型

  • 无人机:M300 RTK。顶部接口中,OSDK 端口和云台口(Payload SDK Port)用于运行 PSDK 程序;Type-C 调参口用于电脑连接、固件升级及日志导出。
  • 开发板:Raspberry Pi 4B。
  • 扩展套件:E-Port 开发者套件。注意左侧开关靠近接口侧为 OFF,右侧 USB 主/从切换靠近接口侧为 HOST,反之为 DEVICE。
  • 连接线:
    • USB-TTL (CH340):部分树莓派串口性能有限,建议使用此模块辅助调试。
    • XT30 转 Type-C:用于 E-Port 供电。
    • Type-A 转 Type-C 数据线:必须支持数据传输,用于高速 Bulk 通信。
    • E-Port 同轴线:连接无人机与开发套件。

硬件接口示意图

接口编号功能说明
25调参接口
26OSDK 接口
27PSDK 接口

1.2 硬件连接

  1. 串口连接:树莓派 USB3.0 接 USB-TTL 线;E-Port 开发板 RX->TX, TX->RX, GND->GND,用于 UART 低速数据传输。
  2. 同轴连接:E-Port 同轴线 Type-C 端插入开发板 E-Port 接口(B 标识朝上),另一端 A 标识插入无人机 OSDK 端口。注意 PSDK 3.x 版本集成了 OSDK 功能,比 4.1 更轻量。
  3. USB 连接:使用 Type-A 转 Type-C 数据线连接树莓派 USB2.0 与 E-Port USB2.0,用于 Bulk 高速数据传输。
  4. 供电连接:XT30 转 Type-C 线连接 E-Port 5V/2A 输出与树莓派 Type-C 电源口。
  5. 模式设置:启动前将 E-Port 开关拨至 ON,USB 切换拨至 DEVICE(无人机做 Device,开发板做 Host)。启动后开发板指示灯应亮绿光。

最终连线效果

2. 软件环境配置

关键提示:M300 连接最高仅支持 PSDK 3.11.0,更高版本可能无法获取相机码流。

2.1 系统依赖安装

树莓派系统推荐使用 Raspberry Pi OS (64-bit)。进入终端后依次执行以下命令:

sudo apt-get update sudo apt-get upgrade sudo apt-get install libusb-1.0-0-dev

安装 OpenCV 3.4.15(需处理 GCC 高版本语法错误):

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

*注:若编译时报错 comparing the result of pointer addition,请修改 modules/core/src/persistence_base64.cpp 第 167 行,将 src + off == 0 改为 off == 0 后重新编译。

安装 FFmpeg 4.3、Opus 1.3.1 及其他工具:

tar -zxvf ffmpeg-4.3.2.tar.gz
./configure --enable-shared
make -j4
sudo make install

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 -y

2.2 开启树莓派 USB Gadget 能力

Linux 下需通过软件实现 UDC 功能。修改 /boot/firmware/config.txt 末尾添加 dtoverlay=dwc2(保留原有图形化配置),在 /boot/firmware/cmdline.txt 的 rootwait 后添加 modules-load=dwc2,并在 /etc/modules 末尾添加 libcomposite。

随后需要重新编译 start_bulk 程序以适配当前系统。若遇到 htole32 等报错,可创建 fix_endian.h 头文件并替换源码中的关键字。

编写 raspi-usb-device-start.sh 脚本配置 gadget,确保 enable_bulk=1,其余功能关闭。脚本会自动检测配置并重启服务。

配置 systemd 服务实现开机自启:

sudo nano /etc/systemd/system/bulk-gadget.service

写入以下内容(注意修改 ExecStart 路径):

[Unit]
Description=Start PSDK USB bulk gadget
After=sysinit.target
DefaultDependencies=no

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/home/pi/program/start_bulk/raspi-usb-device-start.sh
StandardOutput=journal
StandardError=journal
User=root

[Install]
WantedBy=sysinit.target

激活服务:

sudo systemctl enable bulk-gadget
sudo reboot

验证时可通过 lsusb 查看是否出现 ID 为 2ca3:f001 的设备。

3. 启动 PSDK

下载 PSDK 3.11.0 源码包并解压。需在 DJI 开发者网站注册应用,获取 AppID、AppKey 等信息。

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"

*注:App 名称不宜过长,建议控制在 4 字以内,否则可能触发长度限制报错。

3.2 配置连接模式

修改 dji_sdk_config.h,选择 DJI_USE_UART_AND_USB_BULK_DEVICE:

#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_USB_BULK_DEVICE

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

3.3 修改端口配置

修改 hal_uart.h 指定串口路径:

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

同时修改 hal_usb_bulk.h 中的 Endpoint 和 Interface 数值,这些值需根据 lsusb -v 的实际输出填写(如 VID: 0x2CA3, PID: 0xF001)。

3.4 编译与运行

修改 CMakeLists.txt 指向正确的平台目录,然后编译:

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

运行示例程序:

sudo ./dji_sdk_demo_linux_cxx

成功启动后,控制台会显示飞行器序列号及可用命令列表。若看到 gimbal init error,这是 M300 RTK OSDK 接口的正常现象,该接口不支持部分云台控制功能,但不影响数据订阅与相机码流。

常见问题

  1. 串口 CRC 错误:少量警告可忽略。若频繁出现,检查 USB-TTL 线材质量或更换高性能模块。
  2. 连接超时:提示 DjiAccessAdapter_IsUartConnect returnCode=236 时,检查负载端串口设备是否开启,USB-TTL 是否正常。
  3. 无法订阅码流:若示例程序运行但视频窗口不弹出,尝试降低 PSDK 版本至 3.11.0,高版本可能存在兼容性问题。
  4. 模拟飞行测试:飞行控制功能建议通过数据线连接电脑,使用 DJI Assistant 2 (Enterprise Series) 模拟器进行测试。

目录

  1. 树莓派 4B 连接大疆 M300 RTK 无人机开发指南
  2. 1. 硬件准备
  3. 1.1 设备选型
  4. 1.2 硬件连接
  5. 2. 软件环境配置
  6. 2.1 系统依赖安装
  7. 2.2 开启树莓派 USB Gadget 能力
  8. 3. 启动 PSDK
  9. 3.1 配置用户信息
  10. 3.2 配置连接模式
  11. 3.3 修改端口配置
  12. 3.4 编译与运行
  13. 常见问题

更多推荐文章

查看全部
  • 利用 GraphRAG + GLM-4 构建《红楼梦》全文的中文增强检索系统
  • GitNexus 技术解析:基于知识图谱的代码库智能分析
  • OpenClaw 在 CentOS 7 上的快速部署与配置实战
  • 开源 AI 短剧工具:从小说到视频的自动化流水线
  • 基于 Python 与 AI 的智能害虫识别系统实战
  • Fast-GitHub 浏览器扩展使用指南
  • Coze 工作流实战:逻辑控制、数据处理与 AIGC 多媒体应用
  • 基于 SpringBoot 的高校图书馆借阅管理系统设计与实现
  • 技术面试中高质量简历的编写指南与核心要素
  • Git 下载、安装与配置教程
  • 两个月学习大语言模型(LLM)的详细学习计划与实战指南
  • AI+AR智能眼镜年终盘点:巨头入场驱动产业提速,规模化拐点加速来临!
  • Cursor IDE 中 Spring Boot 项目启动内存不足问题解决方案
  • VS Code 远程连接后 GitHub Copilot 无法使用修复方案
  • 基于Python的高校毕业生招聘信息推荐系统设计与实现
  • 2026 年医疗 AI 可信系统全栈实现方案(上)
  • AI 智能体驾驭工程(Harness Engineering)全解析
  • Java 链表基础与 LinkedList 核心原理
  • OpenClaw 多飞书机器人与多 Agent 协作落地记录
  • 前端大数据导出优化:解决 Chrome 内存崩溃的方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

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

  • Mermaid 预览与可视化编辑

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

  • 随机西班牙地址生成器

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

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

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