胥寶新



摘? ?要:2016年,中國全面啟動ADS-B建設工程,預計在全國部署308個ADS-B地面站設備及多級的ADS-B數據處理中心。2017年,隨著地面站建設的逐漸展開,二級數據中心的建設也已正式招標完成。ADS-B技術將衛星導航、通信技術、機載設備以及地面設備等先進技術結合,提供了更加安全、高效的空中交通監視手段,能有效提高管制員和飛行員的運行態勢與感知能力,擴大監視覆蓋范圍,提高空中交通安全水平、空域容量與運行效率。文章從ADS-B二級數據中心建設中的大批量、高頻率的目標跟蹤顯示方面,論述簡單的技術實現。
關鍵詞:廣播式自動相關監視;二級數據中心;目標跟蹤
廣播式自動相關監視(Automatic Dependent Surveillance-Broadcast,ADS-B)二級數據中心系統中的目標跟蹤顯示是基于Qt的圖形視圖框架(Graphics View Framework)實現的,提供了支持大量自定義的二維圖形對象交互管理器,提供基于圖像對象的方式實現model-view的編程模式。本文將不重點介紹圖形視圖框架的具體應用和實現,而對在該框架下實現高頻率、大批量目標刷新方面的解決方案進行簡要介紹。
1? ? ADS-B二級數據中心系統
ADS-B二級數據中心系統建設的指標是在每0.5 s周期內,同時更新5 000~8 000批目標,且時延不能大于0.5 s。因ADS-B二級數據中心系統的特殊性,前端顯示需同時支持3~5種數據格式的解析,相當于在0.5 s內,前端顯示需完成消息接收、格式判定、格式解析和目標繪制等工作。項目實際應用效果如圖1所示。
2? ? 設計思路介紹
系統充分利用計算機多核并發計算的優勢,采用多線程并發計算和多線程異步刷新技術進行整體的架構設計,數據處理和圖形渲染在不同線程下進行處理,并利用部分GPU計算能力。
2.1? 多線程并發計算
采用多線程并發計算主要是為了解決高頻率、大批量的消息解析問題。在程序設計中,消息接收和信息分類解析部分采用該模式,多線程并發計算流程如圖2所示。
采用多線程同時從不同端口獲取目標信息,在信息接收和信息分揀線程池中,將各類型的ADS-B數據分類推送到目標信息解析線程池。數據接收池和解析池進行獨立設計,利用共享的緩沖區以避免網絡消息擁堵而導致信息丟失的情況。在消息接收線程池的實現中,采用環形緩沖區以減少系統分配堆內存加鎖開銷和用戶態/核心態切換的開銷,進一步提升處理效率。
2.2? 多線程異步刷新
若系統采用同步刷新,即每收到一條目標信息,即通知場景去進行該目標更新(包括位置和其他下行的數據信息),當目標數量在5 000批時,即每0.5 s通知場景渲染5 000次,目前一般顯示渲染設備都無法滿足如此高頻率的刷新渲染。
為解決同步刷新的刷新渲染難題,本系統采用異步刷新技術,即在目標解析線程中進行數據準備,不主動發送渲染請求。由視圖/場景進行統一的目標刷新需求管理,集中判定是否有重新渲染需求,減少單位時間內重復渲染的次數,大大降低渲染頻率,提升系統性能。
3? ? 異步刷新實現流程介紹
要實現目標的異步刷新,需進行存儲空間準備、目標信息解析(數據準備)、目標圖形對象創建、定時刷新渲染等幾大步驟。
3.1? 存儲空間準備
系統采用環形緩沖區(Ring Buffer)來進行航跡信息的存儲:(1)為了減少內存動態分配的開銷和消費某一數據后其余數據搬移的開銷。(2)為了線程間數據傳遞和共享訪問的安全。環形緩沖區示意如圖3所示。
環形緩沖區實現通過哈希方式,在保證了數據訪問的快速性和安全性外,同時,兼顧了數據獲取的靈活性。
系統根據指標要求,預先申請足夠、非連續的內存空間,并通過空閑和占用兩個地址管理隊列來進行內存使用情況的管理。在數據準備階段,申請的內存空間地址全部由空閑地址管理隊列來進行管理。隨著運行逐步將地址由空閑遷移到占用,同時,也會有占用的重新歸到空閑隊列。
3.2? 目標信息解析
在接收到ADS-B下傳的目標信息時,在線程中對目標數據項進行解析,提取目標的關鍵要素:監視源唯一標識和航跡號,組成哈希表的key值,在占用隊列中去檢索該目標是否已經存在。
若是新目標,則從空閑隊列中挑選一個內存塊進行數據存儲,并將該內存結構從空閑隊列中轉移到占用隊列中進行管理。因主進程中只會根據已創建的圖像目標對象的變化來識別是否需要重新渲染。在新出現目標時,由處理線程發送異步的目標創建信號,通知到場景去新建一個航跡目標的圖形對象。目標創建的異步信號通知和槽響應示意如圖4所示。
當目標在預定的時間未再接收到任何更新消息,則自動從占用隊列中移除,首指針鏈接到空閑隊列,并清除該目標指向的內存地址。
3.3? 目標圖形對象創建
在接收到新建目標圖形對象請求時,根據請求中的具體數據信息,創建圖形目標對象,并根據目標顯示區域進行局部渲染,如圖5所示。
3.4? 定時刷新渲染
在場景框架中,根據當前的目標圖形對象(Graphics Object),定時檢查目標是否有關鍵數據項的變更,再決定是否重新渲染。若圖形對象對應的內存數據塊已被移到空閑隊列進行管理,則自動釋放對應的目標圖形對象,并重新渲染對應的區域。
在ADS-B二級數據中心系統中,采用該種處理模式,有效解決了在項目初期,在高頻率、大批量信息流情況下,人機界面中遇到的操作延遲、消息堵塞及刷新不及時等問題。
4? ? 結語
本文簡要介紹了ADS-B二級數據處理中心系統大批量目標顯示中應用到的相關技術,分析了多線程并發處理和異步刷新的實現流程。
[參考文獻]
[1]成潔,盧紫毅.Linux窗口程序設計:Qt4精彩實例分析[M].北京:清華大學出版社,2008.
[2]布蘭切特,薩默菲爾德.JASMIN B,MARK S.C++GUI Qt4編程[M].閆鋒欣,曾泉人,張志強,譯.北京:電子工業出版社,2013.