作者: 小帥龍
代碼倉(cāng)庫(kù):GitHub - xiaoshuaidragon/2025_ruiqing_rtt
1. 應(yīng)用實(shí)現(xiàn)功能
1.本應(yīng)用基于睿擎派,實(shí)現(xiàn)了對(duì)無(wú)人機(jī)目標(biāo)的實(shí)時(shí)跟蹤,并將跟蹤結(jié)果用于驅(qū)動(dòng)兩軸轉(zhuǎn)臺(tái)完成自動(dòng)指向。主要功能包括:使用 FD-SST 算法在視頻流中實(shí)時(shí)跟蹤無(wú)人機(jī)目標(biāo),輸出目標(biāo)在圖像中的坐標(biāo)。
2.通過(guò) UDP 將視頻流傳輸給上位機(jī)。
3.通過(guò) RPMsg 將坐標(biāo)共享給 RT-Thread,RT-Thread 通過(guò) RS485 協(xié)議與轉(zhuǎn)臺(tái)進(jìn)行交互。
2. RT-Thread 使用情況概述
●本應(yīng)用基于 RK3506 的 AMP 架構(gòu):Linux 核: 負(fù)責(zé)高計(jì)算量任務(wù),如視頻處理、FD-SST 跟蹤、通訊協(xié)議棧等。
●RT-Thread 實(shí)時(shí)核 (RTOS): 負(fù)責(zé)實(shí)時(shí)性要求高的控制邏輯,例如轉(zhuǎn)臺(tái)控制指令下發(fā)。
1.RT-Thread 在本系統(tǒng)中承擔(dān)關(guān)鍵作用,主要用于實(shí)時(shí)獲取坐標(biāo)、解析、生成指令,并通過(guò) RS485 以固定周期、穩(wěn)定時(shí)序發(fā)送給轉(zhuǎn)臺(tái)內(nèi)部伺服控制器。我們希望 RS485 命令發(fā)送周期穩(wěn)定,延遲一致,不被其他任務(wù)阻塞以及串口發(fā)送時(shí)序可靠。因?yàn)橐坏┌l(fā)送間隔不穩(wěn)定,轉(zhuǎn)臺(tái)可能會(huì)表現(xiàn)為抖動(dòng)、向目標(biāo)指向延遲變大等問(wèn)題。RT-Thread 是輕量級(jí)嵌入式實(shí)時(shí)操作系統(tǒng),具備以下優(yōu)勢(shì):實(shí)時(shí)性強(qiáng)(低延遲、低抖動(dòng))。
2.任務(wù)調(diào)度是確定性的。
3.高優(yōu)先級(jí)任務(wù)不會(huì)被非關(guān)鍵任務(wù)延遲。
4.中斷響應(yīng)非常迅速。
5.在本項(xiàng)目中,RT-Thread 的具體作用總結(jié)為:實(shí)時(shí)坐標(biāo)接收 (RPMsg),保證坐標(biāo)數(shù)據(jù)不延遲、不丟幀。
6.轉(zhuǎn)臺(tái)動(dòng)作指令生成。
7.RS485 通信的穩(wěn)定發(fā)送。
3. 硬件框架說(shuō)明
●整體硬件框架如下:主控芯片: RK3506CPU0, CPU1:用于 Linux 核。
○CPU2:用于 RT-Thread 核。
●視頻采集: 通過(guò)相機(jī)采集視頻數(shù)據(jù)(由于睿擎派和紅外相機(jī)適配問(wèn)題,本項(xiàng)目采用將視頻保存在本地的形式,作為 FD-SST 算法的輸入),在 Linux 核上實(shí)現(xiàn)。
●數(shù)據(jù)通信: 通過(guò)網(wǎng)線、UDP 協(xié)議,把跟蹤結(jié)果實(shí)時(shí)傳遞給上位機(jī),在 Linux 核上實(shí)現(xiàn)。
●轉(zhuǎn)臺(tái)控制: 通過(guò)串口,根據(jù)坐標(biāo)框在視頻中的位置轉(zhuǎn)換為相應(yīng)指令,發(fā)送給轉(zhuǎn)臺(tái),這部分在 RT-Thread 核上實(shí)現(xiàn)。
4. 軟件框架說(shuō)明
1.整體軟件框架分為 Linux 部分和 RT-Thread 部分。Linux 部分:Linux 端運(yùn)行于 RK3506 的 CPU0 和 CPU1,負(fù)責(zé)攝像頭視頻采集、FD-SST 單目標(biāo)跟蹤、數(shù)據(jù)共享中轉(zhuǎn)、RPMsg 通信及 UDP 視頻流轉(zhuǎn)發(fā)。系統(tǒng)采用多進(jìn)程 + 共享內(nèi)存 + IPC 通信機(jī)制,實(shí)現(xiàn)圖像、坐標(biāo)與數(shù)據(jù)傳輸任務(wù)的解耦,使整個(gè)結(jié)構(gòu)穩(wěn)定、高效且易擴(kuò)展。Linux 端包含以下三個(gè)獨(dú)立進(jìn)程:FD-SST 進(jìn)程: 圖像處理與目標(biāo)跟蹤核心進(jìn)程。
2.RPMsg 發(fā)送進(jìn)程: 向 RT-Thread 實(shí)時(shí)核傳遞坐標(biāo)。
3.UDP 視頻進(jìn)程: 將視頻幀發(fā)送到上位機(jī)顯示。
4.Linux 端采用“三進(jìn)程 + 共享內(nèi)存”的高效架構(gòu),將圖像采集與 FD-SST 跟蹤、RPMsg 坐標(biāo)發(fā)送、UDP 視頻流發(fā)送三個(gè)核心任務(wù)徹底解耦。這種結(jié)構(gòu)充分利用了多核資源,減少各任務(wù)之間的阻塞,提高整體系統(tǒng)的實(shí)時(shí)性與穩(wěn)定性。RT-Thread 部分:RT-Thread 在本系統(tǒng)中主要承擔(dān)實(shí)時(shí)控制與執(zhí)行層的角色,通過(guò)定時(shí)調(diào)度機(jī)制實(shí)現(xiàn)對(duì)轉(zhuǎn)臺(tái)的穩(wěn)定控制。整體軟件框架可分為五個(gè)關(guān)鍵模塊:主控制線程、RPMsg 通信模塊、坐標(biāo)隊(duì)列與數(shù)據(jù)管理模塊、控制策略模塊、RS485 指令下發(fā)模塊。整體流程如下所示:RPMsg 接收線程從 Linux 獲取最新目標(biāo)坐標(biāo) → 存入坐標(biāo)緩存。
5.控制主線程每 20 ms 運(yùn)行一次。
6.控制線程從緩存讀取目標(biāo)坐標(biāo)。
7.調(diào)用控制策略模塊計(jì)算需要輸出的轉(zhuǎn)臺(tái)動(dòng)作(角度)。
8.通過(guò) RS485 模塊將指令發(fā)送到轉(zhuǎn)臺(tái)伺服控制器。
9.轉(zhuǎn)臺(tái)執(zhí)行動(dòng)作 → 云臺(tái)跟蹤無(wú)人機(jī)。
10.下一個(gè) 20 ms 周期繼續(xù)執(zhí)行。

