跳到主要内容
极客日志极客日志面向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/7/2447 浏览
树莓派 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. 常见问题
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 前端国际化最佳实践与实现方案
  • 前端通用 AI Rules 规范:适配 Cursor、Trae 等主流 AI 工具
  • 常见 AI 模型与编程术语美式发音速查表
  • AIGC 产品经理定义、核心职责及与 AI 产品经理的区别解析
  • KWDB 3.1.0 进阶实战:千万级时序写入、监控与运维
  • 基于 GLM-4.6 与 Trae 的 AI 面试教练系统设计与实现
  • LLaMaFactory 基于免费 GPU 环境微调大模型教程
  • StarRocks 与 MySQL 深度对比:架构、性能与选型
  • Linux 环境下编译 Kotaemon 源码:C#与 C++混合开发指南
  • AI 辅助 PCB 设计:效率革命与工程师角色重塑
  • IROS 2025 无人机与集群学习控制论文精选
  • 仿生学突破:SILD 模型如何实现无人机电力线避障检测
  • 小需求设计:如何用 Redis 实现协议勾选状态管理
  • C++ 异常机制详解
  • AI 工具泛滥时代,为何能力越来越不值钱?
  • 深入理解 Linux 软链接与硬链接
  • Java IO 流:核心原理与实战应用
  • Stable Diffusion 模型版本演进与核心差异解析
  • 前端新手必备的 10 个 VS Code 插件及配置指南
  • C++ 输入输出详解(上):基础流与格式控制

相关免费在线工具

  • 加密/解密文本

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