章 恒,竇銀科,于家坤
(1. 太原理工大學電氣與動力工程學院,山西 太原 030024;2. 青島卓建海洋裝備科技有限公司,山東 青島 266000)
近年來,我國經濟發展迅猛,對海洋環境的重視度越來越高,無人艇可以完成對海水環境的自動化監測等多種任務。無人艇的研發涉及多個學科,如自動控制、信息傳輸、船舶設計等。無人艇可以搭載多種設備實現對海水的實時自主監測,不僅可以節省人力成本而且能夠在高風險作業環境中工作,具有廣泛的應用前景[1-2]。無人艇的運行方式主要有遠程遙控和自動控制,通過這2種方式可以實現姿態控制、環境探測、目標追蹤、自主巡航等功能。無人艇具有與其他平臺聯合使用的能力,無論是軍事還是民用都會具有巨大的發展潛力[3-4]。
目前的無人艇軌跡控制效果精度一般不高,文獻[5]的軌跡跟蹤誤差為5 m。而本文設計的無人艇在進入直線段時可以達到亞米級的運行軌跡,實際運行中取得了理想的控制效果,使用的控制器為基于STM32單片機自研的無人艇控制器,通過無線數據傳輸模塊的信息交互實現了遠程遙控功能,通過使用PID算法實現了無人艇的自主巡航和軌跡規劃。
無人艇控制系統由岸基控制顯示單元、系統服務器、無人艇、鋰電池組4部分組成。岸基控制顯示單元即遙控采用平板電腦實現對無人艇實時狀態進行監控,其核心是使用Qt編寫了一個無人艇控制及監控軟件,對無人艇實時數據進行分析處理。系統服務器是遙控和無人艇控制板的數據交互橋梁,用于解析遙控發來的數據轉發給無人艇控制器,把無人艇控制板的狀態信息轉發給遙控實時顯示,并讀取各傳感器的數據儲存至本地數據庫,其工作系統如圖1所示。

圖1 系統框圖Fig. 1 System block diagram
鋰電池組為72 V 100 Ah的電池組,由于無人艇系統需要多個電壓等級的電壓,所以需要DC-DC降壓模塊為不同設備供電。如無線傳輸模塊所需的電壓為5 V,系統服務器所需電壓為12 V,基于STM32無人艇控制板為7~35 V,傳感器所需電壓有12 V,24 V等,而驅動無刷電機的電調需要72 V供電。無線模塊為RDF900數傳電臺,傳輸距離大于40 km,空氣中數據傳輸速率高達250 kbps。系統服務器使用的是帶有8個串口的工控機。傳感器有多參數水質監測儀(簡稱EXO)、單波束、姿態傳感器。
無人艇控制板選用的單片機為意法半導體生產的32位單片機STM32F103RCT6,其運行主頻最高可達72 MHz,Flash程序存儲器容量為256 KB,RAM容量是48 KB,通信接口有CAN總線、I2C、IrDA、LIN、SPI、UART/USART、USB、SDIO等。調試模式有單線調試(SWD)和JTAG接口調試。低功耗模式有睡眠、停機和待機模式。具有內部實時時鐘模塊,3個12位模數轉換器共有21通道。定時器共有11個,其中4個16位定時器,每個均有4個PWM通道可以產生多種頻率和占空比的波形。2個看門狗可以防止程序出現死機的狀況。具有5個USART接口,可以外接無線模塊、傳感器等串口設備。無人艇控制板結構圖如圖2所示。

圖2 控制板結構圖Fig. 2 Control board structure diagram
基于STM32的無人艇控制板集成有DC-DC降壓電路,外部供電電壓可以為7~35 V。持續輸出電流為3 A,峰值可達4 A,電路圖如圖3所示。

圖3 TPS5430電路圖Fig. 3 TPS5430 circuit diagram
TPS5430輸出電壓可以使用電阻R5,R6進行調節,其輸出電壓Uout與電阻R5、R6關系式如式(1)所示。

單片機STM32F103RCT6,W25Q64等芯片需要3.3 V供電,本文使用AMS1117-3.3把5 V電壓轉換至3.3 V,這樣可以滿足電路板對5 V和3.3 V的需求。
RS485-RS232通信接口擴展板是本文設計的可以在一條485總線掛數十個或上百個傳感器。其核心是使用一個STM32F103C8T6單片機的2個串口實現為每個傳感器進行分配地址,串口1電平使用MAX13487轉換為RS485電平,串口2電平使用MAX3232轉換為RS232電平,并在單片機中寫入一個轉換協議,把傳感器的RS232端的協議轉換為帶有地址和CRC校驗的RS485總線端的協議,且都有自己唯一的地址。RS485-RS232通信接口擴展板結構圖如圖4所示。
RS485-RS232通信接口擴展板極大擴展了無人艇外接傳感器的能力,其應用圖如圖5所示。
RS485-RS232通信接口擴展板的RS485端協議如表1所示。

圖4 RS485-RS232通信接口擴展板結構圖Fig. 4 RS485-RS232 communication interface expansion board structure diagram

圖5 RS485-RS232通信接口擴展板應用圖Fig. 5 RS485-RS232 communication interface expansion board application diagram

