基于Linux的軟件化和網絡化雷達終端系統(tǒng)的實現
1 整體實現方案
1.1 基于Linux操作系統(tǒng)
傳統(tǒng)的雷達顯示系統(tǒng)是基于Windows的。但是Windows面臨許多問題,譬如封閉源碼、易被病毒和黑客入侵等。而Linux是免費的、開源的、網絡化的操作系統(tǒng)。其內核是獨立和高度可配置的。Linux的網絡功能和安全性要優(yōu)于Windows。所以基于Linux的系統(tǒng)方案是比較合適的。
1.2 系統(tǒng)實現方案
系統(tǒng)由預處理機、主顯機和網顯機組成,如圖1所示。
預處理機的主要功能是:雷達視頻的采集、壓縮和傳輸,接收二次信息和操控信息并存儲所有信息。主顯機功能:壓縮視頻的接收、解壓、顯示,接收二次信息并顯示,人機操控操作,將二次信息和操控信息發(fā)送到網絡上。網顯機類似于主顯機,但沒有操控功能。為簡單起見,本文不討論網顯機的實現。
2 預處理機系統(tǒng)的實現
預處理機完成數據的采集、壓縮和傳輸,下面針對這三個方面進行介紹。
2.1 基于PCI總線的雷達視頻采集卡
這是系統(tǒng)中惟一的硬件實現部分,也是必不可少的,它將采集的數據傳給計算機。這部分的具體實現可參考文獻[1]。
2.2 小波壓縮技術
當雷達采樣率很高時,網絡傳輸前不進行壓縮處理,帶寬是不夠的。
基于幀的壓縮技術,不適合對雷達視頻具有實時要求的場合,因為會引入一個固定延時。而一維小波壓縮可以做到高效壓縮和實時要求的折衷。
小波壓縮的思想是將一維數字序列分為粗糙尺度和細節(jié)兩部分,各占一半存儲空間,這個過程可以一直遞歸下去;因為回波信號比較平滑,細節(jié)部分主要是噪聲,所以只保留粗糙尺度部分,如圖2所示。
不同尺度系數的分解與合成如圖3所示。
其中h(k)、g(k)是一組由兩尺度方程推導出的共軛鏡像濾波器。aki是第i層的(粗)尺度系數。第i層按遞歸分解成i+1層的更大尺度部分ak(i+1)和細節(jié)部分dk(i+1)。
分解過程相當于輸入序列和濾波器卷積后,進行亞采樣,只保留偶數點;合成過程相當于先對序列進行插值(添加0)后,再與濾波器卷積、相加。
圖4是一個用db1小波遞歸3次壓縮一段雷達回波的例子,壓縮接近原來的1/8。
系統(tǒng)中采用 (9,7)雙正交小波快速提升算法,根據實際需要進行1~4層尺度分解。小波壓縮實現細節(jié)可參考文獻[2]。
2.3 網絡傳輸
常用的網絡協(xié)議是UDP和TCP。UDP是面向無連接的協(xié)議;TCP是面向有連接的協(xié)議。另外,TCP協(xié)議在接收方還要進行包的次序調整,因為不同的包可能按不同的路由到達。然而,可靠是要付出代價的,TCP占用CPU資源要比UDP高,網絡利用率也不如UDP。如果網絡狀況良好,需要持續(xù)進行大批量的數據傳輸,可以考慮UDP。一般情況下,通訊方式都是點對點的,也就是所謂的單播方式。采用這種方式,多個客戶機必須與同一個服務器分別建立連接,這導致了網絡負載成倍增加。
在特殊情形下可以使用廣播方式。其目前只被UDP協(xié)議支持。廣播的實現非常容易,只需要將目的IP地址設置為該段子網的地址即可。這種一對多的方式會影響不需要接收的主機,子網上所有未參加廣播接收的主機也必須完成對數據報的協(xié)議處理,直至UDP層才將它丟棄,甚至還會引起廣播風暴。
單播和廣播是兩種極端。多播提供了一種折衷的方案。多播數據報僅由對該數據報感興趣的主機接收(該主機加入多播組),不會影響子網上其它主機。目前UDP提供對多播的支持。
系統(tǒng)中,一次視頻采用多播方式;主顯示機與預處理機之間的操控命令連接通道由于需要可靠的連接且通信量相對較少,所以采用了面向連接的TCP協(xié)議。
3 主顯機系統(tǒng)的實現
主顯機主要由各種顯示模塊和網絡模塊組成。顯示模塊包括PPI和AR模塊。其中以PPI顯示技術最為復雜,顯示模塊和網絡模塊如何整合是系統(tǒng)效率高低的關鍵。
3.1雷達視頻PPI顯示
3.1.1坐標變換和死地址
顯示過程中一個很重要的步驟是進行坐標的轉換。數據采集卡得到的雷達視頻數據以距離方位為坐標,但通用顯卡的內存則以行列為坐標,故極坐標要轉化為x-y直角坐標,極坐標與自然直角坐標轉換為:
如果實時計算,目前的計算機硬件條件無法達到實時要求??墒孪扔嬎愫茫D換時采用查表法,以空間換取時間。轉化表可以只計算第一象限,其它象限根據方位碼對稱性確定。
所謂死地址,是指PPI顯示中遠離顯示中心的地方會有部分區(qū)域始終訪問不到,從而產生類似于衍射花紋的現象。半徑愈大時,這種花紋愈明顯。如圖5所示。
需要把這些不能被訪問到的點“補”上。將原有的一些有重復(即多個(ρ-θ)點映射到同一個(x-y)坐標)的點分開,以最近為原則將其中的重復點強行改為“死地址”點。例如,極坐標下的兩個點M1(ρ1,θ1)和M2(ρ2,θ2),轉換為直角坐標后對應的點都是M3(x1,y1),而點M4(x2,y2)是“死地址”且M3和M4相隔很近,這時強行規(guī)定M1=>M3而M2=>M4。
系統(tǒng)中,不偏心時,掃描半徑是512像素,一周4096根掃描線。實踐證明可以將所有的死地址與相鄰的方位距離碼關聯起來,消除花紋圖案??梢韵胂螅簰呙璋霃皆酱螅h離圓心的死區(qū)面積越大,其附近通常找不到能夠利用的重復點,必須改進方案。
考慮最極端的情形,偏心在圓周上,此時最大掃描半徑為1024。將半徑1024的圓分為半徑512的同心圓和剩下的外圓環(huán)。內部的小圓可以用前面的方案。512~1023部分將方位分辨率提高一倍,即一周8192根,再進行補點。具體算法如下:
(1) 得到外圓環(huán)的所有x-y坐標點的集合。
(2) 將外圓環(huán)內所有的ρ-θ點按轉換公式四舍五入到最近的x-y坐標點。有些x-y會關聯多個ρ-θ點,有些則沒有ρ-θ點與之關聯。
(3) 遍歷那些沒有ρ-θ關聯的x-y。對于每個這樣的x-y點,查找以自己為中心、邊長為4的正方形內所有的x-y點,如果發(fā)現某一個x-y點關聯ρ-θ多于一個,就將其中的一個ρ-θ給這個沒有ρ-θ關聯的x-y。同時,給出ρ-θ的x-y點,在其ρ-θ關聯鏈表中去掉給出的ρ-θ。
(4) 按ρ從512~1023、θ從0~8191的順序將對應的x-y寫入磁盤文件中。
編程計算結果表明這種算法可以很快地補全所有死地址。
相應地,原來的坐標轉換表應該由補過死地址的兩張表(一張是半徑512以內,另一張是512~1023)代替。
3.1.2 余暉模擬
傳統(tǒng)雷達系統(tǒng)中利用長余輝管作為PPI顯示器。其優(yōu)點是:目標亮度強、衰減慢;噪聲在顯示器上亮度弱、衰減快。這使目標很突出。如果是運動目標,會產生拖尾效應,使運動目標更形象、更容易被發(fā)現。使用普通顯示器,必須提供一種軟件實現機制模擬余輝。一種方法是:對PPI掃描區(qū)域的點進行循環(huán)偽隨機訪問,讀出后進行衰減再寫入。其原理是:按偽隨機序列進行遍歷的點可以近似認為是分布均勻的,而當前掃描區(qū)域只是占整個PPI區(qū)域的極少部分,所以落入當前掃描區(qū)域的偽隨機序列的點數也很少,而遠離當前區(qū)域的隨機序列的點數很多,所以平穩(wěn)后能產生離當前掃描線越遠越暗的余暉效果。
對于半徑512像素點的PPI掃描區(qū)域,其外切矩形為10241024。用20bit的偽隨機序列的前10bit對應矩形區(qū)域的X坐標點,后10bit對應Y坐標點,再去掉圓外面、矩形以內的像素。PPI每掃描一根半徑線,就循環(huán)讀出一段隨機點,衰減后再寫入。每次衰減的點數和幅度可根據需要設置。X和Y坐標的隨機表可以事先生成好,以數據文件的形式存儲在硬盤中,程序初始化時一次讀入。
3.1.3 二次信息的分層顯示
廣義的二次信息包括航跡、狀態(tài)監(jiān)控等所有非一次視頻的信息。在軟件方案中,采用了Overlay功能實現。目前通用顯卡都支持此功能。
Overlay如同顯示器前一塊透明的切片,如圖6所示。當需要顯示Overlay時,可同時看到Overlay部分和Primary Surface沒有被Overlay遮擋的地方。當不需要顯示Overlay時,移除Overlay,原來的Primary Surface內容不變,也就是說Primary Surface與Overlay的內容物理上是分開的。而是否顯示Overlay,由Primary Surface上像素的顏色來決定。當Primary Surface上某些區(qū)域的像素設為一種特殊的顏色時,這些區(qū)域顯示的就是Overlay上的內容。這種起過濾作用的顏色稱為Color Key。這種顯示機制完全由顯卡的CPU完成,所以當使用Overlay功能時,程序不會有明顯的性能損失。不同的顯卡,Color Key可能不一樣。
Overlay有多種模式,最常用的是YV12_OVERLAY,Y:U:V=4:2:2。本系統(tǒng)采用了這種模式。
YUV Overlay的一個特點是:適當地固定U、V,可以近似地固定顏色種類,改變Y就相當于改變亮度。測試還表明,在Overlay上顯示視頻比在Primary Surface上顯示要少占用CPU資源。相比Primary Surface 上的RGB顯示方式,這些特性很適合于PPI顯示一次視頻。
一次和二次分層顯示的實現方法是:首先將Primary Surface上位于PPI掃描區(qū)域內的所有像素都填上特殊的Color Key,這樣保證在與Primary Surface關聯的Overlay上的一次視頻可見;需要顯示二次信息的地方用不同于Color Key的其它顏色填在Primary Surface層上;當不需要顯示二次信息時,只需在Primary Surface上將原來的二次信息用Color Key顏色再寫一遍即可。
3.2 網絡化的顯示應用程序框架結構
由于接收網絡組播的視頻幀包是一種阻塞操作,而GUI程序的主線程不能有阻塞操作,所以網絡接收部分應該放在子線程或子進程中。
系統(tǒng)首先選擇了子線程方式,試驗表明在這種方式下顯示部分不均勻。這是因為CPU調度的對象是進程,進程內的線程同時競爭CPU分給該進程的時間片,于是就會出現在某段時間內主線程一直占用CPU,另一段時間網絡部分的子線程占用CPU。網絡接收雖然不會丟包,但是接收速度的不均勻引起了顯示的不均勻。系統(tǒng)又試驗了子進程方式,發(fā)現顯示效果有所改觀,但是改進不大。
設想一下,如果有兩個CPU,并行運行父進程和子進程,那么整體運行效率就會有很大程度的提高。因為,CPU幾乎不需要在不同的進程之間反復切換了。
系統(tǒng)中選用具有超線程功能的Intel Pentium 4處理器,如果操作系統(tǒng)能夠支持SMP(Symmetric Multiple Processing),那么一個CPU相當于兩個CPU,兩個進程就可以并行處理。實際上,Linux2.4版本的內核就支持SMP了。系統(tǒng)選擇的內核版本是2.6.8,手工編譯內核,選用SMP功能。用新的內核運行同樣的程序,顯示很平滑,最快顯示速度達到一圈2s以內,性能得到了明顯提高。Linux內核的靈活定制特性在系統(tǒng)中起關鍵作用。
圖7是主顯機上網絡化顯示程序的框架。
兼顧平等,父子進程盡量平均分擔負載。Linux有許多實現進程間通信的機制:管道、消息隊列、共享內存等。系統(tǒng)中選擇共享內存方式,因為這是進程間通信最快捷的方式??蚣苤校涡畔⑼ㄟ^I/O口進入主顯機,由于其數據率比較低,所以系統(tǒng)采用定時的方法進行訪問更新。
本文論證了基于Linux的軟件化、網絡化雷達終端系統(tǒng)的實現可行性,并提出了一套切實可行的實現方案,對方案中的關鍵技術做了必要的闡述。這套方案的推廣對目前國內雷達終端系統(tǒng)具有革命性的意義。
參考文獻
1 李 清.基于PCI總線的雷達視頻采集方案. 電子技術應用,2004;30(11)
2 張旭東.圖像編碼基礎和小波壓縮技術.北京:清華大學出版社,2004
3 W.Richard Stevens.Unix網絡編程(第一、二卷).北京:清華大學出版社,2001
評論