章 恒,竇銀科,于家坤
(1. 太原理工大學(xué)電氣與動力工程學(xué)院,山西 太原 030024;2. 青島卓建海洋裝備科技有限公司,山東 青島 266000)
近年來,我國經(jīng)濟發(fā)展迅猛,對海洋環(huán)境的重視度越來越高,無人艇可以完成對海水環(huán)境的自動化監(jiān)測等多種任務(wù)。無人艇的研發(fā)涉及多個學(xué)科,如自動控制、信息傳輸、船舶設(shè)計等。無人艇可以搭載多種設(shè)備實現(xiàn)對海水的實時自主監(jiān)測,不僅可以節(jié)省人力成本而且能夠在高風(fēng)險作業(yè)環(huán)境中工作,具有廣泛的應(yīng)用前景[1-2]。無人艇的運行方式主要有遠(yuǎn)程遙控和自動控制,通過這2種方式可以實現(xiàn)姿態(tài)控制、環(huán)境探測、目標(biāo)追蹤、自主巡航等功能。無人艇具有與其他平臺聯(lián)合使用的能力,無論是軍事還是民用都會具有巨大的發(fā)展?jié)摿3-4]。
目前的無人艇軌跡控制效果精度一般不高,文獻[5]的軌跡跟蹤誤差為5 m。而本文設(shè)計的無人艇在進入直線段時可以達到亞米級的運行軌跡,實際運行中取得了理想的控制效果,使用的控制器為基于STM32單片機自研的無人艇控制器,通過無線數(shù)據(jù)傳輸模塊的信息交互實現(xiàn)了遠(yuǎn)程遙控功能,通過使用PID算法實現(xiàn)了無人艇的自主巡航和軌跡規(guī)劃。
無人艇控制系統(tǒng)由岸基控制顯示單元、系統(tǒng)服務(wù)器、無人艇、鋰電池組4部分組成。岸基控制顯示單元即遙控采用平板電腦實現(xiàn)對無人艇實時狀態(tài)進行監(jiān)控,其核心是使用Qt編寫了一個無人艇控制及監(jiān)控軟件,對無人艇實時數(shù)據(jù)進行分析處理。系統(tǒng)服務(wù)器是遙控和無人艇控制板的數(shù)據(jù)交互橋梁,用于解析遙控發(fā)來的數(shù)據(jù)轉(zhuǎn)發(fā)給無人艇控制器,把無人艇控制板的狀態(tài)信息轉(zhuǎn)發(fā)給遙控實時顯示,并讀取各傳感器的數(shù)據(jù)儲存至本地數(shù)據(jù)庫,其工作系統(tǒng)如圖1所示。
圖1 系統(tǒng)框圖Fig. 1 System block diagram
鋰電池組為72 V 100 Ah的電池組,由于無人艇系統(tǒng)需要多個電壓等級的電壓,所以需要DC-DC降壓模塊為不同設(shè)備供電。如無線傳輸模塊所需的電壓為5 V,系統(tǒng)服務(wù)器所需電壓為12 V,基于STM32無人艇控制板為7~35 V,傳感器所需電壓有12 V,24 V等,而驅(qū)動無刷電機的電調(diào)需要72 V供電。無線模塊為RDF900數(shù)傳電臺,傳輸距離大于40 km,空氣中數(shù)據(jù)傳輸速率高達250 kbps。系統(tǒng)服務(wù)器使用的是帶有8個串口的工控機。傳感器有多參數(shù)水質(zhì)監(jiān)測儀(簡稱EXO)、單波束、姿態(tài)傳感器。
無人艇控制板選用的單片機為意法半導(dǎo)體生產(chǎn)的32位單片機STM32F103RCT6,其運行主頻最高可達72 MHz,F(xiàn)lash程序存儲器容量為256 KB,RAM容量是48 KB,通信接口有CAN總線、I2C、IrDA、LIN、SPI、UART/USART、USB、SDIO等。調(diào)試模式有單線調(diào)試(SWD)和JTAG接口調(diào)試。低功耗模式有睡眠、停機和待機模式。具有內(nèi)部實時時鐘模塊,3個12位模數(shù)轉(zhuǎn)換器共有21通道。定時器共有11個,其中4個16位定時器,每個均有4個PWM通道可以產(chǎn)生多種頻率和占空比的波形。2個看門狗可以防止程序出現(xiàn)死機的狀況。具有5個USART接口,可以外接無線模塊、傳感器等串口設(shè)備。無人艇控制板結(jié)構(gòu)圖如圖2所示。
圖2 控制板結(jié)構(gòu)圖Fig. 2 Control board structure diagram
基于STM32的無人艇控制板集成有DC-DC降壓電路,外部供電電壓可以為7~35 V。持續(xù)輸出電流為3 A,峰值可達4 A,電路圖如圖3所示。
圖3 TPS5430電路圖Fig. 3 TPS5430 circuit diagram
TPS5430輸出電壓可以使用電阻R5,R6進行調(diào)節(jié),其輸出電壓Uout與電阻R5、R6關(guān)系式如式(1)所示。
單片機STM32F103RCT6,W25Q64等芯片需要3.3 V供電,本文使用AMS1117-3.3把5 V電壓轉(zhuǎn)換至3.3 V,這樣可以滿足電路板對5 V和3.3 V的需求。
RS485-RS232通信接口擴展板是本文設(shè)計的可以在一條485總線掛數(shù)十個或上百個傳感器。其核心是使用一個STM32F103C8T6單片機的2個串口實現(xiàn)為每個傳感器進行分配地址,串口1電平使用MAX13487轉(zhuǎn)換為RS485電平,串口2電平使用MAX3232轉(zhuǎn)換為RS232電平,并在單片機中寫入一個轉(zhuǎn)換協(xié)議,把傳感器的RS232端的協(xié)議轉(zhuǎn)換為帶有地址和CRC校驗的RS485總線端的協(xié)議,且都有自己唯一的地址。RS485-RS232通信接口擴展板結(jié)構(gòu)圖如圖4所示。
RS485-RS232通信接口擴展板極大擴展了無人艇外接傳感器的能力,其應(yīng)用圖如圖5所示。
RS485-RS232通信接口擴展板的RS485端協(xié)議如表1所示。
圖4 RS485-RS232通信接口擴展板結(jié)構(gòu)圖Fig. 4 RS485-RS232 communication interface expansion board structure diagram
圖5 RS485-RS232通信接口擴展板應(yīng)用圖Fig. 5 RS485-RS232 communication interface expansion board application diagram
表1 RS485-RS232通信接口擴展板協(xié)議Tab. 1 RS485-RS232 communication interface expansion board protocol
如向地址為0x01的擴展板發(fā)送一條表1樣式的數(shù)據(jù)包,在RS232端輸出到傳感器的僅為數(shù)據(jù)部分,此數(shù)據(jù)部分要與傳感器的讀取或設(shè)置指令相符,傳感器返回相應(yīng)的數(shù)據(jù)到擴展板RS232接口,經(jīng)過擴展板的處理再從RS485接口輸出表1樣式的數(shù)據(jù)包,此時數(shù)據(jù)部分為傳感器返回的數(shù)據(jù)。
本文使用的水質(zhì)傳感器為多參數(shù)水質(zhì)監(jiān)測儀,水深傳感器為單波束。多參數(shù)水質(zhì)監(jiān)測儀可以監(jiān)測的水質(zhì)參數(shù)有溫度、PH、鹽度、電導(dǎo)率、比電導(dǎo)率、葉綠素、濁度、溶解氧等,單波束用于測量單波束安裝位置距海底的距離,最終把單波束數(shù)據(jù)、安裝位置、潮位數(shù)據(jù)相結(jié)合計算出深度。
本文設(shè)計的無人艇核心是實時對無人艇進行遙控控制,以及按照預(yù)定的軌跡進行自主巡航。制定好無人艇控制協(xié)議即可實現(xiàn)實時遙控?zé)o人艇的功能,而自主巡航需要借助PID算法進行自主調(diào)節(jié)軌跡,通過設(shè)定合適的PID參數(shù)以達到最理想的運行軌跡。
遙控控制的指令主要包括前進速度、左右控制方向角度,以及上浮下潛等,其協(xié)議格式如表2所示。
表2 遙控設(shè)置指令協(xié)議Tab. 2 Remote setting instruction protocol
協(xié)議含有地址的目的是同一個遙控可以在同一時間控制多個無人艇。功能碼在控制指令中即為設(shè)置寄存器參數(shù),所以使用的功能碼數(shù)值為0x06。寄存器即為控制不同運動狀態(tài)的地址。數(shù)據(jù)即為改變寄存器內(nèi)的數(shù)據(jù)內(nèi)容。CRC用于判斷此條信息內(nèi)容是否正確。
自主巡航需要提前設(shè)定好軌跡,其設(shè)置協(xié)議同表2,然后發(fā)送啟動指令后即開始自主巡航。自主巡航僅能在水面運行,因為在水面RTK才能搜索到GPS定位信息,其自主控制程序思路如圖6所示。
圖6 無人艇運行策略Fig. 6 Unmanned vehicle operation strategy
圖6中虛線為無人艇運行軌跡。假設(shè)無人艇當(dāng)前位置為O要沿AB直線向B運行,程序執(zhí)行中首先判斷無人艇的艇首方向與AB之間的夾角e1(t)是通過順時針旋轉(zhuǎn)角度小還是逆時針旋轉(zhuǎn)角度小,然后進行相應(yīng)的轉(zhuǎn)向最終進入AB直線,通過PID算法控制噴泵的方向使艇首方向盡可能朝向B點且保證無人艇O距離AB直線的偏移距離e2(t)盡量很小。在無人艇由A向B運行過程中的PID調(diào)節(jié)公式如下:
式中:Pout為噴泵旋轉(zhuǎn)角度變量;K1P為偏差角度調(diào)節(jié)PID的比例參數(shù);K1I為偏差角度調(diào)節(jié)PID的積分參數(shù);K1D為偏差角度調(diào)節(jié)PID的微分參數(shù);K2P為偏移距離調(diào)節(jié)PID的比例參數(shù);K2I為偏移距離調(diào)節(jié)PID的積分參數(shù);K2D為偏移距離調(diào)節(jié)PID的微分參數(shù);X為偏差角度調(diào)節(jié)系數(shù),此處取0.5;Y為偏移距離調(diào)節(jié)系數(shù),此處取0.5;Pout為式(2)的一個輸出量,最終轉(zhuǎn)換為噴泵的角度控制。
遙控軟件采用Qt編寫,Qt是由Qt Company開發(fā)的跨平臺C++圖形用戶界面應(yīng)用程序開發(fā)框架。它既可以開發(fā)GUI程序,也可用于開發(fā)非GUI程序,比如控制臺工具和服務(wù)器。為了人機交互方便,使用Qt編寫的GUI程序,可以很方便地對無人艇進行操作或監(jiān)控。
遙控中為了方便軌跡的規(guī)劃,可以直接把事先規(guī)劃好的無人艇運行軌跡寫入TXT文本中,然后點擊遙控中的“從文件設(shè)置多點經(jīng)緯度”按鈕即可自動配置完畢,然后點 “無人艇啟動”按鈕即可進行自主巡航。選中“綜合參數(shù)”即可把無人艇的姿態(tài)、GPS經(jīng)緯度和時間、運行至第幾工作點、各傳感器數(shù)值等讀回遙控界面,并把運行軌跡顯示到實時地圖之中。
為了方便無人艇運行過程中出現(xiàn)緊急情況需要立即返航的情況,遙控設(shè)有“一鍵返航”按鈕,當(dāng)無人艇的STM32控制板收到該指令時立即向最初無人艇啟動位置運動。運行過程中可以隨時切換“自主模式”和“遙控模式”,以及控制各個IO端口。無人艇的運行狀態(tài)數(shù)據(jù)在遙控界面中一目了然,可以實時了解無人艇的最新工作狀態(tài)。
在無人艇啟動之前需要進行聯(lián)調(diào)測試。首先需要按照系統(tǒng)圖連接好各個設(shè)備,然后選中遙控中的綜合參數(shù)查詢,逐一查看RTK定位數(shù)據(jù)的經(jīng)緯度、姿態(tài)角數(shù)據(jù)的Roll角和Pitch角、艇頭角、單波束傳感器數(shù)值、多參數(shù)水質(zhì)監(jiān)測儀數(shù)值,控制電機旋轉(zhuǎn)是否正常。這些數(shù)據(jù)均正常后才可啟動無人艇,配置其運動方式。
為了驗證無人艇自主巡航的工作性能,進行遙控測試和自主巡航測試。遙控測試通過直接控制電機轉(zhuǎn)速以及舵機方向從而達到控制無人艇運行的效果,但是遙控測試時無人艇必須在可視范圍內(nèi),而且手動遙控的軌跡很難達到理想軌跡效果。自主巡航的PID控制算法不僅可以抵抗外界風(fēng)力和海浪的干擾,而且可以在規(guī)劃的軌跡上運行。
2018年11月15日,無人艇在山東省青島市萬達星光島進行了自主巡航測試,測試時風(fēng)速8 m/s,浪高0.1 m。此次自主巡航測試設(shè)置幾條運行直線,如圖7所示。
圖7 運行軌跡Fig. 7 Running track
圖7中直線為設(shè)置的運行軌跡,曲線為實際運行軌跡,在實際運行中發(fā)現(xiàn),除剛進入直線時會有較大的彎曲,進入直線后基本可以沿直線運行,在此次環(huán)境下測得無人艇具有較強的魯棒性,偏移直線距離不超過0.8 m。
本文設(shè)計的無人艇具有自主巡航和遙控2種模式,在遙控模式下無人艇所有動作受遙控端控制,在自主巡航模式下無人艇可以自主進行預(yù)定軌跡巡航。遙控模式的特點是可以人性化操控?zé)o人艇的狀態(tài),自主巡航的特點是控制精度高,其偏移預(yù)定軌跡不超過0.8 m。經(jīng)過海上試驗,驗證了本文設(shè)計的無人艇控制系統(tǒng)穩(wěn)定可靠、抗干擾能力強。遙控界面具有方便、直觀等特點,實現(xiàn)了高精度的海上自主巡航。