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