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

如图. 官方给出的是Jetson Nano 示意图与图. Jetson Nano 开发板连接所示,将 E-Port 开发者套件连接到 Jetson Nano 开发板
- 通过杜邦线连接 E-Port 开发者套件的 UART(标识 5)引脚连接 USB 转 TTL 串口模块(开发者套件 TX、RX、GND 分别连接串口模块的 RX、TX、GND)。
- 将 USB 转 TTL 串口模块连接到 Jetson Nano 开发板的 USB 口(标识 a)。
- 将 E-Port 开发者套件的 USB 主从切换拨码开关(标识 3)拨到 Host 状态。
- 将 E-Port 开发者套件的 USB (标识 6)通过 USB-C OTG 转接线和 Micro USB 线连接到开发板的 Micro USB OTG 口(标识 b)。
- 连接 E-Port 开发者套件的 PPS 引脚(标识 5)到开发板 40pins GPIO 的引脚 7(标识 f),可以查阅引脚介绍
- 。本连接步骤仅用于时间同步,不需要时间同步则本步骤可以忽略。
- 通过 XT30 转 DC 供电线,连接 E-Port 开发者套件的电源输出接口(标识 4,可选 12V/2A、5V/2A) 到开发板的 DC 电源接口(标识 c,按需选择是否使用外部电源供电)。
- 将开发板的 HDMI 显示输出(标识 d)接入到高清显示器,并且接入键盘鼠标到开发板的 USB 口(标识 a),接入无线网卡或者具备网络能力的有线网口到开发板网口(标识 e)。
- 检查所有连接是否稳定和正常。


-
进行飞行器整机启动,将 E-Port 开发者套件的电源拨码开关打开,检查绿色指示灯是否亮起,并且检查开发板是否正常供电并启动。
-
观察显示器,确认开发板是否进入启动页面。
#
软件环境准备
# 1. 安装软件环境
-
Jeston 开发套件默认不包含 SD 卡和系统镜像,请参考英伟达官方烧录指导
-
进行镜像烧录和账户配置。
-
完成硬件环境准备并启动完成后,我们首先输入您配置的账号密码,检查是否可以登录进入 Ubuntu 桌面系统。
-
进入桌面后,您可以通过浏览器访问网页检查 Jeston Nano 开发网络环境是否正常。
-
在运行 PSDK 之前,需要您参考如下 shell 命令,安装以下的依赖库,并检查是否安装成功。
- FFmpeg
- ffplay
- OpenCV
- libaio
- CMake
- libusb
/* 更新软件仓库 */ sudo apt-get update sudo apt-get upgrade sudo apt-get install automake sudo apt-get install libaio-dev /* 从 https://opus-codec.org/ 上下载 opus-1.3.1 源码,并进行安装 */ tar -xzvf opus-1.3.1.tar.gz cd opus-1.3.1/ autoreconf -f -i ./configure make -j16 sudo make install /* 从 GitHub 下载并安装 FFmpeg 4.3 源码 ,如果make权限不够显示错误,就sudo make install*/ tar -zxvf ffmpeg-4.3.2.tar.gz ./configure --enable-shared make && make install /* 检查 OpenCV 是否安装 */ opencv_version /* 这里鉴于是arm架构可能不能显示可以采用如下检验 */ pkg-config --modversion opencv4 # 输出OpenCV版本(如4.6.0) /* 安装 libusb */ sudo apt-get install libusb-1.0-0-dev
#2. 开启 Jetson Nano 的 USB bulk 功能
PSDK提供Jetson nano的 usb bulk 配置文件
,包括配置脚本(psdk-usb-configure.sh)和配置程序(startup_bulk)。
备份原配置:
bash
# 找到实际路径后备份(如),这个东西路径你在主机里搜索就行,l4t-usb肯定能搜到
sudo cp /usr/local/bin/l4t-usb-device-mode-start.sh ~/nx-usb-bk.sh
替换大疆脚本:
bash
sudo cp 大疆提供的/psdk-usb-configure.sh /usr/local/bin/l4t-usb-device-mode-start.sh
sudo chmod +x /usr/local/bin/l4t-usb-device-mode-start.sh
修改脚本内路径:
编辑psdk-usb-configure.sh,将 Nano 的/dev/usb-ffs/替换为 Xavier NX 的实际设备路径(通过ls /dev/bus/usb/确认)。
启动验证:
bash
# 手动启动测试
/home/dji/startup_bulk/startup_bulk $(ls /dev/usb-ffs/bulk* | head -n 1) &
ps -aux | grep startup_bulk # 确认进程存在
lsusb -v | grep "大疆设备描述" # 确认Bulk设备枚举
自启动配置:
bash
sudo nano /etc/rc.local
# 在exit 0前添加:
/home/dji/startup_bulk/startup_bulk /dev/usb-ffs/bulk1 &
# 3. 注册 PSDK 开发者账号
您可以在大疆开发者网站
上进行注册,申请成为 PSDK 开发者。
# 4. 下载 PSDK 软件包
获取 PSDK 最新的软件开发包,最新代码在 master 分支上。
5. 修改必要的配置代码
您需要通过开发者用户中心,创建应用后将生成的 PSDK 应用信息,填入前一步获取的 PSDK 软件开发包的指定文件中,否则 PSDK 将无法正常运行。
- samples/sample_c/platform/linux/nvidia_jetson/application/dji_sdk_app_info.h
- samples/sample_c++/platform/linux/nvidia_jetson/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 "MyDronePayload" // 自定义应用名
#define USER_APP_ID "12345678" // 平台生成的App ID
#define USER_APP_KEY "abcdef123456" // 平台生成的App Key
#define USER_APP_LICENSE "DJI_SDK_FREE" // 免费License(示例)
#define USER_DEVELOPER_ACCOUNT "developer@example.com" // 注册邮箱
#define USER_BAUD_RATE "115200" // 若硬件串口为115200波特率
根据当前飞行器与 Jetson Nano 开发板的硬件连接方式,你需要对 PSDK 的硬件连接配置文件进行对应的修改。
- samples/sample_c/platform/linux/nvidia_jetson/application/dji_sdk_config.h
- samples/sample_c++/platform/linux/nvidia_jetson/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.这里推荐选(2),网络链接
* */
#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_NETWORK_DEVICE
如果您使用的连接方式是DJI_USE_UART_AND_NETWORK_DEVICE,您需要在以下配置文件中对当前使用的网卡设备名称和VID、PID进行配置。
- samples/sample_c/platform/linux/nvidia_jetson/hal/dji_network.h
- samples/sample_c++/platform/linux/nvidia_jetson/hal/dji_network.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/nvidia_jetson/hal/hal_usb_bulk.h
- samples/sample_c++/platform/linux/nvidia_jetson/hal/hal_usb_bulk.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_jetson 和 dji_sdk_demo_on_jetson_cxx
cd Payload-SDK/
mkdir cmake-build-debug && cd cmake-build-debug
cmake ../ && make -j8
1万+






