跳到主要内容
极客日志极客日志面向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/10/26111 浏览
树莓派 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. 常见问题

更多推荐文章

查看全部
  • 2023-2024 年 Python 主要发展趋势与应用领域分析
  • 高鋒集團合夥人黃俊瑯:以資本與生態賦能傳統企業 Web3 轉型
  • DataX Web 分布式数据同步平台部署与实战
  • 使用 Docker 部署 OpenClaw 实践
  • JVM 垃圾回收核心:对象死亡判断的底层逻辑
  • 基于 Coze 构建小红书视频抓取并同步飞书多维表的智能体工作流
  • Python pip 国内镜像源配置指南:清华、阿里云等常用源设置
  • GitHub Copilot AI 编程助手安装与使用指南
  • 使用 Python 和强化学习训练 MOBA 游戏 AI 原理
  • 基于 Docker 部署 Ollama 及 Open-WebUI 完整教程
  • SQL Join 实战:WHERE 与 ON 条件的性能差异解析
  • OpenClaw 接入飞书机器人与 Ollama 本地大模型实战
  • 提示词的进化之路:从框架表达到压缩表达
  • 企业应用探秘:大模型 AI Agent 的六种基础类型
  • CarelessWhisper:将非因果 Whisper 改造为低延迟流式模型
  • C++ 从零实现高质量随机数生成器
  • 基于 Flux 模型的本地 AI 绘画部署与使用指南
  • Streamlit 实战指南:用 Python 快速构建交互式 Web 应用
  • Python Flask HTTP 微服务开发实战
  • AI 驱动代码审查与错误检测工具深度评测

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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