大疆无人机使用eport连接Jetson主板实现目标检测

大疆无人机使用eport连接Jetson主板实现目标检测

所需硬件设备如下:

在这里插入图片描述

实现原理:

  1. 视频流获取:从大疆无人机获取实时视频流。
  2. 数据传输:将视频流传输至 Jetson 平台。
  3. 目标检测处理:在 Jetson 上运行目标检测算法对传入的视频帧进行分析

EPort开发套件

大疆官网给出了 M350 RTK 飞行器与 EPort 连接的教程:
https://developer.dji.com/doc/payload-sdk-tutorial/cn/quick-start/quick-guide/jetson-nano.html

在这里插入图片描述

无人机与Eport连接图:

在这里插入图片描述

Jetson开发板

  • USB 转 TTL 串口模块: 此模块通常用于低级别的硬件调试和通信。在这个上下文中,它可能被用来与 E-Port开发者套件建立串行通信链路,以便发送命令或接收来自负载的数据
  • USB-C USB 连接线: 用于连接飞行器的调参接口,这允许用户对飞行器及其负载进行固件升级或者通过PC上的模拟器来进行测试。
  • Micro USB 连接线: 可能用于连接 Jetson Nano 和 E-Port 开发者套件,以实现数据传输或其他形式的通信。
  • USB-C OTG 转接线: OTG(On-The-Go)转接线可以让 Jetson Nano充当主机角色,从而连接其他USB设备。在这种情况下,它可能用于增强Jetson Nano与其他硬件组件之间的兼容性。
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

允许root用户登录

首先为 root 用户设置密码:

sudo passwd root 

随后使用设置 root 可使用 ssh 登录

sudo vim /etc/ssh/sshd_config 

在文件中找到这句代码:

#PermitRootLogin prohibit-password

将其改为:

PermitRootLogin yes 

随后重启ssh连接服务

sudo systemctl restart sshd 

更新软件库

sudo apt-get update sudo apt-get upgrade sudo apt-get install automake sudo apt-get install libaio-dev 

Opus安装

Opus 是一种开源的的音频编解码器,设计用于实时语音传输
首先下载opus的安装包,可以直接采用apt安装(推荐):

sudoapt-getinstall libopus-dev 

当然,也可以考虑使用源码文件安装,不用太纠结于版本,使用最新版即可:

https://github.com/xiph/opus/releases/tag/v1.5.2

在这里插入图片描述
#解压文件tar-xzvf opus-1.5.1.tar.gz cd opus-1.3.1/ autoreconf -f-i ./configure make-j16sudomakeinstall

检查是否安装成功,这里采用的是apt安装,其默认版本是1.3.1

 pkg-config --modversion opus 
在这里插入图片描述

FFmpeg安装

