,,,
(華中科技大學(xué)船舶與海洋工程學(xué)院,湖北 武漢 430074)
隨著科技日新月異的進(jìn)步,有關(guān)水面無人艇的研究與應(yīng)用已成為如今的熱點[1]。作為一種擁有體積較小、目標(biāo)隱蔽、航行距離遠(yuǎn)和遠(yuǎn)程操控等特點的水面無人航行器,無人艇越來越受到青睞,在海洋資源探測、水質(zhì)檢查和軍事應(yīng)用等方面具有十分廣闊的應(yīng)用前景[2]。近年來,大部分研究都專注于無人艇的各種控制算法[3],在實際監(jiān)控系統(tǒng)應(yīng)用方面的成熟方案展現(xiàn)較少[4]。事實上,除了控制算法,無人艇的監(jiān)控系統(tǒng)也是極其重要的組成部分。作為無人艇的控制中心,監(jiān)控系統(tǒng)需要實時接收無人艇上PLC傳出的GPS數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理、采集和存儲,并將其顯示在人機(jī)交互面板上。同時還需要下達(dá)各項控制功能的指令,如實時調(diào)速、手動控制、實時控制和規(guī)劃控制等。為了完成以上的控制功能,本文專門開發(fā)了相應(yīng)的監(jiān)控軟件,該軟件基于LabVIEW程序開發(fā)環(huán)境,使用圖形化編輯G語言進(jìn)行軟件開發(fā)。
系統(tǒng)總體架構(gòu)如圖 1所示,主要分為2個部分,分別是岸站部分和無人艇部分。
圖1 水面無人艇系統(tǒng)結(jié)構(gòu)
無人艇部分包括下位機(jī)、推進(jìn)器控制器、水下電動雙推進(jìn)器、GPS接收器、POE交換機(jī)和無線網(wǎng)橋等通訊設(shè)備[5]。下位機(jī)與GPS接收器通過RS232串口進(jìn)行連接,與無線網(wǎng)橋通過POE交換機(jī)進(jìn)行數(shù)據(jù)交換,設(shè)備之間通過RJ45串口進(jìn)行連接。
岸站部分包括上位機(jī)、GPS接收器、POE交換機(jī)和無線網(wǎng)橋等通訊設(shè)備。岸站部分的設(shè)備串口連接方式與無人艇部分相同。
由圖1可知,無人艇監(jiān)控軟件在系統(tǒng)中處于重要位置,是上位機(jī)和下位機(jī)、岸站與無人艇之間溝通的橋梁。本文中,上位機(jī)監(jiān)控軟件基于LabVIEW開發(fā)環(huán)境,聯(lián)動的地圖軟件基于GMap.net,下位機(jī)為西門子S7-1200PLC。上位機(jī)與下位機(jī)的數(shù)據(jù)通信方式采用無線通信,當(dāng)前主流的無線通信方式主要有移動4G網(wǎng)絡(luò)通信、無線電通信、無線局域網(wǎng)通信和衛(wèi)星通信等,這里選擇WLAN通信即無線局域網(wǎng)。
下位機(jī)PLC通過GPS接收器獲取當(dāng)前無人艇的GPS數(shù)據(jù),與監(jiān)控軟件通過Modbus協(xié)議進(jìn)行數(shù)據(jù)傳輸,上下位機(jī)的通信網(wǎng)絡(luò)通過無線網(wǎng)橋組建成無線局域網(wǎng)。監(jiān)控軟件將得到的GPS信號進(jìn)行處理,獲得無人艇當(dāng)前的各項參數(shù),如經(jīng)度值、緯度值、航向和航速,并顯示在LabVIEW程序的交互面板中供操作員進(jìn)行查看。除此之外,監(jiān)控軟件會響應(yīng)操作員的各項交互動作給下位機(jī)PLC傳輸控制命令,下位機(jī)PLC根據(jù)接收的數(shù)據(jù)對推進(jìn)器控制器輸入相應(yīng)模擬量值,以實現(xiàn)對水下電動雙推進(jìn)器的控制,如正轉(zhuǎn)、反轉(zhuǎn)和調(diào)速控制等。在上位機(jī)中,監(jiān)控軟件將獲取的經(jīng)緯度值通過TCP協(xié)議傳輸給地圖軟件,地圖軟件根據(jù)傳輸?shù)淖鴺?biāo)值,實時更新無人艇在地圖上的位置。
為了滿足監(jiān)控軟件在系統(tǒng)中的功能和定位,軟件系統(tǒng)主要劃分為交互面板和后臺管理,如圖2所示。其中,交互面板主要用于實現(xiàn)無人艇各項參數(shù)顯示以及無人艇操控,后臺管理主要進(jìn)行數(shù)據(jù)采集與處理及數(shù)據(jù)通信。
圖2 水面無人艇監(jiān)控軟件結(jié)構(gòu)
1.2.1 無人艇參數(shù)設(shè)置顯示
交互面板上需要輸入設(shè)置無人艇的IP地址、艇號和PID值等基本參數(shù),導(dǎo)入無人艇操控路徑規(guī)劃功能的路徑文件。當(dāng)監(jiān)控軟件與下位機(jī)通信連接完成時,交互面板上有關(guān)無人艇的各項參數(shù)將實時更新,如無人艇經(jīng)緯度值、無人艇航向、無人艇航速和下一目標(biāo)點的經(jīng)緯度值。當(dāng)使用不同操控模式時,軟件會實時更新當(dāng)前軌跡點序號以及離下一軌跡點的距離等。
1.2.2 無人艇遠(yuǎn)程操控
在交互面板上,操作員可以選擇不同的操控模式。手動控制模式可以手動控制無人艇前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)。實時模式下,通過與地圖軟件聯(lián)動實現(xiàn)對無人艇定點航行控制。操作員首先在地圖軟件上確定航行目的點,監(jiān)控軟件獲取該點坐標(biāo),控制無人艇航行至該點。路徑規(guī)劃模式下,監(jiān)控軟件讀取導(dǎo)入的路徑文件,根據(jù)文件中路徑規(guī)劃點的經(jīng)緯度值,控制無人艇按路徑規(guī)劃點順序依次航行。在3種控制方式中,操作員可以隨時手動改變水下電動雙推進(jìn)器的轉(zhuǎn)速。
1.2.3 數(shù)據(jù)采集與處理
監(jiān)控軟件作為數(shù)據(jù)交換的樞紐,需要對輸入和輸出的各項數(shù)據(jù)進(jìn)行采集和處理。監(jiān)控軟件接收地圖軟件傳入的數(shù)據(jù)包,經(jīng)過數(shù)據(jù)處理將數(shù)據(jù)包字符串轉(zhuǎn)換和分解為單個的數(shù)據(jù)。同時,將無人艇當(dāng)前的各項參數(shù)數(shù)據(jù)打包成數(shù)據(jù)幀傳輸給地圖軟件。
同上,監(jiān)控軟件讀取下位機(jī)的各項數(shù)據(jù),將其處理并轉(zhuǎn)換成方便交互面板顯示和后臺處理計算的數(shù)據(jù)格式。同時,將各項操作指令轉(zhuǎn)換成數(shù)據(jù)形式發(fā)送給下位機(jī),實現(xiàn)對無人艇的控制。
1.2.4 數(shù)據(jù)通信
監(jiān)控軟件數(shù)據(jù)通信分為2部分,分別是與地圖軟件通信、與下位機(jī)PLC通信。地圖軟件和監(jiān)控軟件通過TCP協(xié)議進(jìn)行數(shù)據(jù)包的傳輸和接收。下位機(jī)PLC和監(jiān)控軟件通過Modbus協(xié)議進(jìn)行數(shù)據(jù)交互。
無人艇監(jiān)控軟件基于LabVIEW進(jìn)行開發(fā),該開發(fā)平臺通過框圖和節(jié)點形式代替文本進(jìn)行編程,使得程序開發(fā)過程更加直觀便于理解。
由于本監(jiān)控軟件在系統(tǒng)中的數(shù)據(jù)通信分為2部分,所以這里采用并行循環(huán)[7]的設(shè)計方式,將與地圖軟件和下位機(jī)PLC的數(shù)據(jù)通信在并行的循環(huán)中進(jìn)行編程。2個并行運(yùn)行的循環(huán)定時器設(shè)定為200 ms運(yùn)行1次。其他事件處理交由具體事件循環(huán)結(jié)構(gòu)體進(jìn)行處理,比如界面數(shù)值初始化等事件。
在與地圖軟件通信的循環(huán)結(jié)構(gòu)中,監(jiān)控軟件主要完成對該部分的數(shù)據(jù)處理并將相應(yīng)參數(shù)顯示在交互面板上。監(jiān)控軟件把從下位機(jī)得到的處理后的無人艇經(jīng)緯度值、航向值和航速值數(shù)據(jù),與數(shù)據(jù)包長度值、標(biāo)志位值和命令類型值一起打包傳給地圖軟件。對接收到的地圖軟件的數(shù)據(jù)包進(jìn)行解包,根據(jù)標(biāo)志位值,獲取航行目的點的經(jīng)緯度值,并賦值給交互界面的顯示控件。
在與下位機(jī)通信的循環(huán)結(jié)構(gòu)中,監(jiān)控軟件與下位機(jī)通過LabVIEW封裝好的Modbus控件建立通信,讀取下位機(jī)保持寄存器中的無人艇經(jīng)緯度值、無人艇航向和航速等航行信息。由于保持寄存器傳輸?shù)缴衔粰C(jī)的數(shù)據(jù)格式是字,所以需要經(jīng)過數(shù)據(jù)處理之后再賦值給對應(yīng)的顯示控件,并同時將這些值寫入本地的文件中,記錄無人艇運(yùn)行時的各項基本參數(shù)。
監(jiān)控軟件將當(dāng)前選擇的控制模式、艇號、PID參數(shù)和水下電動雙推進(jìn)器轉(zhuǎn)速等值寫入下位機(jī)。同時,根據(jù)不同的控制模式,選擇不同的控制循環(huán)結(jié)構(gòu)。
手動控制模式下,操作員根據(jù)手動按鈕的選擇寫入控制指令值到下位機(jī)的多個線圈,進(jìn)而控制無人艇的前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)。
實時控制模式下,監(jiān)控軟件會在相應(yīng)的控制循環(huán)結(jié)構(gòu)中計算航行目的點與當(dāng)前位置的距離值,并賦值給交互界面上對應(yīng)的顯示控件。如圖3所示。同時,監(jiān)控軟件會將目的點經(jīng)緯度處理后傳遞給下位機(jī)PLC,控制無人艇自動航行到該點。
圖3 實時控制框圖代碼(部分)
路徑規(guī)劃控制模式下,監(jiān)控軟件會在對應(yīng)的控制循環(huán)結(jié)構(gòu)中讀取本地路徑文件中的路徑點經(jīng)緯度值,同時計算當(dāng)前位置與下一路徑點距離值,賦值給相應(yīng)的顯示控件。如果當(dāng)前距離值小于5,則會自動切換至下一路徑點。如圖4所示。最終控制無人艇沿規(guī)劃好的路線航行,直至最后一個路徑點。
圖4 路徑規(guī)劃控制框圖代碼(部分)
最終開發(fā)出的無人艇監(jiān)控軟件如圖5所示。由圖5可知,無人艇監(jiān)控軟件的交互面板主要分為3部分,分別是參數(shù)輸入控件、參數(shù)顯示控件和控制控件。
圖5 無人艇監(jiān)控軟件交互面板
參數(shù)輸入控件主要有無人艇IP地址、艇號、PID參數(shù)輸入以及路徑規(guī)劃文件導(dǎo)入。操作員在使用本監(jiān)控軟件時,首先需在輸入控件中輸入 IP地址和艇號,以便與地圖軟件以及下位機(jī)完成通信連接。同時,在使用路徑規(guī)劃功能前,需要提前導(dǎo)入相應(yīng)的路徑規(guī)劃文件,否則監(jiān)控軟件會報錯。
當(dāng)操作員設(shè)置好各項參數(shù)并啟動后,監(jiān)控軟件會實時讀取當(dāng)前無人艇的經(jīng)緯度、航向和航速,并顯示在對應(yīng)的控件中。軟件默認(rèn)的控制方式是手動模式。
當(dāng)操作員拖動控制方式滑塊至手動擋位時,此時可以點擊右下角的手動操控按鈕,實時控制無人艇的前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)。
當(dāng)滑塊處于實時控制擋位時,操作員在配套的地圖軟件中選擇航行目的點,此時監(jiān)控軟件通過與地圖軟件的通信獲取該點的經(jīng)緯度值,計算當(dāng)前位置與目的點的距離,并顯示在當(dāng)前交互面板。此時無人艇將會根據(jù)兩點的位置,進(jìn)行自動航行,直至到達(dá)標(biāo)記的目的點。
當(dāng)滑塊處于路徑規(guī)劃控制擋位時,操作員需要提前導(dǎo)入路徑規(guī)劃文件,否則軟件無法正常運(yùn)行。當(dāng)路徑規(guī)劃控制成功運(yùn)行時,無人艇會根據(jù)路徑規(guī)劃文件中的路徑點經(jīng)緯度值,按順序進(jìn)行航行,直至到最后一點。在此過程中,監(jiān)控軟件也會實時計算離下一點的距離,顯示在交互面板的控件中。
監(jiān)控軟件正常運(yùn)行的時候,能夠隨時對無人艇的水下電動雙推進(jìn)器轉(zhuǎn)速進(jìn)行調(diào)整。操作員通過移動轉(zhuǎn)速滑塊至所需轉(zhuǎn)速值,實現(xiàn)對無人艇航速的實時控制。同時,監(jiān)控軟件實時采集無人艇的各項參數(shù),保存至本地文件,以供后續(xù)數(shù)據(jù)分析。
為了驗證本軟件的可用性,首先在岸上對整個系統(tǒng)進(jìn)行調(diào)試。經(jīng)過基本調(diào)試后,監(jiān)控軟件與地圖軟件和下位機(jī)PLC的通訊正常,能夠進(jìn)行數(shù)據(jù)交互,實現(xiàn)基本的定位、狀態(tài)顯示、調(diào)速和手動控制功能。而實時控制和路徑規(guī)劃控制功能需要下水試驗,才能判斷監(jiān)控軟件的控制功能是否滿足系統(tǒng)需求。
調(diào)試結(jié)束后,本系統(tǒng)首先在華中科技大學(xué)喻家湖湖區(qū)進(jìn)行水面航行試驗。經(jīng)測試,監(jiān)控軟件的實時控制功能與路徑規(guī)劃功能都能滿足系統(tǒng)需求,能夠成功遠(yuǎn)程控制無人艇航行到目的點或者沿多個路徑點航行。試驗現(xiàn)場如圖6所示。
為了進(jìn)一步驗證海上航行情況下該軟件的實用性,本無人艇參與了2019中國智能船艇“海上爭霸”挑戰(zhàn)賽的A/B組——自主繞標(biāo)賽。此比賽場地位于山東日照東港區(qū)萬平口瀉湖附近海域,能夠驗證本軟件的各項控制功能以及通訊是否正常。試驗照片如圖7所示。
圖6 喻家湖水面航行試驗
圖7 山東日照海上航行試驗
a.無人艇系泊試驗。參賽無人艇處于系泊狀態(tài),此時監(jiān)控軟件的各項通訊功能良好,能夠?qū)崟r顯示當(dāng)前無人艇所處的位置、航向和航速,經(jīng)地圖軟件驗證,航向正確,位置誤差小于1 m。此時可以對無人艇進(jìn)行手動控制,點擊監(jiān)控軟件的手動控制按鈕,能夠遙控?zé)o人艇實現(xiàn)前進(jìn)、后退、左轉(zhuǎn)和右轉(zhuǎn)的基本操作。
b.無人艇實時控制試驗。解除當(dāng)前無人艇的系泊狀態(tài),手動控制無人艇離港。操作員移動控制方式滑塊至實時控制擋位,在地圖上選定目的點,監(jiān)控軟件成功獲取該點的經(jīng)緯度坐標(biāo),并自動向該點航行。此時交互面板上的無人艇經(jīng)緯度、航向、航速和實時點距離都會在無人艇航行過程中改變。操作員拖動轉(zhuǎn)速滑塊,能夠明顯觀測到無人艇航速發(fā)生變化。當(dāng)實時點距離小于設(shè)定的5 m距離時,無人艇減速至停止航行。
c.無人艇路徑規(guī)劃控制試驗。提前導(dǎo)入路徑規(guī)劃文件,在手動控制無人艇離港后設(shè)置控制擋位為路徑規(guī)劃控制。此時無人艇自動航行至路徑規(guī)劃文件中的第1個點,當(dāng)規(guī)劃點距離控件的值小于設(shè)定值5 m時,自動切換下一路徑點的經(jīng)緯度值,并顯示在交互面板的目的經(jīng)緯度控件中。此時當(dāng)前軌跡點的數(shù)字自動加2,表示切換至下一組經(jīng)緯度。在航行過程中,手動拖動轉(zhuǎn)速滑塊,能夠?qū)崟r改變無人艇航速。
整個試驗過程中,無人艇監(jiān)控軟件各項控制功能正常,通訊正常,驗證了其在海面環(huán)境下的控制可靠性。
由于比賽中需要穿越橋墩,而無人艇在橋下無法正常接收到GPS信號,因此監(jiān)控軟件的實時控制和路徑規(guī)劃控制無法正常使用。因為在橋下GPS信號會隨機(jī)跳轉(zhuǎn)或者接收到無效GPS信號。如果GPS信號隨機(jī)跳轉(zhuǎn),在路徑規(guī)劃控制過程中,恰好跳轉(zhuǎn)到下一目的點5 m內(nèi)的距離,此時判定已經(jīng)到達(dá)該點則會自動切換至下一點,導(dǎo)致路徑規(guī)劃控制失敗。如果接收到無效信號,監(jiān)控軟件進(jìn)行處理后得到的目的點坐標(biāo)值為該區(qū)域的基準(zhǔn)點坐標(biāo)即為(119,35)。此時計算出的離下一點距離與監(jiān)控軟件設(shè)定最大航行距離發(fā)生沖突,監(jiān)控軟件會判斷無人艇即將超出控制距離并使其停止航行。因此,調(diào)整監(jiān)控軟件的GPS信號處理部分,使其只有接收到正常GPS信號時才改變當(dāng)前無人艇位置經(jīng)緯度值。
經(jīng)過程序改進(jìn)之后的監(jiān)控軟件采用實時與路徑規(guī)劃雙工控制方式,實現(xiàn)了無人艇的繞橋墩航行,成功沿著要求路徑實現(xiàn)變速航行,最終完成競賽,并且實時采集了航行過程中的無人艇經(jīng)緯度值、航速與航向(部分?jǐn)?shù)據(jù)如表1所示)。
表1 監(jiān)控軟件采集的無人艇GPS信息
提取該數(shù)據(jù)的經(jīng)緯度值部分,剔除GPS信號誤差較大的無效值,生成散點圖如圖8所示。
圖8 無人艇航行軌跡
將圖8和比賽參考路徑圖9相比較,可知軌跡基本相同。由于在橋下無法獲得GPS信號,所以橋下并沒有采集到經(jīng)緯度坐標(biāo)值。由上文試驗實際情況與采集的數(shù)據(jù)可知,本監(jiān)控軟件對無人艇的實時狀態(tài)觀測和遠(yuǎn)程控制良好,能夠?qū)崿F(xiàn)各項基本的控制功能,與地圖軟件以及下位機(jī)通訊正常,實時采集和存儲數(shù)據(jù)功能正常。
圖9 比賽參考軌跡圖
本文設(shè)計并開發(fā)了一種無人艇監(jiān)控軟件系統(tǒng),對該軟件系統(tǒng)的設(shè)計、開發(fā)實現(xiàn)以及應(yīng)用進(jìn)行了詳細(xì)闡述。通過湖面以及海面的各項試驗,結(jié)果證明了該軟件對無人艇具有可靠的監(jiān)控能力和良好的通訊效果,能夠?qū)崿F(xiàn)手動控制、實時控制、路徑規(guī)劃控制和適時調(diào)速等多種控制功能。
隨著研究的深入,將在已有的軟硬件架構(gòu)上繼續(xù)完善控制系統(tǒng)。對當(dāng)前無人艇監(jiān)控軟件進(jìn)行擴(kuò)展,從單艇監(jiān)控至雙艇甚至多艇監(jiān)控。最后實現(xiàn)對無人艇集群系統(tǒng)的監(jiān)控功能。