基于FD-SST 的无人机目标跟踪系统的设计与实现|技术集结

描述

作者:  小帅龙
 

代码仓库:GitHub - xiaoshuaidragon/2025_ruiqing_rtt

 

1. 应用实现功能

 

1. 本应用基于睿擎派,实现了对无人机目标的实时跟踪,并将跟踪结果用于驱动两轴转台完成自动指向。主要功能包括:使用 FD-SST 算法在视频流中实时跟踪无人机目标,输出目标在图像中的坐标。

 

2. 通过 UDP 将视频流传输给上位机。

 

3. 通过 RPMsg 将坐标共享给 RT-Thread,RT-Thread 通过 RS485 协议与转台进行交互。

 

 

2. RT-Thread 使用情况概述

 

● 本应用基于 RK3506 的 AMP 架构:Linux 核:  负责高计算量任务,如视频处理、FD-SST 跟踪、通讯协议栈等。

 

● RT-Thread 实时核 (RTOS):  负责实时性要求高的控制逻辑,例如转台控制指令下发。

 

1. RT-Thread 在本系统中承担关键作用,主要用于实时获取坐标、解析、生成指令,并通过 RS485 以固定周期、稳定时序发送给转台内部伺服控制器。我们希望 RS485 命令发送周期稳定,延迟一致,不被其他任务阻塞以及串口发送时序可靠。因为一旦发送间隔不稳定,转台可能会表现为抖动、向目标指向延迟变大等问题。RT-Thread 是轻量级嵌入式实时操作系统,具备以下优势:实时性强(低延迟、低抖动)。

 

2. 任务调度是确定性的。

 

3. 高优先级任务不会被非关键任务延迟。

 

4. 中断响应非常迅速。

 

5. 在本项目中,RT-Thread 的具体作用总结为:实时坐标接收 (RPMsg),保证坐标数据不延迟、不丢帧。

 

6. 转台动作指令生成。

 

7. RS485 通信的稳定发送。

 

 

3. 硬件框架说明

目标跟踪系统

 

● 整体硬件框架如下:主控芯片:  RK3506CPU0, CPU1:用于 Linux 核。

 

 

○ CPU2:用于 RT-Thread 核。

 

 

● 视频采集:  通过相机采集视频数据(由于睿擎派和红外相机适配问题,本项目采用将视频保存在本地的形式,作为 FD-SST 算法的输入),在 Linux 核上实现。

 

 

● 数据通信:  通过网线、UDP 协议,把跟踪结果实时传递给上位机,在 Linux 核上实现。

 

 

● 转台控制:  通过串口,根据坐标框在视频中的位置转换为相应指令,发送给转台,这部分在 RT-Thread 核上实现。

 

 

 

 

 

4. 软件框架说明

目标跟踪系统

 

1. 整体软件框架分为 Linux 部分和 RT-Thread 部分。Linux 部分:Linux 端运行于 RK3506 的 CPU0 和 CPU1,负责摄像头视频采集、FD-SST 单目标跟踪、数据共享中转、RPMsg 通信及 UDP 视频流转发。系统采用多进程 + 共享内存 + IPC 通信机制,实现图像、坐标与数据传输任务的解耦,使整个结构稳定、高效且易扩展。Linux 端包含以下三个独立进程:FD-SST 进程:  图像处理与目标跟踪核心进程。

 

 

2. RPMsg 发送进程:  向 RT-Thread 实时核传递坐标。

 

 

3. UDP 视频进程:  将视频帧发送到上位机显示。

 

 

4. Linux 端采用“三进程 + 共享内存”的高效架构,将图像采集与 FD-SST 跟踪、RPMsg 坐标发送、UDP 视频流发送三个核心任务彻底解耦。这种结构充分利用了多核资源,减少各任务之间的阻塞,提高整体系统的实时性与稳定性。RT-Thread 部分:RT-Thread 在本系统中主要承担实时控制与执行层的角色,通过定时调度机制实现对转台的稳定控制。整体软件框架可分为五个关键模块:主控制线程、RPMsg 通信模块、坐标队列与数据管理模块、控制策略模块、RS485 指令下发模块。整体流程如下所示:RPMsg 接收线程从 Linux 获取最新目标坐标 → 存入坐标缓存。

 

 

