使用树莓派开发套件

2024-10-15
暂无评分

简介

E-Port 开发者套件用于将飞行器的 E-Port 接口转换成多种标准硬件接口,方便开发者进行硬件设备连接和 SDK 开发调试。E-Port 开发者套件支持的飞行器机型与适配的机身接口,请阅读表. 标准硬件接口与开发套件open in new window

本示例将基于 M350 RTK 飞行器、E-Port 开发者套件和树莓派 4B 开发者套件,介绍从硬件连接、软件环境配置、获取开发包和编译运行等一系列的开发步骤,帮助您快速上手 Payload SDK (后称 PSDK) 的开发。本示例在 PSDK 支持的飞行器机型上没有差异。

基础知识介绍

如下是本篇教程需要使用的硬件设备介绍,建议您在查看后续内容前进行相关阅读。

硬件环境准备

1. 准备硬件设备

硬件个数用途
树莓派 4B 开发套件1PSDK 的运行平台
高清显示器(HDMI 接口)1用于开发板 Ubuntu 系统的界面显示
键盘 + 鼠标1用于开发板 Ubuntu 系统的人机交互
网线1用于开发板访问网络资源
E-Port 开发者套件1用于连接开发板和飞行器
M350 RTK 飞行器 + 配套产品(遥控器+电池+负载+充电箱)1应用开发硬件平台
笔记本电脑/台式 PC1用于连接飞行器/负载进行升级以及模拟器
USB 转 TTL 串口模块1用于连接开发板和 E-Port 开发者套件
USB-C USB 连接线2用于连接飞行器/负载进行升级以及模拟器
USB-C OTG 转接线1用于连接开发板和 E-Port 开发者套件
2.54mm 杜邦线若干用于连接开发板和 E-Port 开发者套件

2. 硬件连接

  1. 准备一台高清显示器、一套键盘鼠标和宽敞的桌面环境。
  2. 准备一套 M350 RTK 飞行器环境,安装电池后将飞行器摆放到桌面上合适的位置。
  3. 如果需要执行飞行控制,使用笔记本或者台式 PC 通过 USB-C 连接线连接飞行器的调参口(调参口为下图中 E-Port 接口旁的 USB-C 接口)。
  4. 如图. 飞行器设备连接所示,准备 E-Port 开发者套件并连接到飞行器。
    • 检查并确认 E-Port 开发者套件的电源拨码开关(标识 7)处于 OFF 状态。
    • 将 E-Port 开发者套件中的 USB 口(标识 2)通过同轴线连接到飞行器的 E-Port 接口(需要注意 A/B 面)。

图. 飞行器设备连接

  1. 如图. 树莓派 4B 示意图与图. 树莓派 4B 开发板连接所示,将 E-Port 开发者套件连接到 树莓派 4B 开发板,开发板 40pins GPIO 的引脚介绍请参考引脚介绍open in new window
    • 通过杜邦线连接 E-Port 开发板的 UART(标识 5)引脚到 USB 转 TTL 串口模块(开发者套件 TX、RX、GND 分别连接串口模块的 RX、TX、GND)。
    • 将 USB 转 TTL 串口模块连接到 树莓派 4B 开发板的 USB 3.0 接口(标识 f)。
    • 将 E-Port 开发板的 USB 主从切换拨码开关(标识 3)拨到 Host 状态。
    • 将 E-Port 开发板的 USB(标识 6)通过 USB-C OTG 转接线和 USB-C USB 线连接到开发板的 Type-C 接口(标识 a)。
    • 连接 E-Port 开发者套件的 PPS 引脚(标识 5)到开发板 40pins GPIO 的引脚 7(标识 h),可以查阅引脚介绍open in new window。本连接步骤仅用于时间同步,不需要时间同步则本步骤可以忽略。
    • 将开发板的 micro HDMI 显示输出(标识 b 或 c)接入到高清显示器,并且接入键盘鼠标到开发板的 USB 口(标识 e),连接 WIFI 或接入具备网络能力的有线网口到开发板(标识 g)。
    • 检查所有连接是否稳定和正常。

图. 树莓派 4B 示意图



图. 树莓派 4B 开发板连接

  1. 进行飞行器整机启动,将 E-Port 开发板的电源拨码开关打开,检查绿色指示灯是否亮起,并且检查开发板是否正常供电并启动。
  2. 观察显示器,确认开发板是否进入启动页面。

软件环境准备

