当前位置: 首页 > article >正文

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

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

  • 1. 源由
  • 2. 状态
  • 3. TODO
    • 3.1 【进行中】跟踪目标框
    • 3.2 【进行中】onnxruntime版本
    • 3.3 【完成】CUDA 11.8版本
    • 3.4 【完成】pytorch v2.5.1版本
    • 3.5 【未开始】Inference性能
    • 3.6 【未开始】特定目标集Training
  • 4. Extra-Work
    • 4.1 【完成】CUDA 12.3版本
    • 4.2 【进行中】TensorRT 8.6
  • 5. 同步工作
  • 6. 参考资料
  • 7. 问题
    • 7.1 风扇启动全速噪音问题
    • 7.2 Jetson Orin Nano Super性能升级

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

3.1 【进行中】跟踪目标框

  • DeepStream-Yolo - How to keep the bounding boxes when interval is NOT zero? #604
  • NVIDIA - How to keep the bounding boxes when interval is NOT zero?

3.2 【进行中】onnxruntime版本

  • Yolov8s no bounding box on default settings #597
  • NVIDIA - Build onnxruntime v1.19.2 for Jetpack 5.1.4 L4T 35.6 Faild
  • microsoft/onnxruntime - Build onnxruntime v1.19.2 for Jetpack 5.1.4 L4T 35.6 Faild #23267
  • [Build] Trying to build on a embedded device that doesn’t support BFLOAT16 #19920
  • mlas: fix build on ARM64 #21099

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

  • arm64: force -mcpu to be valid #21117

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

  • [Build] v1.19.2 abseil_cpp failed: 2 with JP5.1.4 gcc/g++13 #23286
  • Build onnxruntime 1.19.2 fail due to API HardwareCompatibilityLevel

3.3 【完成】CUDA 11.8版本

  • How to install CUDA 11.8 on Jetpack 5.1.4 L4T 35.6?
  • Linux 35.5 + JetPack v5.1.3@CUDA安装和版本切换

目前,了解到支持的版本状况: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版本

  • pytorch v2.5.1 build for nvidia jetson orin nano 8GB #143624
  • Linux 35.6 + JetPack v5.1.4之 pytorch编译
  • Linux 35.6 + JetPack v5.1.4之 pytorch升级
  • Release pytorch-v2.5.1+l4t35.6-cp38-cp38-aarch64

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%2Bl4t35.6-cp38-cp38-aarch64/torch-2.5.1+l4t35.6-cp38-cp38-linux_aarch64.whl
$ sudo pip3 install torch-2.5.1+l4t35.6-cp38-cp38-linux_aarch64.whl

torchvision安装

$ git clone https://github.com/SnapDragonfly/vision.git torchvision
$ cd torchvision
$ git checkout nvidia_v0.20.1
$ export BUILD_VERSION=0.20.1
$ sudo python3 setup.py install --user
$ cd ..

升级JetPack5.1.4 L4T35.6后的版本信息

Software part of jetson-stats 4.2.12 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Orin Nano Developer Kit - Jetpack 5.1.4 [L4T 35.6.0]
NV Power Mode[0]: 15W
Serial Number: [XXX Show with: jetson_release -s XXX]
Hardware:
 - P-Number: p3767-0005
 - Module: NVIDIA Jetson Orin Nano (Developer kit)
Platform:
 - Distribution: Ubuntu 20.04 focal
 - Release: 5.10.216-tegra
jtop:
 - Version: 4.2.12
 - Service: Active
Libraries:
 - CUDA: 11.8.89
 - cuDNN: 8.6.0.166
 - TensorRT: 8.5.2.2
 - VPI: 2.4.8
 - Vulkan: 1.3.204
 - OpenCV: 4.9.0 - with CUDA: YES
DeepStream C/C++ SDK version: 6.3

Python Environment:
Python 3.8.10
    GStreamer:                   YES (1.16.3)
  NVIDIA CUDA:                   YES (ver 11.4, CUFFT CUBLAS FAST_MATH)
        OpenCV version: 4.9.0  CUDA True
          YOLO version: 8.3.33
         Torch version: 2.5.1+l4t35.6
   Torchvision version: 0.20.1a0+3ac97aa
DeepStream SDK version: 1.1.8

3.5 【未开始】Inference性能

  • DeepStream-Yolo - Anyway to boost yolo performance on Jetson Orin? #605
  • NVIDIA - Anyway to boost yolo performance on Jetson Orin?

A: DeepStream-Yolo - INT8 calibration (PTQ)
B: NVIDIA - NvDCF tracker plugin

3.6 【未开始】特定目标集Training

TBD.

4. Extra-Work

4.1 【完成】CUDA 12.3版本

在CUDA 11.8基础上遇到了 Build onnxruntime 1.19.2 fail due to API HardwareCompatibilityLevel问题,貌似API版本不兼容,那么就升到最高支持的12.3尝试下。

$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/sbsa/cuda-ubuntu2004.pin
$ sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/12.3.2/local_installers/cuda-repo-ubuntu2004-12-3-local_12.3.2-545.23.08-1_arm64.deb
$ sudo dpkg -i cuda-repo-ubuntu2004-12-3-local_12.3.2-545.23.08-1_arm64.deb
$ sudo cp /var/cuda-repo-ubuntu2004-12-3-local/cuda-5B67C214-keyring.gpg /usr/share/keyrings/
$ sudo apt-get update
$ sudo apt-get -y install cuda-toolkit-12-3
  • 版本信息
