Ardupilot开源无人机之Geek SDK进展2024-2025

1. 源由

前期搭建《Ardupilot开源无人机之Geek SDK》,主要目的是:

  1. 基于:《ArduPilot开源飞控系统 - 无人车、船、飞机等》
  2. 验证:《Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考》可行性
  3. 框架:打通硬实时、软实时的控制面和数据面链路,提供一个简单、多样、高效的验证平台 jetson-fpv

2. 状态

  • 简单示例

  • 框架成型:jetson-fpv

  • 支持特性:

    • FPV features (FPV功能)

      • MSPOSD for ground station (OSD)
      • video-viewer (视频图像,可以达到120FPS)
      • Adaptive wireless link (链路自适应)
    • Jetson video analysis (Jetson推理功能)

      • detectnet for object detection
      • segnet for segmentation
      • posenet for pose estimation
      • imagenet for image recognition
    • yolo for object detection (YOLO目标检测)

    • Real time video stabilizer

    • DeepStream analysis (DeepStream目标跟踪分析)

      • ByteTrack
      • NvDCF tracker
  • 硬件形态
    在这里插入图片描述在这里插入图片描述

3. TODO

优先级

  • 【0101暂定】3.2 onnxruntime版本 > 3.1 跟踪目标框 > 3.5 Inference性能 > 3.6 特定目标集Training > 3.3 CUDA 11.8版本 > 3.4 pytorch v2.5.1版本
  • 【0109变更】3.3 CUDA 11.8版本 > 3.4 pytorch v2.5.1版本 > 3.2 onnxruntime版本 > 3.1 跟踪目标框 > 3.5 Inference性能 > 3.6 特定目标集Training
  • 【0117变更】目前NVIDIA主要支持L4T36.x(ubuntu22.04),对L4T35.x(ubuntu20.04)支持力度日渐转弱,进度很慢(尽管官方论坛说没有停止支持)。将不连续帧跟踪目标框持续OSD输出的问题尽快提上日程。
 └──> 【完成】3.3 CUDA 11.8版本
     │    └──> 【完成】4.1 CUDA 12.3版本
     └──> 【完成】3.4 pytorch v2.5.1版本
          └──> 【进行中】4.2 TensorRT 8.6
              ├──> 【进行中】3.2 onnxruntime版本
              └──> 【进行中】3.1 跟踪目标框
                  └──> 3.5 Inference性能
                      └──> 3.6 特定目标集Training
  • 【0120变更】鉴于目前NVIDIA闭源,虽然尚未宣布Jetpack5的EOL时间,但是实际在版本支持和研发投入上,已经明显出现乏力(详见:7.3)!而目前来说Super版本似乎从性能上是一个改观,为此我们后续将投入BSP6.2版本,顺便调整优先级,废弃一些闭源升级问题带来的折腾。
 ├──> 【暂停】【任务支线一:升级基础组件版本】
 │   └──> 【完成】3.3 CUDA 11.8版本
 │       │    └──> 【完成】4.1 CUDA 12.3版本
 │       └──> 【完成】3.4 pytorch v2.5.1版本
 │            └──> 【暂停】4.2 TensorRT 8.6
 │                └──> 【暂停】3.2 onnxruntime版本
 └──> 【完成】【任务支线二:升级系统Jetson Orin Nano Super,安装jetson-fpv】
     └──> 【完成】4.3 Jetpack6.2(Jetson Orin Nano Super)
         └──> 【完成】4.4 pytorch + torchvision安装(Jetson Orin Nano Super)
             └──> 【完成】4.5 dsyolo/nvdsinfer/byteTrack安装(Jetson Orin Nano Super)
                 └──> 【完成】4.6 wfb-ng网卡自动侦测
  • 【0128变更】中国年,更新下进展,将升级Super系统,安装脚本任务完成,新开任务。
 └──> 【完成】【任务支线四:采用隔帧提升性能】
         └──> 【完成】3.1 跟踪目标框
             └──> 【完成】3.5 Inference性能
  • 【0208变更】过年期间,进展更新。
 └──> 【完成】【任务支线三:调试每个模块,确保正常工作】
     └──> 【阻塞】4.7 jetson-fpv模块测试(Jetpack6.2)
  • 【0215更新】Jetpack6.2存在很多问题,且开源最新的大部分停留在Jetpack5.x/Jetpack6.1
 └──> 【完成】【任务支线六:调试每个模块,确保正常工作】
      └──> 【完成】4.8 jetson-fpv模块测试(Jetpack6.1)

3.1 【完成】跟踪目标框

已解决NvDCF算法plugin下bbox连续性问题,详见:deepstream: add tiler to fix bbox issue。该版本Tracking bbox在DS7.1/Jetpack6.2上确实是连续的。据反馈6.3/7.1使用NvDCF应该都是连续的。

注:因为NVIDIA的软件栈有较多版本组合,稍有差异可能会出现各种异常问题。关于版本集成测试方面,需要大量的组合测试,耗时费力,不过这个是作为软件公司,产品开发必须过的一关。

3.2 【暂停】onnxruntime版本

通过上面的问题沟通,逐步锁定源头和原因:ARCH对bf16的硬件支持 vs gcc版本问题。

基于Jetpack5.1.4升级gcc11版本
升级CUDA版本11.4.315 到11.8.89
提升3.3 CUDA 11.8任务优先级
需要考虑OpenCV对CUDA的版本依赖问题

3.3 【完成】CUDA 11.8版本

目前,了解到支持的版本状况:CUDA Toolkit Archive

  • Ubuntu 20.04 支持到 CUDA 12.3 (同时支持Ubuntu 22.04)
  • 从CUDA 12.4开始仅支持Ubuntu 22.04

安装deb文件

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/arm64/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-tegra-repo-ubuntu2004-11-8-local_11.8.0-1_arm64.deb
$ sudo dpkg -i cuda-tegra-repo-ubuntu2004-11-8-local_11.8.0-1_arm64.deb

复制CUDA密钥

$ sudo cp /var/cuda-tegra-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/

//more specific
$ sudo cp /var/cuda-tegra-repo-ubuntu2004-11-8-local/cuda-tegra-95320BC3-keyring.gpg /usr/share/keyrings/

安装cuda及其依赖组件

$ sudo apt-get update
$ sudo apt-get -y install cuda

3.4 【完成】pytorch v2.5.1版本 - Jetpack5

pytorch 2.5.1 编译

$ cat ./build.sh
#!/bin/bash

# git clone https://github.com/SnapDragonfly/pytorch.git
# git checkout nvidia_v2.5.1
# git submodule update --init --recursive

export USE_NCCL=0
export USE_DISTRIBUTED=0
export USE_QNNPACK=0
export USE_PYTORCH_QNNPACK=0
export TORCH_CUDA_ARCH_LIST="8.7"
export PYTORCH_BUILD_VERSION=2.5.1
export PYTORCH_BUILD_NUMBER=1
export L4T_BUILD_VERSION=35.6
export USE_PRIORITIZED_TEXT_FOR_LD=1
export USE_FLASH_ATTENTION=0
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

python3 setup.py bdist_wheel

pytorch 2.5.1 二进制安装

$ wget https://github.com/SnapDragonfly/pytorch/releases/download/v2.5.1%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值