5. 軟件模塊說(shuō)明
5.1 FD-SST 跟蹤算法模塊
●功能說(shuō)明: 負(fù)責(zé)攝像頭采集視頻幀,并對(duì)每幀圖像進(jìn)行 FD-SST 單目標(biāo)跟蹤。考慮到 RK3506 板上資源有限且無(wú) NPU,未采用 YOLO 等重型算法,而是直接給定框選初始目標(biāo)區(qū)域 (ROI),之后持續(xù)進(jìn)行跟蹤。將每一幀的原始圖像(用于 UDP 發(fā)送)和目標(biāo)坐標(biāo)(用于 RPMsg)寫(xiě)入系統(tǒng)共享內(nèi)存供其他進(jìn)程實(shí)時(shí)讀取。
●算法原理: FD-SST (Feature-Driven Spatial-Selective Tracking) 是一種輕量級(jí)、魯棒性強(qiáng)的單目標(biāo)跟蹤算法。它以模板匹配為核心,通過(guò)特征提取、候選區(qū)域生成、空間選擇與自適應(yīng)更新實(shí)現(xiàn)對(duì)高速移動(dòng)目標(biāo)的穩(wěn)定跟蹤。其核心思想是在上一幀目標(biāo)位置附近快速搜索候選區(qū)域,通過(guò)特征相似度找到最優(yōu)匹配區(qū)域,并按一定原則更新目標(biāo)模板,以此減少運(yùn)算量。
5.2 UDP 視頻傳輸模塊
●功能說(shuō)明: 從共享內(nèi)存中獲取最新視頻幀,將視頻幀編碼并通過(guò) UDP 發(fā)送給上位機(jī)展示。會(huì)疊加跟蹤框以提高可視化效果。該模塊與 RPMsg 通道、FD-SST 進(jìn)程互不阻塞,網(wǎng)絡(luò)波動(dòng)不會(huì)影響算法邏輯。
5.3 RPMsg 發(fā)送模塊 (Linux → RT-Thread 坐標(biāo)傳遞)
●功能說(shuō)明: 每幀從共享內(nèi)存中讀取最新的目標(biāo)中心坐標(biāo),將坐標(biāo)進(jìn)行數(shù)據(jù)打包后,通過(guò) RPMsg 虛擬通道發(fā)送到 RT-Thread 實(shí)時(shí)核。保證坐標(biāo)數(shù)據(jù)以低延遲方式抵達(dá)實(shí)時(shí)控制端。
5.4 實(shí)時(shí)轉(zhuǎn)臺(tái)控制模塊 (RT-Thread 端)
●功能說(shuō)明: 該模塊實(shí)現(xiàn)了從“獲取目標(biāo)坐標(biāo) → 計(jì)算動(dòng)作指令 → 控制轉(zhuǎn)臺(tái)執(zhí)行”的完整實(shí)時(shí)閉環(huán)控制。模塊通過(guò) RPMsg 接收坐標(biāo)并更新本地緩沖區(qū)。內(nèi)部構(gòu)建了一個(gè)高優(yōu)先級(jí)控制線程,以固定 20 ms 的周期運(yùn)行,讀取最新坐標(biāo),根據(jù)目標(biāo)偏差計(jì)算轉(zhuǎn)臺(tái)的角度或角速度指令,并通過(guò) RS485 下發(fā)指令給轉(zhuǎn)臺(tái)伺服系統(tǒng)。
6. 演示效果
請(qǐng)?jiān)L問(wèn)原文獲取視頻:
https://club.rt-thread.org/ask/article/85cbbe0e6497989a.html
這里考慮到fdsst算法的輸入是本地視頻,轉(zhuǎn)臺(tái)的轉(zhuǎn)動(dòng)沒(méi)有實(shí)際意義,因此轉(zhuǎn)臺(tái)控制部分只是簡(jiǎn)單做了一個(gè)定時(shí)發(fā)送485指令的效果。
7.代碼地址
請(qǐng)?jiān)L問(wèn)原文獲取地址:
https://club.rt-thread.org/ask/article/85cbbe0e6497989a.html
8. 總結(jié)
1.本項(xiàng)目基于睿擎派的 AMP 架構(gòu),通過(guò)在 Buildroot 系統(tǒng)配置中加入 OpenCV、H264、FFmpeg 等相關(guān)配置,實(shí)現(xiàn)了在 Buildroot 系統(tǒng)內(nèi)對(duì)無(wú)人機(jī)目標(biāo)的跟蹤效果。同時(shí)利用 RPMsg 作為 RT-Thread 和 Linux 之間的交互手段,將需要嚴(yán)格定時(shí)控制的部分放在 RT-Thread 中,充分發(fā)揮其中斷延遲低、任務(wù)切換快的優(yōu)勢(shì)。開(kāi)發(fā)中遇到的問(wèn)題與展望:內(nèi)部存儲(chǔ)空間較小,配置 Buildroot 后需調(diào)整parameter.txt中的內(nèi)存分配。
2.RK3506 的算力資源有限,未來(lái)希望基于 RK3588 等帶有 NPU 的芯片,以便部署神經(jīng)網(wǎng)絡(luò)圖像算法。
版權(quán)聲明: 本文為 RT-Thread 論壇用戶「小帥龍」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
-
RTOS
+關(guān)注
關(guān)注
25文章
866瀏覽量
122958 -
無(wú)人機(jī)
+關(guān)注
關(guān)注
235文章
11294瀏覽量
195560 -
目標(biāo)跟蹤系統(tǒng)
+關(guān)注
關(guān)注
0文章
4瀏覽量
6084 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1611瀏覽量
44806
發(fā)布評(píng)論請(qǐng)先 登錄
基于FD-SST 的無(wú)人機(jī)目標(biāo)跟蹤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)|技術(shù)集結(jié)


評(píng)論