5. 控制主线程每 20 ms 运行一次。

 

 

6. 控制线程从缓存读取目标坐标。

 

 

7. 调用控制策略模块计算需要输出的转台动作(角度)。

 

 

8. 通过 RS485 模块将指令发送到转台伺服控制器。

 

 

9. 转台执行动作 → 云台跟踪无人机。

 

 

10. 下一个 20 ms 周期继续执行。

目标跟踪系统

 

 

 

 

 

5. 软件模块说明

 

5.1 FD-SST 跟踪算法模块

 

● 功能说明:  负责摄像头采集视频帧,并对每帧图像进行 FD-SST 单目标跟踪。考虑到 RK3506 板上资源有限且无 NPU,未采用 YOLO 等重型算法,而是直接给定框选初始目标区域 (ROI),之后持续进行跟踪。将每一帧的原始图像(用于 UDP 发送)和目标坐标(用于 RPMsg)写入系统共享内存供其他进程实时读取。

 

 

● 算法原理:  FD-SST (Feature-Driven Spatial-Selective Tracking) 是一种轻量级、鲁棒性强的单目标跟踪算法。它以模板匹配为核心,通过特征提取、候选区域生成、空间选择与自适应更新实现对高速移动目标的稳定跟踪。其核心思想是在上一帧目标位置附近快速搜索候选区域,通过特征相似度找到最优匹配区域,并按一定原则更新目标模板,以此减少运算量。

 

 

5.2 UDP 视频传输模块

 

● 功能说明:  从共享内存中获取最新视频帧,将视频帧编码并通过 UDP 发送给上位机展示。会叠加跟踪框以提高可视化效果。该模块与 RPMsg 通道、FD-SST 进程互不阻塞,网络波动不会影响算法逻辑。

 

 

5.3 RPMsg 发送模块 (Linux → RT-Thread 坐标传递)

 

● 功能说明:  每帧从共享内存中读取最新的目标中心坐标,将坐标进行数据打包后,通过 RPMsg 虚拟通道发送到 RT-Thread 实时核。保证坐标数据以低延迟方式抵达实时控制端。

 

 

5.4 实时转台控制模块 (RT-Thread 端)

 

● 功能说明:  该模块实现了从“获取目标坐标 → 计算动作指令 → 控制转台执行”的完整实时闭环控制。模块通过 RPMsg 接收坐标并更新本地缓冲区。内部构建了一个高优先级控制线程,以固定 20 ms 的周期运行,读取最新坐标,根据目标偏差计算转台的角度或角速度指令,并通过 RS485 下发指令给转台伺服系统。

 

 

6. 演示效果

 

请访问原文获取视频:
 

https://club.rt-thread.org/ask/article/85cbbe0e6497989a.html

这里考虑到fdsst算法的输入是本地视频,转台的转动没有实际意义,因此转台控制部分只是简单做了一个定时发送485指令的效果。


 

7.代码地址

请访问原文获取地址:
 

https://club.rt-thread.org/ask/article/85cbbe0e6497989a.html

8. 总结

 

1. 本项目基于睿擎派的 AMP 架构,通过在 Buildroot 系统配置中加入 OpenCV、H264、FFmpeg 等相关配置,实现了在 Buildroot 系统内对无人机目标的跟踪效果。同时利用 RPMsg 作为 RT-Thread 和 Linux 之间的交互手段,将需要严格定时控制的部分放在 RT-Thread 中,充分发挥其中断延迟低、任务切换快的优势。开发中遇到的问题与展望:内部存储空间较小,配置 Buildroot 后需调整 parameter.txt中的内存分配。

 

 

2. RK3506 的算力资源有限,未来希望基于 RK3588 等带有 NPU 的芯片,以便部署神经网络图像算法。

 

 

3. 希望增加 MIPI 等视频接口,方便图像采集工作。

 

 

 

 

 

版权声明:  本文为 RT-Thread 论坛用户「小帅龙」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分