張本任,熊 勇,張 加,余嘉俊,劉鴻濤
(武漢理工大學 航運學院,湖北 武漢 430063)
水面無人艇(USV)[1]相較于傳統水上載運工具的優點主要是可實現遠程無人控制,并且可以在不適宜人長期作業的工作環境中執行任務,在水深測量、環境監控、打撈搜救、環境保護等方面已得到廣泛應用,且無論在軍用或者民用、大型水域或者小型水域都具有廣闊前景。
無人艇在技術設計方面囊括了船舶結構設計、運動控制算法設計、遠程通信、信號處理和分析以及探測勘察等專業相關知識,其智能化程度和應用擴展性等決定了無人艇在實際工程中應用的可能性[2 – 3],而無人艇最核心的部分就是它的自主控制系統,因此研究并設計出無人艇控制系統使之在實際工程中發揮作用具有重要意義。
目前國內對無人艇自主控制系統的研究,大部分停留在理論研究階段,主要集中在仿真或半實物仿真層面[4],采用實艇[5]并以集成芯片作為控制系統[6]的研究較少,一般的無人艇控制系統設計方案所需成本很高,無人艇造價昂貴且一般控制系統硬件集成度不高,同時也存在開發周期較長等問題。針對這一情況,本文介紹一種Arduino開發環境下的無人艇控制系統,該系統集成了多傳感器和GPRS無線網絡通信模塊,具有運動控制、全球定位系統(Global Positioning System, GPS)導航定位、路徑規劃、自動避碰以及無線網絡控制等功能,可以在水面環境上執行各種特定的任務。整套系統硬件成本較低、集成度高且可擴展性能好。
設計的無人艇控制系統由船載設備端和網絡控制端兩大部分構成,其中船載設備端由船體、集成控制板和其他模塊組件組成,網絡控制端包括運動控制界面、功能選擇界面、參數顯示界面和地圖界面。
無人艇船載端中的集成控制模塊作為控制系統的核心,通過利用GPRS無線通信技術,在3G/4G網絡環境下,使用指定的傳輸協議,與網絡控制端建立通信鏈路。
無人艇控制系統涵蓋硬件和軟件2部分:硬件部分以微控制單元 (Micro-controller Unit, MCU)為核心,包括具有環境感知、信號采集等功能的傳感元器件,通過集成各模塊和元器件完成硬件部分的搭載;軟件部分包括信號處理、運動控制、路徑規劃與自動避障算法等,通過編程加以實現。

圖 1 無人艇控制系統圖Fig. 1 USV control system
無人艇控制系統的主控單元采用At Mega 2560單片機,電路板具有54路數字(DIGITAL)輸入/輸出端(其中16路可作為PWM輸出)、16路模擬輸入(ANALOG IN)端、4路UART接口,以及USB接口和電源接口等[7]。
Arduino開源電子開發設計平臺包括硬件和軟件2部分:硬件電路部分集成Atmel AVR單片機、I/O接口等,軟件部分包括Arduino集成開發環境(Integrated Development Environment,IDE),通過 USB 線將控制代碼上傳到控制板,編程語言類似C/C++和Java[8]。
AVR單片機相關的部分寄存器參數設置在Arduino集成開發環境中都進行了封裝函數化,具有如EEPROM、舵機等控制程序庫,延時、數據讀寫、中斷等都被模塊化封裝成若干子函數可供調用,所以不需要用戶直接處理底層系統,可以把重點放在上層算法和邏輯上,提高應用程序的開發效率,縮短無人艇控制系統的開發周期。
利用Altium Designer軟件進行電路原理圖設計和印制電路板 ( Printed Circuit Board, PCB)設計,最終印制出無人艇控制系統集成電路板。PCB集成了包括微控制單元(At Mega 2560單片機)、穩壓電源模塊、USR-GM3P模塊、JY901慣性導航模塊,以及GPS、超聲波傳感器、模擬引腳、數字引腳、USB等接口,各個模塊和元器件可以通過直插的方式連接到PCB板上。將各模塊和接口集成后,減小了無人艇控制系統的空間體積,節省了設備安裝的人力和時間,提高了整體的工作效率。

圖 2 PCB 結構圖Fig. 2 PCB block diagram
集成控制板和船體外殼采用高密封防水材料,所有外接口線路采用防水套件加固,保證防水性能的同時提高野外抗干擾能力,達到NEMA4X、IP65 防護等級。

表 1 無人艇參數Tab. 1 Parameters of USV
本控制系統的動力裝置采用電動船用推進器,通過雙路電機驅動模塊帶動2個功率約1 000 W的直流無刷電機運轉,12 V電源供電,控制信號為0~5 V的TTL電平。電源輸入范圍在12~48 V之間,電機輸出的額定電流達100 A,峰值電流可達260 A。模塊具有10 M高速光耦隔離,可有效隔離對控制板的信號干擾。

