Ardupilot开源无人机之Geek SDK 进展2024-2025
- 1. 源由
- 2. 状态
- 3. TODO
- 4. Extra-Work
- 5. 同步工作
- 6. 遗留问题
- 7. 参考资料
- 8. 问题
1. 源由
前期搭建《Ardupilot开源无人机之Geek SDK》,主要目的是:
- 基于:《ArduPilot开源飞控系统 - 无人车、船、飞机等》
- 验证:《Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考》可行性
- 框架:打通硬实时、软实时的控制面和数据面链路,提供一个简单、多样、高效的验证平台 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的软件栈有较多版本组合,稍有差异可能会出现各种异常问题。关于版本集成测试方面,需要大量的组合测试,耗时费力,不过这个是作为软件公司,产品开发必须过的一关。
- 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?
- Python deepstream-test2 substitue from file to H264 RTP source - Perofrmance low
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版本问题。
基于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版本
目前,了解到支持的版本状况: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 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%