FFmpeg 是一个强大的开源音视频处理工具集,可以用来:
转换音视频格式(如 MP4 → AVIMP3 → WAV
剪辑、合并、分割视频
提取音频或封面图
实时推流(RTMPHLS),这里推荐使用apt安装

sudo apt-get install ffmpeg 

如果不行,可以采用源码安装

tar -zxvf ffmpeg-4.3.2.tar.gz ./configure --enable-shared make && make install 

使用如下命令检验是否安装成功

# 安装完成后检查 ffmpeg 是否安装  ffmpeg -version 
在这里插入图片描述

OpenCV、CUDA、cudNN配置

这里需要注意的是OpenCV的版本一定要在4.9以上,好吧,请直接从git上下载源码,安装的是4.13版本,亲测有效,4.94.11版本均不可用
git clone https://github.com/opencv/opencv.git

详情参照博主这篇博文:https://blog.ZEEKLOG.net/pengxiang1998/article/details/149073838

Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类

在这里插入图片描述

这里Jetpack的版本找不到了,但其实并不影响,只会报一个warning而已

在这里插入图片描述

安装USB配置文件

libusb-1.0-0-dev 提供了在 Linux 上直接与 USB 设备进行通信所需的开发文件,通过这个包可以实现与 USB 设备通信

sudo apt-get install libusb-1.0-0-dev 

检查内核模块

使用如下命令即可:

# 确保usb gadget和usb转串⼝的驱动都装了# 检查 USB Gadget 相关模块  lsmod | grep usb 
在这里插入图片描述
USB Gadget 相关:通常会显⽰ libcomposite 等模块(这是 USB Gadget 功能的核⼼依赖)。USB 转串⼝相关:常⻅的模块包括: usbserial:通⽤ USB 转串⼝驱动框架
ftdi_sio:FTDI 芯片的驱动
pl2303:Prolific PL2303 芯片的驱动
cp210x:Silicon Labs CP210x 芯片的驱动
ch341:沁恒
CH340/CH341 芯片的驱动usb 转串⼝对应的设备是/dev/ttyUSB0

源码下载

将源码下载到如下地址,并将其解压,得到文件如下:

在这里插入图片描述

设置开机自启服务

设置开机自启服务:这是为了让无人机启动后既可以自动执行我们的导线追踪算法

切换到/home/laiease/Payload-SDK-master/目录下,使用root 权限将service文件安装到/etc/systemd/system⽬录下 :

sudomv djixunxian.service /etc/systemd/system/ 
在这里插入图片描述

随后切换到/home/laiease/Payload-SDK-master/jetson-usb/,然后将如下服务文件也移动到对应位置

在这里插入图片描述
sudomv jetsongadget.service /etc/systemd/system/ 

将对应的服务文件放置到系统路径下后,需要让 systemd “知道”有新的或更改的服务存在:

新建了一个服务(如 djixunxian.service)
修改了某个服务的配置文件(比如路径、启动命令、环境变量等)
# 重新加载systemd 其会让systemd 重新加载所有的服务单元配置文件(比如 .service 文件)sudo systemctl daemon-reload 

随后执行以下几个步骤进行设置自启:

# 允许两个服务开机⾃启  sudo systemctl enable djixunxian.service 

djixunxian.service 已成功启用开机自启

在这里插入图片描述
sudo systemctl enable jetsongadget.service 

jetsongadget.service 已成功启用开机自启

在这里插入图片描述
# 启动两个服务  sudo systemctl start jetsongadget.service sudo systemctl start djixunxian.service 

启动完成效果如下:

在这里插入图片描述

编译startup_bulk

切换到 jetson-usb 路径

cd /home/laiease/Payload-SDK-master/jetson-usb make 

效果如下:

在这里插入图片描述

项目编译

cd ./Payload-SDK-master mkdir build cd build make -j4 

重启服务,要先启动jetsongadget,然后再启动djixunxian

systemctl restart jetsongadget 
systemctl restart djixunxian 

检查服务状态

systemctl status djixunxian 

当然,也可以使用 journalctl | grep -i dji 查看状态:

推流正常:

在这里插入图片描述


推理正常:

在这里插入图片描述

推理效果如下:

在这里插入图片描述

报错处理

在启动服务时报错:

Process: 11087 ExecStart=/home/laiease/Payload-SDK-master/build/bin/dji_sdk_demo_linux_cxx (code=dumped, signal=ABRT) Main PID: 11087 (code=dumped, signal=ABRT)
在这里插入图片描述

这是由于USB_bulnk找不到导致的,当出现找不到USB0

首先检查USB转串口线是否正常接入:如果有这个,说明正常接入了

在这里插入图片描述

然后,使用 dmesg | tail -30 查看日志信息,当出现如下错误时:

[ 437.462906] ch34x 1-2.1:1.0: ch34x converter detected [ 437.468035] usb 1-2.1: ch34x converter now attached to ttyUSB0 [ 437.544924] usb 1-2.1: usbfs: interface 0 claimed by ch34x while 'brltty' sets config #1 [ 437.547686] ch34x ttyUSB0: ch34x converter now disconnected from ttyUSB0 

这说明
此时,CH340 设备插入,ch34x 驱动识别成功,创建了 /dev/ttyUSB0
但另一个服务 brltty(盲文终端支持)立即抢占了这个设备
❌ 导致 ch34x 驱动被强制断开,/dev/ttyUSB0 被销毁

解决方案:
停止并禁用 brltty

sudo systemctl stop brltty-udev.service sudo systemctl disable brltty-udev.service sudo systemctl mask brltty-udev.service 

随后卸载 brltty 模块

sudo modprobe -r brltty 

重新插拔 CH340 设备
拔掉 USB,等 2 秒,再插回去。
此时,再次执行如下命令

ls /dev/ttyUSB*

此时,应该就能够查看到ttyUSB0,如果还是看不到的话,可以尝试下载CH340驱动

git clone https://github.com/juliagoda/CH341SER.git 

随后切换到CH41SER目录

然后执行make命令

在这里插入图片描述
ls/dev/ttyUSB* 
在这里插入图片描述

完整的执行过程:

在这里插入图片描述

此时USB bulk便可以了

Read more

如何轻松分析大疆无人机信号?DJI DroneID 信号解析工具全指南

如何轻松分析大疆无人机信号?DJI DroneID 信号解析工具全指南 🛸 【免费下载链接】dji_droneid 项目地址: https://gitcode.com/gh_mirrors/dj/dji_droneid DJI DroneID 信号分析项目(dji_droneid)是一个开源工具集,专为无人机爱好者和研究人员设计,通过软件定义无线电(SDR)技术捕获、解码和分析大疆无人机发射的DroneID信号。该项目提供完整的信号处理流程,从原始IQ数据捕获到最终数据帧解析,支持Octave和MATLAB环境运行,帮助用户深入理解无人机通信机制。 📌 项目核心功能与技术架构 🔍 信号捕获与处理全流程 项目实现了从射频信号到数据帧的完整解析链路,主要包括: * 原始信号采集:支持32位浮点IQ数据文件输入(需配合SDR设备录制) * ZC序列检测:通过归一化互相关算法定位信号中的Zadoff-Chu序列 * 频率校正:自动检测并补偿信号中的频率偏移 * OFDM符号提取:精准提取9个OFDM符号(含2个ZC序列符号) * 相位校正与均衡:解决无线信道引入的

Flutter 三方库 shelf_modular 的鸿蒙化适配指南 - 掌控服务器路由资产、精密模块治理实战、鸿蒙级服务端专家

Flutter 三方库 shelf_modular 的鸿蒙化适配指南 - 掌控服务器路由资产、精密模块治理实战、鸿蒙级服务端专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 shelf_modular 的鸿蒙化适配指南 - 掌控服务器路由资产、精密模块治理实战、鸿蒙级服务端专家 在鸿蒙跨平台应用执行高级服务端管理与多维 Shelf 路由资产指控(如构建一个支持全场景秒级交互的鸿蒙大型全量后端服务中枢、处理海量 API Route Payloads 的语义认领或是实现一个具备极致指控能力的资产管理后台路由审计中心)时,如果仅仅依赖官方的基础 Shelf 处理器或者是极其繁琐的手动路由映射,极易在处理“由于模块嵌套导致的资产认领偏移”、“高频服务请求下的认领假死”或“由于多语言环境导致的符号解析冲突死结”时陷入研发代码服务端逻辑崩溃死循环。如果你追求的是一种完全对齐现代模块化标准、支持全量高度可定制路由(Modular-driven Backend)且具备极致指控确定性的方案。今天我们要深度解析的 shelf_modular——一个专注于解决“服务端资产标准化认领与模块化解耦”痛点的顶级工具库,正是帮你打造“鸿蒙超

在 Mac Mini M4 上本地跑大模型(Ollama + Llama + ComfyUI + Stable Diffusion | Flux)

在 Mac Mini M4 上本地跑大模型(Ollama + Llama + ComfyUI + Stable Diffusion | Flux)

Mac Mini M4 配备了苹果自家研发的 M1/M2/M4 芯片,具有强大的处理能力,能够支持本地跑一些大模型,尤其是在使用如 Ollama、Llama、ComfyUI 和 Stable Diffusion 这类 AI 相关工具时,性能表现非常好。本教程将指导你如何在 Mac Mini M4 上本地部署并运行这些大模型,涵盖从环境搭建到使用的全流程。 一、准备工作 1. 确保系统更新 确保你的 macOS 版本已更新到最新的版本(例如 macOS 13.0 以上),这将确保兼容性和性能。 安装 Homebrew(macOS 包管理工具) Homebrew 是 macOS 上非常流行的包管理工具,它帮助你方便地安装各种软件。在终端中输入以下命令来安装

如何3小时搭建企业级审批系统?低代码工作流实战指南

如何3小时搭建企业级审批系统?低代码工作流实战指南 【免费下载链接】jeecg-bootjeecgboot/jeecg-boot 是一个基于 Spring Boot 的 Java 框架,用于快速开发企业级应用。适合在 Java 应用开发中使用,提高开发效率和代码质量。特点是提供了丰富的组件库、模块化架构和自动化配置方式。 项目地址: https://gitcode.com/GitHub_Trending/je/jeecg-boot 在数字化转型加速的今天,企业对流程自动化的需求日益迫切。你是否曾遇到过开发一个简单审批流程却花费数周时间的困境?低代码工作流技术正成为破解这一难题的关键。本文将以JeecgBoot平台为例,通过"问题导向-解决方案-实战案例"的三段式结构,带你探索如何利用可视化流程引擎快速构建企业级审批系统,显著提升开发效率。 为什么传统流程开发总是效率低下? 传统审批系统开发常常陷入"需求反复变更-开发周期漫长-维护成本高昂"的恶性循环。你是否经历过这些痛点:业务部门提出紧急流程需求,开发团队却需要从头编写表单、权限、流程逻辑等大量代码?或者流程上线后,