圖 3 動力裝置組件Fig. 3 Practicality picture of drive element
VCC輸入電壓通過轉換后分別輸出到A1,A2和B1,B2管腳給電機A和B的接口,通過控制電平信號高低可控制2個電機的旋轉方向,通過控制PWM值在0~255之間變化可控制電機的轉速,從而控制無人艇的航行方向與航行速度。
控制系統的通信功能由GPRS模塊實現,GPRS模塊采用有人物聯網公司生產的型號為USR-GM3P透傳模塊。通過設置網絡透傳模式相關參數,即可將有線的串口通信轉為無線的網絡通信,實現GPRS模塊與網絡端雙向透明傳輸。模塊提供接口包括電源輸入/輸出、UART、SIM卡槽、射頻天線等,模塊原理圖如圖4所示。

圖 4 GPRS 模塊原理圖Fig. 4 GPRS module schematic diagram
GPRS模塊與MCU采用UART通用串行數據總線,單片機I/O電平為3.3 V,不需要做電平匹配,直接與 At Mega 2560 單片機的 TX1 與 RX1 連接。
2.3.1 GPS 模塊
系統采用型號為UBLOX-NEO-6M的GPS模塊實現定位功能。該GPS模塊預留有TTL接口,可以外接單片機控制接收GPS信息;并預留SMA天線接口,可使用外置陶瓷天線接收信號。
將模塊輸出的原始GPS數據,從Arduino中的串口RX中讀取出來,然后經過串口TX再發送給電腦(arduino IDE的串口監視器),顯示GPS原始幀數據。
2.3.2 慣性導航模塊
本控制系統集成了高精度慣性導航模塊JY-901,模塊涵蓋了三軸加速度計、三軸陀螺儀、三軸磁強計,采用高性能的微處理器,并集成了卡爾曼動態濾波算法,因此能夠快速測量出無人艇實時運動姿態。
JY-901模塊具有串行數據輸入和輸出接口,數據信號為TTL電平。數據通過串口3傳到MCU,通過解析后可以得到無人艇x, y, z三個方向上的加速度值、角度值和角速度值。
2.3.1 超聲波傳感器
本控制系統采用型號為HC-SR04的超聲波傳感器模塊做環境感知。控制系統集成了4個超聲波傳感器模塊,每個模塊的trig和echo接口占用At Mega 2560單片機的2個模擬口。以其中1個超聲波傳感器模塊為例,接線方式如圖5所示。

圖 5 超聲波傳感器模塊原理圖Fig. 5 Ultrasonic sensor module schematic diagram
模塊獲取數據的方式:在A0口發出一個10 μs的高電平信號后,等待A1口高電平輸出并開始計時,當下一次A1口輸出低電平時記錄下這段時間并結合聲速計算距離值。如此不斷地進行周期性測量,就可以得到移動測量的距離值。
無人艇系統的軟件部分涵蓋了運動指令函數、數據分析函數、系統辨識算法和自動避障算法等,是硬件之間相互協調配合,最終能完成相應職能的重要環節。
該系統的創新之處在于:結合網絡控制云平臺,利用GPRS的無線網絡透傳技術,使用自定義的數據傳輸協議,在3G/4G網絡環境下,可以對無人艇進行在線監控。此控制方式的優勢在于通信距離不受限制,且系統網絡通信的穩定性較好。
無人艇控制系統的軟件控制流程:網絡服務器端與At Mega 2560單片機之間通過GPRS模塊完成數據收發,由網絡控制端發送控制指令到GPRS模塊,單片機通過程序處理接受的數據信號輸出相應指令給各個執行元件;同時各執行元件、傳感器也將實時的動態參數傳給單片機,通過GPRS發送到云平臺操作界面,可以直觀顯示當前工作的位置參數、運動狀態參數等數據。
利用 Arduino 集成開發環境對 At Mega 2560 進行編程控制,軟件控制流程如圖6所示。定義各模塊管腳和系統的各參數,系統開始工作后,完成系統初始化;各傳感器和通信模塊接收的數據經過解析和數值轉換后,判斷控制端口是否接收到控制指令,如果接收到在線的控制指令則優先執行,否則判斷無線通信接口是否接收到軌跡數據,如果接收到網絡控制端發送的軌跡數據則執行相應運動控制指令完成規劃的軌跡路徑,否則更新各模塊接收的數據;利用USRGM3P模塊的無線網絡透傳方式,按照自定義數據格式將無人艇的運動參數上傳到網絡控制平臺;上傳完成后將串口數據清空,并循環上述步驟。

