張本任,熊 勇,張 加,余嘉俊,劉鴻濤
(武漢理工大學(xué) 航運(yùn)學(xué)院,湖北 武漢 430063)
水面無人艇(USV)[1]相較于傳統(tǒng)水上載運(yùn)工具的優(yōu)點(diǎn)主要是可實(shí)現(xiàn)遠(yuǎn)程無人控制,并且可以在不適宜人長期作業(yè)的工作環(huán)境中執(zhí)行任務(wù),在水深測量、環(huán)境監(jiān)控、打撈搜救、環(huán)境保護(hù)等方面已得到廣泛應(yīng)用,且無論在軍用或者民用、大型水域或者小型水域都具有廣闊前景。
無人艇在技術(shù)設(shè)計(jì)方面囊括了船舶結(jié)構(gòu)設(shè)計(jì)、運(yùn)動(dòng)控制算法設(shè)計(jì)、遠(yuǎn)程通信、信號處理和分析以及探測勘察等專業(yè)相關(guān)知識(shí),其智能化程度和應(yīng)用擴(kuò)展性等決定了無人艇在實(shí)際工程中應(yīng)用的可能性[2 – 3],而無人艇最核心的部分就是它的自主控制系統(tǒng),因此研究并設(shè)計(jì)出無人艇控制系統(tǒng)使之在實(shí)際工程中發(fā)揮作用具有重要意義。
目前國內(nèi)對無人艇自主控制系統(tǒng)的研究,大部分停留在理論研究階段,主要集中在仿真或半實(shí)物仿真層面[4],采用實(shí)艇[5]并以集成芯片作為控制系統(tǒng)[6]的研究較少,一般的無人艇控制系統(tǒng)設(shè)計(jì)方案所需成本很高,無人艇造價(jià)昂貴且一般控制系統(tǒng)硬件集成度不高,同時(shí)也存在開發(fā)周期較長等問題。針對這一情況,本文介紹一種Arduino開發(fā)環(huán)境下的無人艇控制系統(tǒng),該系統(tǒng)集成了多傳感器和GPRS無線網(wǎng)絡(luò)通信模塊,具有運(yùn)動(dòng)控制、全球定位系統(tǒng)(Global Positioning System, GPS)導(dǎo)航定位、路徑規(guī)劃、自動(dòng)避碰以及無線網(wǎng)絡(luò)控制等功能,可以在水面環(huán)境上執(zhí)行各種特定的任務(wù)。整套系統(tǒng)硬件成本較低、集成度高且可擴(kuò)展性能好。
設(shè)計(jì)的無人艇控制系統(tǒng)由船載設(shè)備端和網(wǎng)絡(luò)控制端兩大部分構(gòu)成,其中船載設(shè)備端由船體、集成控制板和其他模塊組件組成,網(wǎng)絡(luò)控制端包括運(yùn)動(dòng)控制界面、功能選擇界面、參數(shù)顯示界面和地圖界面。
無人艇船載端中的集成控制模塊作為控制系統(tǒng)的核心,通過利用GPRS無線通信技術(shù),在3G/4G網(wǎng)絡(luò)環(huán)境下,使用指定的傳輸協(xié)議,與網(wǎng)絡(luò)控制端建立通信鏈路。
無人艇控制系統(tǒng)涵蓋硬件和軟件2部分:硬件部分以微控制單元 (Micro-controller Unit, MCU)為核心,包括具有環(huán)境感知、信號采集等功能的傳感元器件,通過集成各模塊和元器件完成硬件部分的搭載;軟件部分包括信號處理、運(yùn)動(dòng)控制、路徑規(guī)劃與自動(dòng)避障算法等,通過編程加以實(shí)現(xiàn)。
圖 1 無人艇控制系統(tǒng)圖Fig. 1 USV control system
無人艇控制系統(tǒng)的主控單元采用At Mega 2560單片機(jī),電路板具有54路數(shù)字(DIGITAL)輸入/輸出端(其中16路可作為PWM輸出)、16路模擬輸入(ANALOG IN)端、4路UART接口,以及USB接口和電源接口等[7]。
Arduino開源電子開發(fā)設(shè)計(jì)平臺(tái)包括硬件和軟件2部分:硬件電路部分集成Atmel AVR單片機(jī)、I/O接口等,軟件部分包括Arduino集成開發(fā)環(huán)境(Integrated Development Environment,IDE),通過 USB 線將控制代碼上傳到控制板,編程語言類似C/C++和Java[8]。
AVR單片機(jī)相關(guān)的部分寄存器參數(shù)設(shè)置在Arduino集成開發(fā)環(huán)境中都進(jìn)行了封裝函數(shù)化,具有如EEPROM、舵機(jī)等控制程序庫,延時(shí)、數(shù)據(jù)讀寫、中斷等都被模塊化封裝成若干子函數(shù)可供調(diào)用,所以不需要用戶直接處理底層系統(tǒng),可以把重點(diǎn)放在上層算法和邏輯上,提高應(yīng)用程序的開發(fā)效率,縮短無人艇控制系統(tǒng)的開發(fā)周期。
利用Altium Designer軟件進(jìn)行電路原理圖設(shè)計(jì)和印制電路板 ( Printed Circuit Board, PCB)設(shè)計(jì),最終印制出無人艇控制系統(tǒng)集成電路板。PCB集成了包括微控制單元(At Mega 2560單片機(jī))、穩(wěn)壓電源模塊、USR-GM3P模塊、JY901慣性導(dǎo)航模塊,以及GPS、超聲波傳感器、模擬引腳、數(shù)字引腳、USB等接口,各個(gè)模塊和元器件可以通過直插的方式連接到PCB板上。將各模塊和接口集成后,減小了無人艇控制系統(tǒng)的空間體積,節(jié)省了設(shè)備安裝的人力和時(shí)間,提高了整體的工作效率。
圖 2 PCB 結(jié)構(gòu)圖Fig. 2 PCB block diagram
集成控制板和船體外殼采用高密封防水材料,所有外接口線路采用防水套件加固,保證防水性能的同時(shí)提高野外抗干擾能力,達(dá)到NEMA4X、IP65 防護(hù)等級。
表 1 無人艇參數(shù)Tab. 1 Parameters of USV
本控制系統(tǒng)的動(dòng)力裝置采用電動(dòng)船用推進(jìn)器,通過雙路電機(jī)驅(qū)動(dòng)模塊帶動(dòng)2個(gè)功率約1 000 W的直流無刷電機(jī)運(yùn)轉(zhuǎn),12 V電源供電,控制信號為0~5 V的TTL電平。電源輸入范圍在12~48 V之間,電機(jī)輸出的額定電流達(dá)100 A,峰值電流可達(dá)260 A。模塊具有10 M高速光耦隔離,可有效隔離對控制板的信號干擾。
圖 3 動(dòng)力裝置組件Fig. 3 Practicality picture of drive element
VCC輸入電壓通過轉(zhuǎn)換后分別輸出到A1,A2和B1,B2管腳給電機(jī)A和B的接口,通過控制電平信號高低可控制2個(gè)電機(jī)的旋轉(zhuǎn)方向,通過控制PWM值在0~255之間變化可控制電機(jī)的轉(zhuǎn)速,從而控制無人艇的航行方向與航行速度。
控制系統(tǒng)的通信功能由GPRS模塊實(shí)現(xiàn),GPRS模塊采用有人物聯(lián)網(wǎng)公司生產(chǎn)的型號為USR-GM3P透傳模塊。通過設(shè)置網(wǎng)絡(luò)透傳模式相關(guān)參數(shù),即可將有線的串口通信轉(zhuǎn)為無線的網(wǎng)絡(luò)通信,實(shí)現(xiàn)GPRS模塊與網(wǎng)絡(luò)端雙向透明傳輸。模塊提供接口包括電源輸入/輸出、UART、SIM卡槽、射頻天線等,模塊原理圖如圖4所示。
圖 4 GPRS 模塊原理圖Fig. 4 GPRS module schematic diagram
GPRS模塊與MCU采用UART通用串行數(shù)據(jù)總線,單片機(jī)I/O電平為3.3 V,不需要做電平匹配,直接與 At Mega 2560 單片機(jī)的 TX1 與 RX1 連接。
2.3.1 GPS 模塊
系統(tǒng)采用型號為UBLOX-NEO-6M的GPS模塊實(shí)現(xiàn)定位功能。該GPS模塊預(yù)留有TTL接口,可以外接單片機(jī)控制接收GPS信息;并預(yù)留SMA天線接口,可使用外置陶瓷天線接收信號。
將模塊輸出的原始GPS數(shù)據(jù),從Arduino中的串口RX中讀取出來,然后經(jīng)過串口TX再發(fā)送給電腦(arduino IDE的串口監(jiān)視器),顯示GPS原始幀數(shù)據(jù)。
2.3.2 慣性導(dǎo)航模塊
本控制系統(tǒng)集成了高精度慣性導(dǎo)航模塊JY-901,模塊涵蓋了三軸加速度計(jì)、三軸陀螺儀、三軸磁強(qiáng)計(jì),采用高性能的微處理器,并集成了卡爾曼動(dòng)態(tài)濾波算法,因此能夠快速測量出無人艇實(shí)時(shí)運(yùn)動(dòng)姿態(tài)。
JY-901模塊具有串行數(shù)據(jù)輸入和輸出接口,數(shù)據(jù)信號為TTL電平。數(shù)據(jù)通過串口3傳到MCU,通過解析后可以得到無人艇x, y, z三個(gè)方向上的加速度值、角度值和角速度值。
2.3.1 超聲波傳感器
本控制系統(tǒng)采用型號為HC-SR04的超聲波傳感器模塊做環(huán)境感知??刂葡到y(tǒng)集成了4個(gè)超聲波傳感器模塊,每個(gè)模塊的trig和echo接口占用At Mega 2560單片機(jī)的2個(gè)模擬口。以其中1個(gè)超聲波傳感器模塊為例,接線方式如圖5所示。
圖 5 超聲波傳感器模塊原理圖Fig. 5 Ultrasonic sensor module schematic diagram
模塊獲取數(shù)據(jù)的方式:在A0口發(fā)出一個(gè)10 μs的高電平信號后,等待A1口高電平輸出并開始計(jì)時(shí),當(dāng)下一次A1口輸出低電平時(shí)記錄下這段時(shí)間并結(jié)合聲速計(jì)算距離值。如此不斷地進(jìn)行周期性測量,就可以得到移動(dòng)測量的距離值。
無人艇系統(tǒng)的軟件部分涵蓋了運(yùn)動(dòng)指令函數(shù)、數(shù)據(jù)分析函數(shù)、系統(tǒng)辨識(shí)算法和自動(dòng)避障算法等,是硬件之間相互協(xié)調(diào)配合,最終能完成相應(yīng)職能的重要環(huán)節(jié)。
該系統(tǒng)的創(chuàng)新之處在于:結(jié)合網(wǎng)絡(luò)控制云平臺(tái),利用GPRS的無線網(wǎng)絡(luò)透傳技術(shù),使用自定義的數(shù)據(jù)傳輸協(xié)議,在3G/4G網(wǎng)絡(luò)環(huán)境下,可以對無人艇進(jìn)行在線監(jiān)控。此控制方式的優(yōu)勢在于通信距離不受限制,且系統(tǒng)網(wǎng)絡(luò)通信的穩(wěn)定性較好。
無人艇控制系統(tǒng)的軟件控制流程:網(wǎng)絡(luò)服務(wù)器端與At Mega 2560單片機(jī)之間通過GPRS模塊完成數(shù)據(jù)收發(fā),由網(wǎng)絡(luò)控制端發(fā)送控制指令到GPRS模塊,單片機(jī)通過程序處理接受的數(shù)據(jù)信號輸出相應(yīng)指令給各個(gè)執(zhí)行元件;同時(shí)各執(zhí)行元件、傳感器也將實(shí)時(shí)的動(dòng)態(tài)參數(shù)傳給單片機(jī),通過GPRS發(fā)送到云平臺(tái)操作界面,可以直觀顯示當(dāng)前工作的位置參數(shù)、運(yùn)動(dòng)狀態(tài)參數(shù)等數(shù)據(jù)。
利用 Arduino 集成開發(fā)環(huán)境對 At Mega 2560 進(jìn)行編程控制,軟件控制流程如圖6所示。定義各模塊管腳和系統(tǒng)的各參數(shù),系統(tǒng)開始工作后,完成系統(tǒng)初始化;各傳感器和通信模塊接收的數(shù)據(jù)經(jīng)過解析和數(shù)值轉(zhuǎn)換后,判斷控制端口是否接收到控制指令,如果接收到在線的控制指令則優(yōu)先執(zhí)行,否則判斷無線通信接口是否接收到軌跡數(shù)據(jù),如果接收到網(wǎng)絡(luò)控制端發(fā)送的軌跡數(shù)據(jù)則執(zhí)行相應(yīng)運(yùn)動(dòng)控制指令完成規(guī)劃的軌跡路徑,否則更新各模塊接收的數(shù)據(jù);利用USRGM3P模塊的無線網(wǎng)絡(luò)透傳方式,按照自定義數(shù)據(jù)格式將無人艇的運(yùn)動(dòng)參數(shù)上傳到網(wǎng)絡(luò)控制平臺(tái);上傳完成后將串口數(shù)據(jù)清空,并循環(huán)上述步驟。
圖 6 地圖選點(diǎn)界面Fig. 6 Map selection interface
電機(jī)驅(qū)動(dòng)子程序部分主要是對無人艇的運(yùn)動(dòng)狀態(tài)進(jìn)行控制。無人艇的運(yùn)動(dòng)狀態(tài)包括前進(jìn),后退,向前左轉(zhuǎn),向前右轉(zhuǎn),原地左轉(zhuǎn),原地右轉(zhuǎn),停船。通過對電機(jī)驅(qū)動(dòng)模塊的A1,A2,B1,B2管腳的電平高低設(shè)置實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn)控制:同時(shí)通過PA,PB兩個(gè)PWM控制口寫入不同的占空比來對電機(jī)的轉(zhuǎn)速進(jìn)行控制。
3.2.1 運(yùn)動(dòng)姿態(tài)
無人艇航行狀態(tài)為六自由度,需要獲取無人艇的動(dòng)態(tài)參數(shù)來對其運(yùn)動(dòng)狀態(tài)進(jìn)行控制,包括首搖、橫搖、縱搖、垂蕩、橫蕩、縱蕩6個(gè)自由度的運(yùn)動(dòng)參數(shù)。
JY901姿態(tài)傳感器的數(shù)據(jù)輸出采用16進(jìn)制的方式,這種方法的優(yōu)點(diǎn)是效率高,可以用很少的字節(jié)傳輸需要的數(shù)據(jù),利用有限的帶寬傳輸大量數(shù)據(jù)。
3.2.2 經(jīng)緯度
無人艇在水面航行時(shí),需要獲取設(shè)備當(dāng)前所在具體位置來對其所處環(huán)境進(jìn)行監(jiān)控,則需獲取設(shè)備當(dāng)前所在位置的經(jīng)緯度數(shù)據(jù)等。GPS模塊接收到的數(shù)據(jù)為標(biāo)準(zhǔn)NMEA-0183協(xié)議格式的數(shù)據(jù),通過在1 s內(nèi)不斷掃描GPS信息連續(xù)獲取GPS數(shù)據(jù),再將讀到的數(shù)據(jù)中的經(jīng)緯度數(shù)據(jù)從一幀完整數(shù)據(jù)中提取出來并作解析,利用解析后的數(shù)據(jù)對無人艇進(jìn)行位置監(jiān)測和軌跡控制等。
無人艇工作時(shí)的詳細(xì)信息,需按照規(guī)定的格式發(fā)送到網(wǎng)絡(luò)端進(jìn)行顯示,以實(shí)時(shí)的、全方位的監(jiān)控?zé)o人艇的運(yùn)動(dòng)狀態(tài)。按照指定格式,將數(shù)據(jù)寫入GPRS模塊對應(yīng)串口1,并在主程序中循環(huán)以連續(xù)發(fā)送數(shù)據(jù)。
無人艇路徑規(guī)劃算法步驟:
1)當(dāng)接收到軌跡數(shù)據(jù)時(shí),轉(zhuǎn)到路徑規(guī)劃函數(shù);
2)判斷障礙物標(biāo)志位:如果有礙航物,則轉(zhuǎn)到自動(dòng)避障函數(shù);否則轉(zhuǎn)到步驟3;
3)當(dāng)接近目標(biāo)終點(diǎn)時(shí),轉(zhuǎn)到終點(diǎn)判別函數(shù),循環(huán)軌跡規(guī)劃函數(shù)。
HC-SR04超聲波測距模塊程序控制原理如下:
1)采用IO口TRIG觸發(fā)測距,給至少10 μs的高電平信號;
2)模塊自動(dòng)發(fā)送8個(gè)40 kHz的方波,自動(dòng)檢測是否有信號返回;
3)當(dāng)有信號返回,通過IO口ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間,并計(jì)算出測試距離。
無人艇船首和船尾左右兩側(cè)各放置1個(gè)超聲波探頭,其中前方左右分別為S1,S2,后方左右分別為S3,S4,通過各超聲波傳感器模塊的接收到的數(shù)據(jù),判斷礙航物所在的方位和距離無人艇設(shè)備的距離,設(shè)計(jì)自動(dòng)避障算法并根據(jù)環(huán)境信息執(zhí)行相應(yīng)的控制指令。
無人艇結(jié)合Arduino IDE試驗(yàn)并實(shí)現(xiàn)了以下功能:
1)無線網(wǎng)絡(luò)通信功能。平臺(tái)與用戶的交互采用網(wǎng)站的形式,與Android系統(tǒng)設(shè)備之間的通信采用Windows服務(wù),通過TCP/IP協(xié)議通信,設(shè)配端各項(xiàng)動(dòng)態(tài)、靜態(tài)參數(shù)可以發(fā)送到云端網(wǎng)絡(luò)界面進(jìn)行顯示,網(wǎng)絡(luò)控制端可以進(jìn)行控制指令發(fā)送和軌跡數(shù)據(jù)發(fā)送等功能。
2)自主定位功能??蛇M(jìn)行5m級誤差精度的定位并具備地圖選點(diǎn)功能。
3)運(yùn)動(dòng)控制功能。系統(tǒng)可執(zhí)行相應(yīng)的控制指令。
4)路徑規(guī)劃功能。由網(wǎng)絡(luò)端向設(shè)備端發(fā)送軌跡數(shù)據(jù),無人艇按照設(shè)定路徑完成指定航行任務(wù)。
5)自動(dòng)避障功能。自動(dòng)識(shí)別礙航物距離,并根據(jù)自動(dòng)避碰算法完成避障動(dòng)作。
無人艇在武漢理工大學(xué)船舶拖曳試驗(yàn)水池中進(jìn)行了試驗(yàn),測試內(nèi)容包括無線運(yùn)動(dòng)控制、動(dòng)態(tài)定位、軌跡路徑控制和自動(dòng)避障控制等。
無人艇路徑規(guī)劃試驗(yàn):首先在網(wǎng)絡(luò)控制平臺(tái)上的地圖界面中進(jìn)行“地圖選點(diǎn)”,然后將軌跡數(shù)據(jù)通過網(wǎng)絡(luò)透傳方式發(fā)送到無人艇設(shè)備端;無人艇控制系統(tǒng)根據(jù)收到的數(shù)據(jù)完成相應(yīng)的軌跡任務(wù)。測試結(jié)果表明無人艇能在0.5 s以內(nèi)快速響應(yīng)控制指令,丟包及誤碼率較低,網(wǎng)絡(luò)連接和運(yùn)動(dòng)狀態(tài)穩(wěn)定。
圖 7 地圖選點(diǎn)界面Fig. 7 Map selection interface
圖 8 軌跡數(shù)據(jù)發(fā)送Fig. 8 Trajectory data transmission
基于Arduino開發(fā)環(huán)境的無人艇控制系統(tǒng)集成了多傳感器和動(dòng)力系統(tǒng),實(shí)現(xiàn)了無人艇船載設(shè)備端的搭建;并采用GPRS模塊作為無線通信工具,與網(wǎng)絡(luò)控制平臺(tái)聯(lián)調(diào)完成了數(shù)據(jù)收發(fā)功能,實(shí)現(xiàn)了船載執(zhí)行端和網(wǎng)絡(luò)控制端的交互。該控制系統(tǒng)相較于傳統(tǒng)無人艇控制系統(tǒng)的優(yōu)勢在于:系統(tǒng)開發(fā)周期短,集成度高,可擴(kuò)展性好,且設(shè)計(jì)成本低。整套控制系統(tǒng)的基本功能已經(jīng)完成,為無人艇在實(shí)際工程中的應(yīng)用提供了一種可行的設(shè)計(jì)方案。在此研究基礎(chǔ)上,未來研究的重點(diǎn)在于動(dòng)態(tài)路徑規(guī)劃算法的測試實(shí)驗(yàn)和系統(tǒng)穩(wěn)定性的進(jìn)一步優(yōu)化。