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