Xavier NX(ubuntu20.04)配置大疆无人机payload SDK(PSDK)全流程

硬件配置

  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 面)。

如图. 官方给出的是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)。
  • 检查所有连接是否稳定和正常。

  1. 进行飞行器整机启动,将 E-Port 开发者套件的电源拨码开关打开,检查绿色指示灯是否亮起,并且检查开发板是否正常供电并启动。

  2. 观察显示器,确认开发板是否进入启动页面。

#

软件环境准备

# 1. 安装软件环境

  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 软件包

Payload-SDK 仓库

获取 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_jetsondji_sdk_demo_on_jetson_cxx

cd Payload-SDK/
mkdir cmake-build-debug && cd cmake-build-debug
cmake ../  && make -j8
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值