1. 安装软件环境

  1. 树莓派 4B 开发套件默认不包含 SD 卡和 Raspberry Pi OS 64 位系统镜像,请参考树莓派烧录指导open in new window 进行镜像烧录和账户配置。
  2. 完成硬件环境准备并启动完成后,我们首先输入您配置的账号密码,检查是否可以登录进入 Raspberry Pi 桌面系统。
  3. 进入桌面后,您可以通过浏览器访问网页检查 树莓派 4B 开发网络环境是否正常。
  4. 在运行 PSDK 之前,需要您参考如下 shell 命令,安装以下的依赖库,并检查是否安装成功。
    • FFmpeg
    • FFplay
    • OpenCV
    • libaio
    • CMake
    • libusb
    /* Update software repository */
    sudo apt-get update
    sudo apt-get upgrade
    
     /* Install libaio */
    sudo apt-get install automake
    sudo apt-get install libaio-dev
    
    /* Download opus-1.3.1 source code from https://opus-codec.org/ and install it */
    tar -xzvf opus-1.3.1.tar.gz
    cd opus-1.3.1/
    autoreconf -f -i
    ./configure
     make -j4 && sudo make install
    
    /* Download ffmpeg 4.3 source code from github and install it */
    tar -zxvf ffmpeg-4.3.2.tar.gz
    ./configure --enable-shared
    make -j4
    sudo make install
    
    /* Download opecv 3.4.15 source code from https://opencv.org/releases/ and install it */
    unzip opencv-3.4.15.zip
    cd opencv-3.4.15/
    mkdir build && cd build/
    cmake ../
    make -j4 && sudo make install
    /* Check opencv version*/
    opencv_version
    
    /* Install libusb */
    sudo apt-get install libusb-1.0-0-dev
    

2. 开启树莓派 4B 的 USB bulk 功能

您可以参考树莓派 bulk 端点配置指导open in new window开启树莓派 4B 的 USB bulk 功能。

3. 注册 PSDK 开发者账号

您可以在大疆开发者网站open in new window上进行注册,申请成为 PSDK 开发者。

4. 下载 PSDK 软件包

Payload-SDK 仓库open in new window获取 PSDK 最新的软件开发包,最新代码在 master 分支上。

5. 修改必要的配置代码

注意:此代码示例与 Nvidia Jetson Nano 相同,请直接参考 PSDK GitHub 仓库中 nvidia_jetson 路径下的代码

您需要通过开发者用户中心,创建应用后将生成的 PSDK 应用信息,填入前一步获取的 PSDK 软件开发包的指定文件中,否则 PSDK 将无法正常运行。

  • samples/sample_c/platform/linux/manifold2/application/dji_sdk_app_info.h
  • samples/sample_c++/platform/linux/manifold2/application/dji_sdk_app_info.h
/* Exported constants --------------------------------------------------------*/
// ATTENTION: User must goto https://developer.dji.com/user/apps/#all to create your own dji sdk application, get dji sdk application
// information then fill in the application information here.
#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      "your_developer_account"
#define USER_BAUD_RATE              "460800"

根据当前飞行器与树莓派 4B 开发板的硬件连接方式,你需要对 PSDK 的硬件连接配置文件进行对应的修改,下为 PSDK 软件开发包的指定文件。

  • samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h
  • samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.h
#define DJI_USE_ONLY_UART                  (0)
#define DJI_USE_UART_AND_USB_BULK_DEVICE   (1)
#define DJI_USE_UART_AND_NETWORK_DEVICE    (2)

/*!< Attention: Select your hardware connection mode here.
* */
#define CONFIG_HARDWARE_CONNECTION         DJI_USE_UART_AND_NETWORK_DEVICE

如果您使用的连接方式是DJI_USE_UART_AND_NETWORK_DEVICE,您需要在以下配置文件中对当前使用的网卡设备名称和VID、PID进行配置。

  • samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h
  • samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.h
/** @attention  User can config network card name here, if your device is not MF2C/G, please comment below and add your
 * NIC name micro define as #define 'LINUX_NETWORK_DEV   "your NIC name"'.
 */
#ifdef PLATFORM_ARCH_x86_64
#define LINUX_NETWORK_DEV           "enxf8e43b7bbc2c"
#else
#define LINUX_NETWORK_DEV           "l4tbr0"
#endif
/**
 * @attention
 */

#ifdef PLATFORM_ARCH_x86_64
#define USB_NET_ADAPTER_VID                   (0x0B95)
#define USB_NET_ADAPTER_PID                   (0x1790)
#else
#define USB_NET_ADAPTER_VID                   (0x0955)
#define USB_NET_ADAPTER_PID                   (0x7020)
#endif

如果您使用的连接方式是DJI_USE_UART_AND_USB_BULK_DEVICE,您需要在以下配置文件中对当前使用的USB bulk端点进行配置。

  • samples/sample_c/platform/linux/manifold2/application/dji_sdk_config.h
  • samples/sample_c++/platform/linux/manifold2/application/dji_sdk_config.h
#define LINUX_USB_BULK1_EP_OUT_FD               "/dev/usb-ffs/bulk1/ep1"
#define LINUX_USB_BULK1_EP_IN_FD                "/dev/usb-ffs/bulk1/ep2"

