范 米,程小勁*,曹建東,賀 巖
(1.上海工程技術大學 機械與汽車工程學院,上海 201620;2.中國科學院 上海光學精密機械研究所,上海 201800)
海洋激光雷達探測技術是海洋應用中一種基于藍綠激光的先進探測技術,相較于傳統(tǒng)聲納探測技術而言,海洋激光雷達探測范圍比較小,但是由于激光的高亮度、方向性好、高相干性、傳播速度快等特點,它的探測效率以及探測點密度較高,因此在海水較淺的區(qū)域具有其獨特的優(yōu)勢[1]。
海洋激光雷達探測技術起源于20世紀60年代末,Syracuse大學的研究人員完成了激光海水深度測量系統(tǒng)的搭建,并初步驗證了激光測深的可行性[2]。1970到1990年間,海洋激光雷達探測技術的相關研究主要側重于實驗系統(tǒng),1980年,美國NASA研制了機載水文激光雷達AOL(airborne oceangraphic),采用重頻為400 Hz,功率為2 kW的氦氖激光器,成功繪制出深度小于10 m的海底地貌[3]。同年,澳大利亞的研究人員研制了WRELADS系統(tǒng),在平均衰減系數為0.23的水域,可測深度為30 m[4]。1981年,瑞典的研究人員成功研制了機載的FLASH系統(tǒng),在衰減系數為0.6的水域,可測深度為35 m[5]。隨著技術的逐漸成熟,海洋激光雷達從實驗室走向商業(yè)應用,1994年,美國擁有了實用型的水文勘測系統(tǒng)SHOALS,采用綠光與紅外光共線掃描的方式,獨立的紅外和拉曼海面通道實現了20°天頂角以內的精確定位[6]。而瑞典將FLASH系統(tǒng)升級為了HAWK EYE系統(tǒng),進一步實現了全波形數據實時存儲,提高了采樣頻率、GPS定位精度、掃描精度[7]。同時,澳大利亞也將WRELADS升級為了LADS實用機載激光水文勘測系統(tǒng),測深范圍為2 m~50 m[8-9]。國內相關方面的研究起步較晚,80年代末開始研制機載海洋激光雷達系統(tǒng),并于90年代成功進行了海上實驗。近些年在國家相關項目的資助下,由中國科學院上海光學機械精密研究所研發(fā)出了機載雙頻雷達Mapper5000,測深范圍為0.25 m~51 m,各項技術指標,如測深能力、精度、掃描角度等,與目前國際上主要的機載激光測深系統(tǒng)接近[10]。
隨著雷達系統(tǒng)技術的發(fā)展,以“硬件為核心,面向專項功能”的傳統(tǒng)雷達系統(tǒng)正逐步轉向以“軟件技術為核心,面向實際需求”的雷達系統(tǒng),優(yōu)秀的激光雷達系統(tǒng)軟件,不僅需要提供友好的交互操作,還能夠提升雷達系統(tǒng)的自動化水平和信息化水平[11]。該文針對水下激光雷達系統(tǒng)開發(fā)項目軟件控制系統(tǒng)的需求,利用多線程實現了一套海洋激光雷達系統(tǒng)控制軟件的設計,并根據所采集的水體回波信號進行了濾波分析。
典型海洋激光雷達系統(tǒng)硬件組成如圖1所示,主要包括:激光器、電機、ARM工控板、硬盤、4通道高速AD采集卡、現場可編程門陣列(FPGA)擴展板、溫度傳感器、深度傳感器、姿態(tài)傳感器、溫濕度傳感器以及光電倍增管(PMT),其中PMT1、PMT2接收近場回波信號,PMT3、PMT4為門控型PMT,用于接收遠場回波信號。電腦(PC)、高速AD采集卡以及工控板通過交換機進行通信。以下將高速AD采集卡、FPGA擴展板一并稱為FPGA。FPGA主要實現以下功能:通過RS232串口轉發(fā)PC下發(fā)的指令以控制激光器、電機;設置PMT高壓(增益)、采樣參數,為激光器提供外觸發(fā)模式下的重頻和調Q信號,以及進行采樣控制、存儲控制;上傳設備狀態(tài)、AD采樣數據、指令計數以及傳感器數據。工控板與深度傳感器、溫濕度傳感器以及姿態(tài)傳感器采用RS232串口進行通信,溫度傳感器則是連接到工控板的12位ADC轉換的引腳。工控板定時采集各個傳感器的數據,并將各傳感器數據以結構體的形式進行封裝,其中包括了工控板GPS(global positioning system)周和秒,通過RS232串口一并發(fā)送到FPGA,由FPGA上傳。為確保工控板系統(tǒng)時間與PC系統(tǒng)時間的一致性,與PC通過UDP實現了時間同步功能。
圖1 海洋激光雷達系統(tǒng)硬件組成
根據系統(tǒng)的硬件組成和控制功能的需求,將系統(tǒng)控制軟件設計分成通信協(xié)議設計、功能模塊設計、多線程設計和界面設計四個部分。
系統(tǒng)基于UDP實現網絡通信,相較于TCP(transmission control protocol),UDP具有程序結構簡單、速度快等優(yōu)點,UDP協(xié)議的報文格式由幀頭、指令計數、指令、包號、數據長度、數據、和校驗以及幀尾組成。幀頭、和校驗以及幀尾用于判斷幀的正確性;幀計數用于記錄軟件發(fā)送幀的次數;幀中數據長度為有效數據長度,數據區(qū)大小為定值,未使用部分以0填充,當數據超過最大長度時,將利用包號對數據進行分幀以及組合處理[12]。
為了提高UDP協(xié)議的可靠性,采用了停止等待的自動重傳請求(stop-and-wait automatic repeat-request,SW_ARQ)協(xié)議保障數據傳輸的可靠性,基本思路為:發(fā)送方每一次發(fā)送完一個數據幀時,同時設置定時器,等待接收方收到的回復確認后,再進行下一次發(fā)送,如果接收方回復為錯誤數據幀或者在定時時間內無返回時,則發(fā)送方重新發(fā)送。
模塊劃分對軟件設計起著非常重要的作用,良好的模塊劃分具有諸多優(yōu)點:使程序設計更加清晰,提高程序編寫效率;對模塊進行單元測試,可以增加程序穩(wěn)定性;便于對某個功能的維護、修改,甚至是未來功能的擴展[13]。針對項目需求,將功能劃分為7個模塊:(1)激光器模塊:激光重頻、電流、外觸發(fā)參數設置以及出關光、錯誤復位、狀態(tài)查詢功能;(2)電機模塊:電機初始化功能(電機光學歸零,即光學窗口出射中心點),并提供了兩種工作模式(基于光學零位,根據當前折射率進行電機角度轉換后的定位模式和掃描模式),同時還可以設置電機轉動速度;(3)擴展板模塊:PMT高壓(增益)設置以及門控型PMT偏移時間設置;(4)采樣模塊:采樣參數設置,包括采樣長度、抽樣頻率、提取起始點以及提取長度。采樣時,可以選擇是否將將AD預覽數據以及當前設置參數保存至當地文件,以便于后續(xù)處理;(5)硬盤存儲模塊:通過檢索硬盤空閑區(qū)域,可以將AD數據存儲至硬盤,后續(xù)可以使用硬盤回收功能將數據進行回收至本地;(6)圖形顯示模塊:可以根據通道勾選情況,實時顯示多個通道的AD采樣波形,并提供了坐標軸范圍、自動調整坐標軸設置、水體回波信號濾除功能以及根據折射率進行的坐標軸變換功能;(7)信息顯示模塊:可以顯示時間、計數、電機、激光器、傳感器等狀態(tài)信息,并提供了時間同步功能(精確到秒)。
在進行耗時操作(處理大量數據)時,避免用戶界面失去響應[14],軟件采用如圖2所示的多線程設計,主要劃分為:主界面線程、數據幀封裝線程、UDP發(fā)送線程、UDP接收線程、數據幀解析線程以及AD數據解析線程。
圖2 多線程設計框架
主界面線程為人機交互界面,可以通過按鍵實現對設備的控制、狀態(tài)監(jiān)測,采樣參數設置,對AD采樣數據進行本地存儲或硬盤存儲,硬盤數據回收,預覽AD采樣波形以及濾除AD采樣波形背景,實現與工控板實現時間同步等功能。數據幀封裝線程將待發(fā)送指令以及數據進行封裝,然后通過UDP發(fā)送線程到FPGA,由FPGA進行轉發(fā)或處理,并回復。UDP接收線程接收FPGA回發(fā)的數據幀,通過數據幀解析線程,對接收的數據幀進行解析與驗證,根據解析的指令做相應的處理,包括:將傳感器參數以及設備狀態(tài)等參數提交到主界面線程以更新界面信息,AD采樣數據存儲至本地以及提交到AD數據解析線程,經由AD數據解析線程解析后,再提交到主界面線程以預覽AD采樣波形。
為了實現系統(tǒng)的人機交互操作,根據系統(tǒng)的功能劃分,設計了如圖3所示的系統(tǒng)界面。界面的左邊為控制部分,主要控制激光器、電機、擴展板、采樣和硬盤。界面的中間為波形顯示部分,可以設置坐標軸、設置折射率、坐標軸轉換、背景波形濾除和選擇顯示通道。界面的右邊為狀態(tài)參數顯示部分,主要包括采樣參數、時間同步和狀態(tài)信息。
圖3 用戶界面
根據系統(tǒng)的功能要求和模塊設計,該系統(tǒng)可以實現電機角度轉換、坐標軸變換、時間同步以及水體回波信號濾除等功能。
海洋激光雷達在水下進行工作時,如圖4所示,出射激光經過反射鏡后,通過光學窗口出射,激光實際出射角度會因為介質的折射率不同而發(fā)生變化,為便于用戶設置激光實際的出射角度,通過用戶對折射率的設置,對電機轉動角度做了相應的轉換。
iairsinθair=iwatersinθwater
(1)
其中,iair、iwater分別為空氣折射率和水的折射率,θair、θwater分別為激光出射角度以及激光的實際出射角度。根據式(1),即可得到實際電機定位的角度θair?;谏鲜龉?,在本系統(tǒng)中電機可轉動±15°,而在折射率為1.33的淡水中,實際從光窗出射的角度為±11.5°。
圖4 出射光路示意圖
AD原始數據為采樣時間點以及采樣點值,單位采樣時間點代表1 ns,單位采樣點值代表2.44 mV。為了使用戶可以更加直觀地獲取采樣的距離和幅值信息,軟件提供了坐標軸變換功能,橫坐標可以在采樣時間和采樣距離之間切換,同樣,縱坐標也可以在采樣點值和采樣幅值之間變換,采樣距離實際距離與水的折射率有關,采樣距離與采樣時間點的轉換可由式(2)、式(3)導出。
vwater=clight/iwater
(2)
d=vwater*t/2
(3)
其中,vwater為激光在水中的傳播速度,clight為光速,t為激光往返時間,d為激光距離。
AD數據包含的時間信息由工控板提供,而PC與工控板的時間不一定具有同步性,這樣會導致進行采樣操作時的時間與保存的AD數據時間信息不一致,所以需要對PC和工控板進行時間同步。基于網絡時間協(xié)議NTP(network time protocol)思想[15],如圖5所示,由PC發(fā)送消息,通知工控板準備進行時間同步。工控板回復PC時,將工控板當前系統(tǒng)時間t1存入數據幀。經過網絡時延δ,由PC接收,接收時將系統(tǒng)時間t2存入,發(fā)送時將系統(tǒng)時間t3存入。經過網絡時延δ,工控板接收到時,取系統(tǒng)時間t4。將以上時間參數代入式(6)計算,即可獲得工控板與PC的時間差,實現時間同步。
圖5 時間同步
設PC與工控板相差時間為Δ,則可得到如下關系式:
t2=t1+δ+Δ
(4)
t3=t4-δ+Δ
(5)
由式(4)、式(5)推導可得時間差:
Δ=[(t2+t3)-(t1+t4)]/2
(6)
對AD數據進行解析后,獲取的波形如圖6(b)所示,該波形具有兩個波峰,第一個為水體回波信號,第二個為目標回波信號。用戶可以在當前環(huán)境下以及配置參數下,先采樣獲取水體回波信號(見圖6(a)),將文件保存至本地,再讀入該文件,軟件將對水體回波信號保存多次平均后的數據結果,再對目標進行采樣,通過水體回波信號濾除功能將采樣數據與之前保存的環(huán)境水體回波數據相減,即可獲取目標回波信號(見圖6(c))。
(a)水體回波信號
(b)總回波信號
(c)濾除后的目標信號
軟件控制在激光雷達系統(tǒng)中發(fā)揮著越來越重要的作用,該文在搭建完海洋激光雷達硬件系統(tǒng)的基礎上,通過軟件實現了對海洋激光雷達系統(tǒng)相關設備的可靠控制、狀態(tài)參數的監(jiān)測、以及AD數據處理與波形顯示。接下來將從兩個方面對軟件控制系統(tǒng)進行優(yōu)化,一方面通過預存儲技術,通過將數據預先存入容器中,再由專門的線程進行寫入本地文件,從而提高處理速度,進而實現實時本地存儲。
另外在波形預覽方面,可以進一步采用時間累積的方式實現偽彩色圖像,進而更加直觀地觀測到目標距離的變化。