Software part of jetson-stats 4.2.12 - (c) 2024, Raffaello Bonghi
Model: NVIDIA Orin Nano Developer Kit - Jetpack 5.1.4 [L4T 35.6.0]
NV Power Mode[0]: 15W
Serial Number: [XXX Show with: jetson_release -s XXX]
Hardware:
 - P-Number: p3767-0005
 - Module: NVIDIA Jetson Orin Nano (Developer kit)
Platform:
 - Distribution: Ubuntu 20.04 focal
 - Release: 5.10.216-tegra
jtop:
 - Version: 4.2.12
 - Service: Active
Libraries:
 - CUDA: 12.3.107
 - cuDNN: 8.6.0.166
 - TensorRT: 8.5.2.2
 - VPI: 2.4.8
 - Vulkan: 1.3.204
 - OpenCV: 4.9.0 - with CUDA: YES
DeepStream C/C++ SDK version: 6.3

Python Environment:
Python 3.8.10
    GStreamer:                   YES (1.16.3)
  NVIDIA CUDA:                   YES (ver 11.4, CUFFT CUBLAS FAST_MATH)
         OpenCV version: 4.9.0  CUDA True
           YOLO version: 8.3.33
         PYCUDA version: 2024.1.2
          Torch version: 2.5.1+l4t35.6
    Torchvision version: 0.20.1a0+3ac97aa
 DeepStream SDK version: 1.1.8
onnxruntime     version: 1.16.3
onnxruntime-gpu version: 1.18.0

4.2 【进行中】TensorRT 8.6

  • TensorRT 8.6 GA for Ubuntu 20.04 and CUDA 12.0 and 12.1 DEB local repo Package
  • Guide for Upgrading TensorRT
  • How to translate xx/x scripts of TensorRT installation?
  • How to upgrade tensorrt to latest version for Jetpack 5.1.4?

5. 同步工作

  • Open FPV VTX开源之DIY硬件形态

6. 参考资料

【1】Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考
【2】ArduPilot开源飞控之MAVProxy深入研读系列 - 2蜂群链路
【3】Ardupilot开源飞控之FollowMe计划
【4】Ardupilot开源飞控之FollowMe验证平台搭建
【5】Ardupilot开源无人机之Geek SDK讨论
【6】OpenIPC开源FPV之工程框架
【7】OpenIPC开源FPV之重要源码启动配置
【8】wfb-ng 开源代码之Jetson Orin安装
【9】wfb-ng 开源代码之Jetson Orin问题定位
【10】Linux 35.5 + JetPack v5.1.3@CUDA安装和版本切换
【11】Linux 35.6 + JetPack v5.1.4@yolo安装
【12】Linux 35.6 + JetPack v5.1.4@python opencv安装
【13】Linux 35.6 + JetPack v5.1.4@DeepStream安装
【14】Linux 35.6 + JetPack v5.1.4之RTP实时视频Python框架
【15】Linux 35.6 + JetPack v5.1.4之 pytorch编译
【16】Linux 35.6 + JetPack v5.1.4之 pytorch升级
【17】OpenIPC开源FPV之Adaptive-Link工程解析
【18】NVIDIA DeepStream插件之Gst-nvtracker

7. 问题

7.1 风扇启动全速噪音问题

  • Crazy loud noise fan early before NVIDIA logo display
  • How to set fan pwm io low/high in the early boot stage?

7.2 Jetson Orin Nano Super性能升级

Jetson Orin Nano Super DevKit硬件上稍有差异,但是Jetson Orin Nano只要BSP升级到Jetpack6.2 就具备了67 TOPS性能

  • NVIDIA Jetson Orin - Next-level AI performance for next-gen robotics and edge solutions

在这里插入图片描述


http://www.kler.cn/a/509066.html

相关文章:

  • dockerhub上一些镜像
  • 从零开始,掌握Django Web开发
  • 数字小偷:2025年全面防护指南
  • SpringBoot+Vue小区智享物业管理系统(高质量源码,可定制,提供文档,免费部署到本地)
  • 哪些新兴技术对智能驾驶汽车影响最大?
  • Oracle报错ORA-01078、LRM-00109
  • LabVIEW 蔬菜精密播种监测系统
  • 数据分析的新利器-微软开源的GraphRAG
  • 搭建Hadoop源代码阅读环境
  • vscode项目依赖问题
  • 网络编程 | UDP广播通信
  • 渗透测试之越权漏洞详解 水平越权 垂直越权 目录越权 SQL跨库查询越权 以及未授权漏洞 一篇文章说明白
  • 2024春秋杯密码题第一、二天WP
  • HTML学习笔记(5)
  • Java日志配置
  • 蓝桥杯 连续奇数和问题解析
  • 支持向量机算法(三):非线性支持向量原理层层拆解,精读公式每一处细节
  • JavaScript 代码规范
  • MarsCode青训营打卡Day5(2025年1月18日)|稀土掘金-148.小A的子数组权值、304.计算特定条件下的四元组数量
  • 1.6 从 GPT-1 到 GPT-3.5:一路的风云变幻
  • 蓝桥杯算法日常|枚举[*找到最多的数]
  • ASP.NET Core 中的 JWT 鉴权实现
  • recat与vue相比有什么优缺点
  • Titans 架构中的记忆整合:Memory as a Context;Gated Memory;Memory as a Layer
  • 用 Rust 写下第一个 “Hello, World!”
  • 2024年AI与大数据技术趋势洞察:跨领域创新与社会变革