1. 应用实现功能
本系统基于睿擎派RK3506平台,实现了对无人机目标的实时跟踪,并将跟踪结果用于驱动两轴转台完成自动指向。主要功能包括:
- 目标跟踪:使用 FD-SST 算法在视频流中实时跟踪无人机目标,输出目标在图像中的坐标。
- 视频传输:通过 UDP 协议将叠加了跟踪框的视频流实时传输给上位机进行显示。
- 实时控制:通过 RPMsg 将坐标共享给 RT-Thread 实时核,由其实时生成控制指令,并通过 RS485 协议与转台伺服控制器进行交互,驱动转台指向目标。
2. RT-Thread 使用情况概述
本应用基于 RK3506 的 AMP 架构:
- Linux 核:负责高计算量任务,如视频处理、FD-SST 跟踪、网络通信协议栈等。
- RT-Thread 实时核:负责实时性要求高的控制逻辑,例如转台控制指令的下发。
RT-Thread 作为轻量级嵌入式实时操作系统,在本系统中承担关键作用,主要用于实时获取坐标、解析、生成指令,并通过 RS485 以固定周期、稳定的时序发送给转台。其核心优势确保了控制系统的实时性与可靠性:
- 高实时性与低抖动:任务调度确定,中断响应迅速,保证了 RS485 指令发送周期的稳定。一旦发送间隔不稳定,转台可能会表现为抖动、指向延迟变大等问题。
- 任务优先级保障:高优先级任务(如控制指令发送)不会被非关键任务延迟或阻塞。
在本项目中,RT-Thread 的具体作用总结为:
- 实时接收来自 Linux 的坐标数据 (通过 RPMsg),保证数据不延迟、不丢帧。
- 根据坐标生成转台动作指令。
- 稳定、定时地通过 RS485 发送控制指令。
3. 硬件框架说明
整体硬件框架如下:
- 主控芯片:RK3506
- CPU0, CPU1:用于运行 Linux 系统。
- CPU2:用于运行 RT-Thread 实时系统。
- 视频采集:通过相机采集视频数据(注:本项目因适配问题,采用本地视频文件作为 FD-SST 算法的输入),在 Linux 核上实现。
- 数据通信:通过网线、UDP 协议,把跟踪结果视频实时传递给上位机,在 Linux 核上实现。
- 转台控制:通过串口,根据目标在视频中的坐标转换为相应指令,发送给转台伺服控制器,这部分在 RT-Thread 核上实现。
4. 软件框架说明
整体软件框架分为 Linux 部分和 RT-Thread 部分。
Linux 部分:
Linux 端运行于 RK3506 的 CPU0 和 CPU1,负责摄像头视频采集(或视频文件读取)、FD-SST 单目标跟踪、数据共享中转、RPMsg 通信及 UDP 视频流转发。系统采用 多进程 + 共享内存 + IPC 通信 机制,实现图像处理、坐标传递与网络传输任务的解耦,使整个结构稳定、高效且易扩展。Linux 端包含以下三个独立进程:
- FD-SST 进程:图像处理与目标跟踪核心进程。
- RPMsg 发送进程:向 RT-Thread 实时核传递坐标。
- UDP 视频进程:将视频帧发送到上位机显示。
这种“三进程+共享内存”的架构充分利用了多核资源,减少了任务间阻塞,提高了整体系统的实时性与稳定性。
RT-Thread 部分:
RT-Thread 在本系统中主要承担实时控制与执行层的角色。整体软件框架可分为五个关键模块:主控制线程、RPMsg 通信模块、坐标队列与数据管理模块、控制策略模块、RS485 指令下发模块。其工作流程是一个典型的实时控制闭环:
- RPMsg 接收线程从 Linux 获取最新目标坐标,并存入坐标缓存队列。
- 高优先级的主控制线程以固定 20 ms 的周期被唤醒运行。
- 控制线程从缓存中读取最新的目标坐标。
- 调用控制策略模块,根据坐标偏差计算需要输出的转台动作(角度或角速度)。
- 通过 RS485 模块将精确的指令发送到转台伺服控制器。
- 转台执行动作,完成对无人机的指向跟踪。
- 系统等待下一个 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 发送给上位机展示。为提升可视化效果,会在发送前在图像上叠加跟踪框。该模块与算法跟踪、坐标传递进程完全解耦,网络波动不会影响核心跟踪与控制逻辑。
5.3 RPMsg 发送模块 (Linux → RT-Thread 坐标传递)
- 功能说明:每帧从共享内存中读取最新的目标中心坐标,将坐标进行数据打包后,通过 RPMsg 虚拟通道发送到 RT-Thread 实时核。该模块的设计目标是保证坐标数据能以尽可能低的延迟和稳定的速率抵达实时控制端。
5.4 实时转台控制模块 (RT-Thread 端)
- 功能说明:该模块实现了从“获取目标坐标 → 计算动作指令 → 控制转台执行”的完整实时闭环控制。模块通过 RPMsg 接收坐标并更新本地缓冲区。内部构建了一个高优先级控制线程,以固定 20 ms 的周期运行,读取最新坐标,根据预设的控制策略(如PID)计算转台的角度或角速度指令,并通过 RS485 稳定地下发指令给转台伺服系统。
6. 演示效果
由于当前 FD-SST 算法的输入是本地视频文件,转台的转动没有实际跟踪意义,因此演示中,转台控制部分主要展示了系统能够以稳定周期通过 RS485 发送指令的能力。
演示视频请访问原文查看:https://club.rt-thread.org/ask/article/85cbbe0e6497989a.html
7. 总结与展望
本项目基于睿擎派 RK3506 的 AMP 架构,通过在 Buildroot 系统配置中集成 OpenCV 等库,实现了基于 FD-SST 算法的无人机目标跟踪。同时,利用 RPMsg 作为 RT-Thread 和 Linux 之间的高速通信手段,将需要严格定时控制的部分放在 RT-Thread 中,充分发挥了其实时操作系统中断延迟低、任务切换快的优势。
开发中遇到的问题与未来展望:
- 存储空间:RK3506 内部存储空间较小,在配置 Buildroot 加入较多功能后,需仔细调整
parameter.txt 中的内存分区。
- 算力限制:RK3506 的 CPU 算力有限,未来希望基于 RK3588 等带有 NPU 的芯片进行开发,以便部署更先进的神经网络图像算法,提升跟踪精度与鲁棒性。
- 视频接口:希望后续能增加对 MIPI 等原生视频接口的支持,方便进行实时的图像采集与处理工作。
版权声明:本文基于 RT-Thread 论坛用户原创文章整理优化,遵循 CC 4.0 BY-SA 版权协议。
|