#define LINUX_USB_BULK1_INTERFACE_NUM           (2)
#define LINUX_USB_BULK1_END_POINT_IN            (0x83)
#define LINUX_USB_BULK1_END_POINT_OUT           (2)

#define LINUX_USB_BULK2_EP_OUT_FD               "/dev/usb-ffs/bulk2/ep1"
#define LINUX_USB_BULK2_EP_IN_FD                "/dev/usb-ffs/bulk2/ep2"

#define LINUX_USB_BULK2_INTERFACE_NUM           (3)
#define LINUX_USB_BULK2_END_POINT_IN            (0x84)
#define LINUX_USB_BULK2_END_POINT_OUT           (3)

#ifdef PLATFORM_ARCH_x86_64
#define LINUX_USB_VID                         (0x0B95)
#define LINUX_USB_PID                         (0x1790)
#else
#define LINUX_USB_VID                         (0x0955)
#define LINUX_USB_PID                         (0x7020)
#endif

6. 编译与运行

PSDK 软件包支持 CMake 编译,您可以通过 cmake 命令进行编译,生成可执行文件,运行如下示例代码后,build/ 目录下将会生成可执行文件dji_sdk_demo_on_jetsondji_sdk_demo_on_jetson_cxx。树莓派开发套件可以使用用于 Jetson Nano 开发套件的可执行文件。

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

Sample 介绍与体验

PSDK 提供了丰富的功能 Sample 和接口支持,可以满足行业各种场景下的二次开发需求。下面将带您体验 PSDK 的几个典型功能,帮助您快速上手 PSDK 开发。

1. Sample:自定义控件功能体验

PSDK 支持自定义控件功能open in new window,如下 Sample 将演示如何使用 API 接口,Pilot 上会显示预设的自定义控件 UI。

运行可执行文件 dji_sdk_demo_on_jetson_cxx

  • 输入 g 来选择 Sample - Start widget all features sample,即可开启自定义控件功能。
  • 输入 h 来选择 Sample - Start widget speaker sample,即可开启喊话器功能。

自定义控件和喊话器控件,将会在遥控器上安装的 Pilot 上显示,你可以在 Pilot 上对这些控件进行操作。

图. 自定义控件功能 Sample 结果

图. 喊话器控件

2. Sample:信息管理、飞行控制功能体验

PSDK 支持 信息管理功能open in new window飞行控制功能open in new window,如下 Sample 将演示如何使用 API 接口,订阅到 M350 RTK 飞行器遥感数据和控制飞行器运动。

  • 输入 0 来选择 Sample - Fc subscribe sample,即可开启数据订阅功能。
  • 在体验飞行控制功能之前,你需要将飞行器连接到 PC 端的 DJI Assistant 2 ,然后在 DJI Assistant 2 中打开模拟器,准备完成后,你可以顺序输入 1 - 6 来体验飞行控制功能。

图. 信息管理 Sample 结果

3. Sample:相机管理、云台管理功能体验

PSDK 支持相机管理功能open in new window云台管理功能open in new window,如下 Sample 将演示如何使用 API 接口,控制相机拍照和云台旋转。不同的相机机型对相机管理功能的支持情况请查阅基础相机管理open in new window中的相机支持功能差异概览表格

  • 输入 k 来选择 Sample - Run camera manager sample,即可体验相机管理功能。
  • 输入 a 来选择 Sample - Gimbal manager sample,即可体验云台管理功能。

图. 相机功能列表

图. 相机管理 Sample - [11] Record video

图. 云台功能列表

4. Sample:订阅相机码流功能体验

PSDK 支持获取相机码流功能open in new window,如下 Sample 将演示如何使用 API 接口,订阅到 M350 RTK FPV 和主相机的码流。

  • 输入 c 来选择 Sample - Camera stream view sample,即可体验订阅相机码流和FPV码流的功能。

图. 获取相机码流

图. 主相机视角

图. FPV 视角

FAQ

常见问题汇总?

  1. 运行PSDK报如下错误:
Can't operation the device. Probably the device has not operation permission. Please execute command 'sudo chmod 777 /dev/ttyUSB0' to add permission.

解决方法: 执行 sudo chmod 777 /dev/ttyUSB0

  1. 运行PSDK报如下错误:
Please fill in correct user information to 'samples/sample_c/platform/linux/nvidia_jetson/application/dji_sdk_app_info.h' file. 

解决方法:请在开发者网站上注册帐号,并将帐号信息填入文件 dji_sdk_app_info.h

  1. 运行PSDK报如下错误:
ls: cannot access '/dev/ttyUSB0': No such file or directory

解决办法:检查串口是否正确连接

其他问题

请通过阅读技术文档open in new window、阅读 PSDK 知识库open in new window、浏览论坛open in new window提交工单open in new window寻求技术支持等方式解决。

若您对文档有意见或疑惑,点击可快速反馈,我们会与您联系。