圖 6 地圖選點界面Fig. 6 Map selection interface
電機驅動子程序部分主要是對無人艇的運動狀態進行控制。無人艇的運動狀態包括前進,后退,向前左轉,向前右轉,原地左轉,原地右轉,停船。通過對電機驅動模塊的A1,A2,B1,B2管腳的電平高低設置實現電機的正反轉控制:同時通過PA,PB兩個PWM控制口寫入不同的占空比來對電機的轉速進行控制。
3.2.1 運動姿態
無人艇航行狀態為六自由度,需要獲取無人艇的動態參數來對其運動狀態進行控制,包括首搖、橫搖、縱搖、垂蕩、橫蕩、縱蕩6個自由度的運動參數。
JY901姿態傳感器的數據輸出采用16進制的方式,這種方法的優點是效率高,可以用很少的字節傳輸需要的數據,利用有限的帶寬傳輸大量數據。
3.2.2 經緯度
無人艇在水面航行時,需要獲取設備當前所在具體位置來對其所處環境進行監控,則需獲取設備當前所在位置的經緯度數據等。GPS模塊接收到的數據為標準NMEA-0183協議格式的數據,通過在1 s內不斷掃描GPS信息連續獲取GPS數據,再將讀到的數據中的經緯度數據從一幀完整數據中提取出來并作解析,利用解析后的數據對無人艇進行位置監測和軌跡控制等。
無人艇工作時的詳細信息,需按照規定的格式發送到網絡端進行顯示,以實時的、全方位的監控無人艇的運動狀態。按照指定格式,將數據寫入GPRS模塊對應串口1,并在主程序中循環以連續發送數據。
無人艇路徑規劃算法步驟:
1)當接收到軌跡數據時,轉到路徑規劃函數;
2)判斷障礙物標志位:如果有礙航物,則轉到自動避障函數;否則轉到步驟3;
3)當接近目標終點時,轉到終點判別函數,循環軌跡規劃函數。
HC-SR04超聲波測距模塊程序控制原理如下:
1)采用IO口TRIG觸發測距,給至少10 μs的高電平信號;
2)模塊自動發送8個40 kHz的方波,自動檢測是否有信號返回;
3)當有信號返回,通過IO口ECHO輸出一個高電平,高電平持續的時間就是超聲波從發射到返回的時間,并計算出測試距離。
無人艇船首和船尾左右兩側各放置1個超聲波探頭,其中前方左右分別為S1,S2,后方左右分別為S3,S4,通過各超聲波傳感器模塊的接收到的數據,判斷礙航物所在的方位和距離無人艇設備的距離,設計自動避障算法并根據環境信息執行相應的控制指令。
無人艇結合Arduino IDE試驗并實現了以下功能:
1)無線網絡通信功能。平臺與用戶的交互采用網站的形式,與Android系統設備之間的通信采用Windows服務,通過TCP/IP協議通信,設配端各項動態、靜態參數可以發送到云端網絡界面進行顯示,網絡控制端可以進行控制指令發送和軌跡數據發送等功能。
2)自主定位功能??蛇M行5m級誤差精度的定位并具備地圖選點功能。
3)運動控制功能。系統可執行相應的控制指令。
4)路徑規劃功能。由網絡端向設備端發送軌跡數據,無人艇按照設定路徑完成指定航行任務。
5)自動避障功能。自動識別礙航物距離,并根據自動避碰算法完成避障動作。
無人艇在武漢理工大學船舶拖曳試驗水池中進行了試驗,測試內容包括無線運動控制、動態定位、軌跡路徑控制和自動避障控制等。
無人艇路徑規劃試驗:首先在網絡控制平臺上的地圖界面中進行“地圖選點”,然后將軌跡數據通過網絡透傳方式發送到無人艇設備端;無人艇控制系統根據收到的數據完成相應的軌跡任務。測試結果表明無人艇能在0.5 s以內快速響應控制指令,丟包及誤碼率較低,網絡連接和運動狀態穩定。

圖 7 地圖選點界面Fig. 7 Map selection interface

圖 8 軌跡數據發送Fig. 8 Trajectory data transmission
基于Arduino開發環境的無人艇控制系統集成了多傳感器和動力系統,實現了無人艇船載設備端的搭建;并采用GPRS模塊作為無線通信工具,與網絡控制平臺聯調完成了數據收發功能,實現了船載執行端和網絡控制端的交互。該控制系統相較于傳統無人艇控制系統的優勢在于:系統開發周期短,集成度高,可擴展性好,且設計成本低。整套控制系統的基本功能已經完成,為無人艇在實際工程中的應用提供了一種可行的設計方案。在此研究基礎上,未來研究的重點在于動態路徑規劃算法的測試實驗和系統穩定性的進一步優化。