表1 RS485-RS232通信接口擴展板協議Tab. 1 RS485-RS232 communication interface expansion board protocol
如向地址為0x01的擴展板發送一條表1樣式的數據包,在RS232端輸出到傳感器的僅為數據部分,此數據部分要與傳感器的讀取或設置指令相符,傳感器返回相應的數據到擴展板RS232接口,經過擴展板的處理再從RS485接口輸出表1樣式的數據包,此時數據部分為傳感器返回的數據。
本文使用的水質傳感器為多參數水質監測儀,水深傳感器為單波束。多參數水質監測儀可以監測的水質參數有溫度、PH、鹽度、電導率、比電導率、葉綠素、濁度、溶解氧等,單波束用于測量單波束安裝位置距海底的距離,最終把單波束數據、安裝位置、潮位數據相結合計算出深度。
本文設計的無人艇核心是實時對無人艇進行遙控控制,以及按照預定的軌跡進行自主巡航。制定好無人艇控制協議即可實現實時遙控無人艇的功能,而自主巡航需要借助PID算法進行自主調節軌跡,通過設定合適的PID參數以達到最理想的運行軌跡。
遙控控制的指令主要包括前進速度、左右控制方向角度,以及上浮下潛等,其協議格式如表2所示。

表2 遙控設置指令協議Tab. 2 Remote setting instruction protocol
協議含有地址的目的是同一個遙控可以在同一時間控制多個無人艇。功能碼在控制指令中即為設置寄存器參數,所以使用的功能碼數值為0x06。寄存器即為控制不同運動狀態的地址。數據即為改變寄存器內的數據內容。CRC用于判斷此條信息內容是否正確。
自主巡航需要提前設定好軌跡,其設置協議同表2,然后發送啟動指令后即開始自主巡航。自主巡航僅能在水面運行,因為在水面RTK才能搜索到GPS定位信息,其自主控制程序思路如圖6所示。

圖6 無人艇運行策略Fig. 6 Unmanned vehicle operation strategy
圖6中虛線為無人艇運行軌跡。假設無人艇當前位置為O要沿AB直線向B運行,程序執行中首先判斷無人艇的艇首方向與AB之間的夾角e1(t)是通過順時針旋轉角度小還是逆時針旋轉角度小,然后進行相應的轉向最終進入AB直線,通過PID算法控制噴泵的方向使艇首方向盡可能朝向B點且保證無人艇O距離AB直線的偏移距離e2(t)盡量很小。在無人艇由A向B運行過程中的PID調節公式如下:

式中:Pout為噴泵旋轉角度變量;K1P為偏差角度調節PID的比例參數;K1I為偏差角度調節PID的積分參數;K1D為偏差角度調節PID的微分參數;K2P為偏移距離調節PID的比例參數;K2I為偏移距離調節PID的積分參數;K2D為偏移距離調節PID的微分參數;X為偏差角度調節系數,此處取0.5;Y為偏移距離調節系數,此處取0.5;Pout為式(2)的一個輸出量,最終轉換為噴泵的角度控制。
遙控軟件采用Qt編寫,Qt是由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可用于開發非GUI程序,比如控制臺工具和服務器。為了人機交互方便,使用Qt編寫的GUI程序,可以很方便地對無人艇進行操作或監控。
遙控中為了方便軌跡的規劃,可以直接把事先規劃好的無人艇運行軌跡寫入TXT文本中,然后點擊遙控中的“從文件設置多點經緯度”按鈕即可自動配置完畢,然后點 “無人艇啟動”按鈕即可進行自主巡航。選中“綜合參數”即可把無人艇的姿態、GPS經緯度和時間、運行至第幾工作點、各傳感器數值等讀回遙控界面,并把運行軌跡顯示到實時地圖之中。
為了方便無人艇運行過程中出現緊急情況需要立即返航的情況,遙控設有“一鍵返航”按鈕,當無人艇的STM32控制板收到該指令時立即向最初無人艇啟動位置運動。運行過程中可以隨時切換“自主模式”和“遙控模式”,以及控制各個IO端口。無人艇的運行狀態數據在遙控界面中一目了然,可以實時了解無人艇的最新工作狀態。
在無人艇啟動之前需要進行聯調測試。首先需要按照系統圖連接好各個設備,然后選中遙控中的綜合參數查詢,逐一查看RTK定位數據的經緯度、姿態角數據的Roll角和Pitch角、艇頭角、單波束傳感器數值、多參數水質監測儀數值,控制電機旋轉是否正常。這些數據均正常后才可啟動無人艇,配置其運動方式。
為了驗證無人艇自主巡航的工作性能,進行遙控測試和自主巡航測試。遙控測試通過直接控制電機轉速以及舵機方向從而達到控制無人艇運行的效果,但是遙控測試時無人艇必須在可視范圍內,而且手動遙控的軌跡很難達到理想軌跡效果。自主巡航的PID控制算法不僅可以抵抗外界風力和海浪的干擾,而且可以在規劃的軌跡上運行。
2018年11月15日,無人艇在山東省青島市萬達星光島進行了自主巡航測試,測試時風速8 m/s,浪高0.1 m。此次自主巡航測試設置幾條運行直線,如圖7所示。

圖7 運行軌跡Fig. 7 Running track
圖7中直線為設置的運行軌跡,曲線為實際運行軌跡,在實際運行中發現,除剛進入直線時會有較大的彎曲,進入直線后基本可以沿直線運行,在此次環境下測得無人艇具有較強的魯棒性,偏移直線距離不超過0.8 m。
本文設計的無人艇具有自主巡航和遙控2種模式,在遙控模式下無人艇所有動作受遙控端控制,在自主巡航模式下無人艇可以自主進行預定軌跡巡航。遙控模式的特點是可以人性化操控無人艇的狀態,自主巡航的特點是控制精度高,其偏移預定軌跡不超過0.8 m。經過海上試驗,驗證了本文設計的無人艇控制系統穩定可靠、抗干擾能力強。遙控界面具有方便、直觀等特點,實現了高精度的海上自主巡航。