李 雪1, 楊大勇1, 劉家毅, 張 揚(yáng)
(1.南昌大學(xué) 信息工程學(xué)院,江西 南昌 330031; 2.江西理工大學(xué) 能源與機(jī)械工程學(xué)院,江西 南昌 330013)
水下管道運(yùn)輸是人類從海底獲取寶貴資源的重要手段,然而由于水下環(huán)境的復(fù)雜多變,石油氣管道易損壞漏油進(jìn)而污染環(huán)境,甚至發(fā)生爆炸等嚴(yán)重威脅人類生命安全的事故,為了保護(hù)人們的生命財(cái)產(chǎn)安全及環(huán)境,有必要定期對(duì)水下輸油管道進(jìn)行質(zhì)量檢測[1-2]。水下輸油管道一般是采用無縫鋼管焊接和使用法蘭等連接裝置連接成長距離管道,并使用閥門進(jìn)行開閉控制和流量調(diào)節(jié)。與檢測陸地上石油氣管道不同,工作人員無法長期待在水下,甚至無法抵達(dá)復(fù)雜的深水區(qū)域完成水下石油氣管道的質(zhì)量檢測。因此,利用水下機(jī)器人對(duì)石油管道進(jìn)行巡查和檢測是目前最為安全高效的方式。智能水下機(jī)器人技術(shù)是水下自主航行器研究的熱點(diǎn)領(lǐng)域,設(shè)計(jì)水下巡查油管機(jī)器人的運(yùn)動(dòng)控制系統(tǒng),是實(shí)現(xiàn)水下自主航行器在惡劣且復(fù)雜多變的環(huán)境中進(jìn)行水下管道檢測作業(yè)的關(guān)鍵技術(shù)之一[3-5]。
水下機(jī)器人種類繁多,據(jù)AUVAC(Autonomous Underwater Vehicles Application Center)不完全統(tǒng)計(jì),全世界目前大約有128種不同種類的自主水下機(jī)器人平臺(tái)。在這些不同種類的自主水下機(jī)器人平臺(tái)中,由于自主水下機(jī)器人的使用任務(wù)和工作環(huán)境,以及研發(fā)團(tuán)隊(duì)的設(shè)計(jì)風(fēng)格和技術(shù)積累等多方面的不同因素,自主水下機(jī)器人外形有多種不同形式,大致可以分為回轉(zhuǎn)體形、立扁形、扁平形和多體形等,其中以魚雷型自主水下機(jī)器人的數(shù)目居多[6]。
考慮到水下環(huán)境復(fù)雜,水下機(jī)器人的形體應(yīng)結(jié)構(gòu)應(yīng)具有一定的針對(duì)性,保證其在水下作業(yè)更加便利。水下機(jī)器人形體結(jié)構(gòu)設(shè)計(jì)過程中,需要考慮以下幾點(diǎn)問題:
① 在形態(tài)結(jié)構(gòu)設(shè)計(jì)過程中,為了使水下機(jī)器人能夠較好地航行作業(yè),應(yīng)保證水下機(jī)器人下水時(shí)具有較強(qiáng)的阻力;
② 水下機(jī)器人在工作過程中會(huì)承受水下壓強(qiáng),這就需要保證水下機(jī)器人具有較高的強(qiáng)度,避免形體或是內(nèi)部結(jié)構(gòu)遭到壓強(qiáng)破壞;
③ 考慮到機(jī)器人的內(nèi)部結(jié)構(gòu),保證形體設(shè)計(jì)能夠?yàn)閮?nèi)部空間設(shè)計(jì)創(chuàng)造有利條件,保證質(zhì)量分布更加合理,使機(jī)器人在水下具有較好的平衡性;
④ 在進(jìn)行工藝選擇上,要保證硬件設(shè)計(jì)具有較好的性能,提升水下機(jī)器人的靈活度,減少水的阻力,使其能夠更好地在水下執(zhí)行任務(wù)[7]。
綜上所述,魚雷型水下機(jī)器人的設(shè)計(jì)能夠更好地滿足水下機(jī)器人的實(shí)際需要,并且能夠減輕水下機(jī)器人對(duì)水環(huán)境生物的干擾,減少水壓阻力[8]。在整體設(shè)計(jì)上,機(jī)器人整體尺寸設(shè)為:295 mm×85 mm×95 mm。尺寸設(shè)計(jì)完成后,要對(duì)機(jī)器人的防水性能進(jìn)行設(shè)計(jì),可采取“整體封閉,局部開放”的設(shè)計(jì)思路,保證特定位置具有較好的開放性,能夠在執(zhí)行任務(wù)過程中,發(fā)揮較好的效果。在設(shè)計(jì)過程中,像是電路板、攝像頭等處于封閉狀態(tài),模塊的位置,處于開放狀態(tài),保證在對(duì)設(shè)備進(jìn)行維修的過程中,更加方便[9]。
設(shè)計(jì)流程在進(jìn)行設(shè)計(jì)過程中,需要對(duì)外形進(jìn)行圖紙?jiān)O(shè)計(jì)。對(duì)此,可以利用計(jì)算機(jī)繪圖軟件,對(duì)形體設(shè)計(jì)進(jìn)行編輯處理,保證相關(guān)曲線率滿足流線型設(shè)計(jì)要求。一般來說,可以通過計(jì)算機(jī)軟件,對(duì)其三維實(shí)體造型進(jìn)行確定。
圖1為水下巡查機(jī)器人的本體結(jié)構(gòu)三維設(shè)計(jì)圖,是用UG軟件設(shè)計(jì)的;圖2是其爆炸圖;圖3是用KEYSHOT軟件處理后的渲染爆炸圖。
圖3 水下機(jī)器魚渲染圖及爆炸圖
水下石油管道巡查機(jī)器人主要通過檢測管道表面是否有油泡來判斷其表面是否漏油,從功能劃分的角度看,其控制系統(tǒng)設(shè)計(jì)任務(wù)主要有3個(gè)部分:移動(dòng)控制、人機(jī)交互系統(tǒng)、環(huán)境感知。
對(duì)機(jī)器人的移動(dòng)控制應(yīng)該首先確定它的驅(qū)動(dòng)模式,根據(jù)機(jī)器人的動(dòng)力來源可以分成兩大類:主動(dòng)式和被動(dòng)式。主動(dòng)式機(jī)器人就是具有自主移動(dòng)能力的機(jī)器人,而被動(dòng)式的機(jī)器人不具備自主移動(dòng)的能力,它通常依靠液體或風(fēng)的流動(dòng)力進(jìn)行移動(dòng),無論是主動(dòng)式還是移動(dòng)式,都具有各自的優(yōu)缺點(diǎn),本系統(tǒng)所研究的水下巡查機(jī)器人是在水下管道的外面作業(yè),從動(dòng)力來源判斷應(yīng)采用主動(dòng)式機(jī)器人[10]。
為了讓人類知道機(jī)器人的工作動(dòng)態(tài),并向機(jī)器人下達(dá)最新的指令,機(jī)器人在水下作業(yè)必須時(shí)刻保持與人類的交流,防止意外情況的發(fā)生。由此,研究人機(jī)交互系統(tǒng)是具有重要意義的。人機(jī)交互系統(tǒng)中最簡單的組成是上位機(jī)程序、核心控制器和傳感器,即核心控制器將傳感器獲得的外界信息傳送給上位機(jī)程序,上位機(jī)程序?qū)⒃撔畔⒅匦戮幋a使之成為人類能直接感受到的信息,如圖片、聲音等,反之,人類可將自己的任務(wù)通過上位機(jī)程序傳達(dá)于核心控制器,核心控制器再將其轉(zhuǎn)化為驅(qū)動(dòng)相關(guān)硬件的數(shù)字信號(hào),從而協(xié)助機(jī)器人完成任務(wù)。在整個(gè)過程中,人類與機(jī)器人始終保持聯(lián)系[11]。
機(jī)器人的環(huán)境感知能力就是信息的獲取能力,機(jī)器人是通過各類傳感器來獲取外界信息的,如攝像頭就可以獲取圖片信息,壓力傳感器可以獲取外界的壓力信息。機(jī)器人具體選用什么傳感器要根據(jù)機(jī)器人執(zhí)行的任務(wù)來決定,水下油管道巡查機(jī)器人是要獲取水下油管道附近的水泡,則只需要攝像頭即可。
綜上所述,水下巡查機(jī)器人就是將傳感器采集到的信息交給控制器處理,然后生成驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)工作的控制信號(hào),并同時(shí)將該信息傳送給水面上的上位機(jī)程序,以便工作人員查看。
針對(duì)水下機(jī)器人的巡檢任務(wù),水下機(jī)器人在巡管道航行時(shí)可以按照要求調(diào)整姿態(tài),以有利于攝像頭拍攝到較為準(zhǔn)確的位置圖片。水下機(jī)器人運(yùn)動(dòng)控制系統(tǒng)是運(yùn)用適當(dāng)?shù)目刂扑惴?,通過一定方式來實(shí)現(xiàn)水下機(jī)器人的方向控制,使其穩(wěn)定在與管道距離范圍內(nèi)的某位置,完成作業(yè)任務(wù)。所以選擇合適的控制系統(tǒng),從而使水下機(jī)器人巡檢管道并拍攝泄漏圖片具有重要的意義。
基于μC/OS-Ⅲ的水下石油管道巡查機(jī)器人控制系統(tǒng)由硬件系統(tǒng)和軟件系統(tǒng)兩大部分組成,系統(tǒng)總體結(jié)構(gòu)框圖如圖4所示。在硬件系統(tǒng)與軟件系統(tǒng)都安裝與調(diào)試穩(wěn)定之后,通過上位機(jī)的控制,讓裝備有水下視覺成像系統(tǒng)的巡查機(jī)器人對(duì)水下管道進(jìn)行巡檢。
圖4 水下石油管道巡查機(jī)器人控制系統(tǒng)總體結(jié)構(gòu)框圖
水下巡查機(jī)器人就是將攝像頭采集到的信息交給控制器處理,控制器周期性地讀取攝像頭模塊中的信息,并通過WiFi模塊將信息傳輸給遠(yuǎn)程控制端的上位機(jī)程序,上位機(jī)再生成驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)工作的控制信號(hào),工作人員可以實(shí)時(shí)看到水下情況,根據(jù)水下實(shí)際情況,水面上的工作人員也可以通過上位機(jī)程序發(fā)布最新命令來控制機(jī)器人下一步的行動(dòng),該命令也是通過WiFi模塊傳送給主控芯片,主控芯片生成相應(yīng)的控制信號(hào)來驅(qū)動(dòng)舵機(jī)進(jìn)行左右轉(zhuǎn)向控制。
水下石油管道巡查機(jī)器人主要通過檢測管道表面是否有油泡來判斷其表面是否漏油,因此將系統(tǒng)分為運(yùn)動(dòng)控制系統(tǒng)、圖像采集系統(tǒng)、人機(jī)交互系統(tǒng)3部分,3個(gè)系統(tǒng)之間互相連接,共同控制水下機(jī)器人整體的運(yùn)行。
水下石油管道巡查機(jī)器人的運(yùn)動(dòng)控制系統(tǒng)采用STM32單片機(jī)與舵機(jī)結(jié)合模式,圖像采集處理系統(tǒng)采用STM32單片機(jī)與攝像頭結(jié)合方式,而人機(jī)交互系統(tǒng)則采用STM32單片機(jī)、WiFi模塊與上位機(jī)程序共同協(xié)作的模式??刂葡到y(tǒng)硬件邏輯結(jié)構(gòu)圖如圖5所示。
圖5 控制系統(tǒng)硬件邏輯結(jié)構(gòu)圖
主控芯片采用STM32F103ZET6,其內(nèi)核為ARM公司設(shè)計(jì)的基于ARMv7架構(gòu)的32位Cortex-M3微控制器內(nèi)核,具有的定時(shí)器足以產(chǎn)生驅(qū)動(dòng)舵機(jī)的PWM信號(hào)[12]。
攝像頭作為圖像采集模塊,在此任務(wù)中主要是拍攝焊接處的油泡,攝像頭的性能直接決定了任務(wù)的成功與否。實(shí)驗(yàn)中,綜合攝像頭的性價(jià)比和成像效果后,采用了OV7725攝像頭模塊。
通信模塊是機(jī)器人本體與上位機(jī)程序進(jìn)行信息交流的媒介,選用通信模塊的主要依據(jù)就是通信快、距離遠(yuǎn)、信息傳遞準(zhǔn)確。目前比較流行的通信方式有WiFi、藍(lán)牙、無線網(wǎng)、ZigBee和NFC等,它們都有各自的優(yōu)缺點(diǎn)??紤]到水下機(jī)器人傳輸距離遠(yuǎn),數(shù)據(jù)傳輸速度快的要求,可以選擇WiFi方式。ESP8266模塊體積小,便于安裝,能嵌入到大多數(shù)的產(chǎn)品中去,支持AP、STA、AP+STA三種模式,也支持AT指令,有利于編程,因此,采用此模塊。
仿生魚式的機(jī)械結(jié)構(gòu),其尾舵是執(zhí)行機(jī)構(gòu),舵機(jī)的轉(zhuǎn)矩通過傳動(dòng)機(jī)構(gòu)傳達(dá)至尾舵,尾舵劃水為整個(gè)裝置提供動(dòng)力和轉(zhuǎn)向功能。采用單舵機(jī)能準(zhǔn)確控制轉(zhuǎn)角,它的轉(zhuǎn)速是隨著PWM信號(hào)占空比的改變而改變(角度與脈沖比的關(guān)系如圖6所示),且STM32控制器自帶生成PWM信號(hào)的定時(shí)器,所以舵機(jī)能準(zhǔn)確完成任務(wù),且驅(qū)動(dòng)程序簡單。
圖6 角度與脈沖比的關(guān)系圖
按照與硬件設(shè)計(jì)的相關(guān)程度,軟件系統(tǒng)可分為3個(gè)層次:運(yùn)用層、系統(tǒng)層和硬件驅(qū)動(dòng)層。運(yùn)用層是3個(gè)層次中最高的一層,它與底層硬件關(guān)聯(lián)性最小,開發(fā)運(yùn)用軟件幾乎是無法關(guān)注到硬件的狀態(tài),也不需要知道底層狀態(tài)。相反,硬件驅(qū)動(dòng)就是時(shí)時(shí)刻刻與底層硬件打交道,底層程序就是為運(yùn)用層層序提供函數(shù)接口的。系統(tǒng)軟件是介于運(yùn)用軟件與底層軟件之間的,它的作用是管理計(jì)算機(jī)或單片機(jī)資源,是底層程序與運(yùn)用層程序通信的橋梁。按照這3個(gè)層次,水下機(jī)器人軟件總體結(jié)構(gòu)框圖如圖7所示。
圖7 控制系統(tǒng)軟件總體結(jié)構(gòu)框圖
該控制系統(tǒng)主要是完成底層驅(qū)動(dòng)程序的設(shè)計(jì),包括:攝像頭驅(qū)動(dòng)、舵機(jī)驅(qū)動(dòng)和WiFi模塊的驅(qū)動(dòng),以及運(yùn)用層軟件的編寫。系統(tǒng)軟件采用現(xiàn)成的實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅲ[13-14]。
首先初始化系統(tǒng),包括系統(tǒng)時(shí)鐘、串口初始化、定時(shí)器中斷初始化。然后配置各個(gè)模塊,開啟串口攝像頭周期性的拍照,通過WiFi模塊將照片上傳至上位機(jī)程序,上位機(jī)程序處理圖像后,判斷出是否有油泡產(chǎn)生,若有則表明此處油管道漏油,并且通過這些圖片要判斷出機(jī)器人是否將沿著油管道直行,若不是直行,則上位機(jī)程序要發(fā)送最新指令改變舵機(jī)的擺動(dòng)方向及速度,以此來控制機(jī)器人沿著油管道前進(jìn)。圖8為水下油管道巡查機(jī)器人控制系統(tǒng)軟件流程圖。
圖8 控制系統(tǒng)的軟件流程圖
水下機(jī)器人控制算法采用數(shù)字PID控制器。數(shù)字PID 控制器具有結(jié)構(gòu)簡單、參數(shù)整定方便、能滿足大多數(shù)控制性能要求等優(yōu)點(diǎn)。水下機(jī)器人控制的核心是動(dòng)力和轉(zhuǎn)向功能控制,因此,控制效果直接決定了機(jī)器人能否準(zhǔn)確拍照。另外水下機(jī)器人需要對(duì)上位機(jī)控制指令作出響應(yīng)[15]。
水下機(jī)器人采用KEIL5軟件對(duì)STM32控制器進(jìn)行編程,通過串口將程序下載到控制器。Keil μVision5由美國Keil SoftWare公司推出,支持Cotex-M內(nèi)核集成開發(fā),它提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個(gè)強(qiáng)大的仿真功能在內(nèi)的全套開發(fā)方案。
驅(qū)動(dòng)各個(gè)模塊后,接下來就是讓它們協(xié)調(diào)工作,完成最后的任務(wù),因此在μC/OS-Ⅲ系統(tǒng)上分配多個(gè)任務(wù)和對(duì)應(yīng)的優(yōu)先級(jí),使其有條理地工作。在本項(xiàng)目中有3個(gè)模塊,分別是:串口攝像頭、ESP8266通信模塊和舵機(jī),所以分配了3個(gè)相互對(duì)應(yīng)的任務(wù):AppTaskCamera、AppTaskWifi、AppTaskSteer。然后使用μC/OS-Ⅲ系統(tǒng)的信號(hào)量機(jī)制實(shí)現(xiàn)這些任務(wù)之間的通信。本項(xiàng)目需要?jiǎng)?chuàng)建4個(gè)信號(hào)量:“SemOfCamera”、“SemOfWifi”、“SemOfKey1”和“SemOfKey2”,其中“SemOfCamera”用來標(biāo)志串口相機(jī)采集數(shù)據(jù)完成,而當(dāng)AppTaskWifi任務(wù)收到該信號(hào)量后才會(huì)向上位機(jī)發(fā)送圖像數(shù)據(jù),待上位機(jī)處理完該圖像后,上位機(jī)發(fā)送相應(yīng)的控制指令,這里“SemOfKey1”和“SemOfKey2”分別模擬了兩種不同的指令:左轉(zhuǎn)和右轉(zhuǎn),同時(shí)AppTaskSteer(舵機(jī)任務(wù))中分別等待“SemOfKey1”和“SemOfKey2”,當(dāng)收到“SemOfKey1”時(shí),讓舵機(jī)在左半?yún)^(qū)域來回?cái)[動(dòng)模擬右轉(zhuǎn),當(dāng)收到“SemOfKey2”時(shí),讓舵機(jī)在右半?yún)^(qū)域來回?cái)[動(dòng)模擬左轉(zhuǎn)。具體的控制流程如圖9所示。
圖9 控制系統(tǒng)總體的軟件流程圖
通過產(chǎn)生準(zhǔn)確的PWM(脈沖調(diào)制)信號(hào)可以精準(zhǔn)地控制舵機(jī)的轉(zhuǎn)角,所以舵機(jī)的調(diào)試本質(zhì)上是調(diào)試PWM信號(hào)。
串口攝像頭所獲取到圖片是十六進(jìn)制數(shù),圖片的格式為0XFF0XD8+圖片+0XFF0XD9,所以調(diào)試串口相機(jī)主要看程序能否得到完整的圖片信息。計(jì)算機(jī)識(shí)別圖片從本質(zhì)上說就是識(shí)別圖片的二進(jìn)制代碼,剛好直接將這些數(shù)據(jù)傳輸至上位機(jī)。
ESP8266模塊作為系統(tǒng)的通信模塊,由于該模塊流程比較多,所以采用KEIL5軟件自帶的調(diào)試的功能,單步調(diào)試。先是創(chuàng)建熱點(diǎn),設(shè)置該熱點(diǎn)的IP地址;然后開啟服務(wù)器模式,設(shè)置端口為8080,并通過“Printf()”將調(diào)試信息打印出來。通過調(diào)試信息可知,該ESP8266模塊是作為AP,并且設(shè)置了熱點(diǎn)的用戶名為:“Robot_thirdd”,登錄密碼為:66666liu,成功連接該熱點(diǎn)。上位機(jī)便可以和該模塊通信。
上面分別對(duì)串口相機(jī)、舵機(jī)、ESP8266模塊進(jìn)行了調(diào)試,在這些模塊正常工作的情況下,還應(yīng)該再進(jìn)行系統(tǒng)的整體調(diào)試,讓這些模塊協(xié)調(diào)工作以完成本項(xiàng)目的原始目標(biāo)。最終,系統(tǒng)設(shè)計(jì)的水下石油管道巡查機(jī)器人實(shí)現(xiàn)了通過上位機(jī)控制舵機(jī)。上位機(jī)顯示原圖和處理后的圖片,并且下發(fā)控制指令,以調(diào)節(jié)舵機(jī)的轉(zhuǎn)動(dòng)方向。上位機(jī)界面如圖10所示。
圖10 上位機(jī)界面顯示圖
本文設(shè)計(jì)了一種基于μC/OS-Ⅲ的水下石油管道巡查機(jī)器人運(yùn)動(dòng)控制系統(tǒng),采用STM32作為圖片信息的處理中心并控制水下機(jī)器人的運(yùn)動(dòng)達(dá)到拍攝水下石油管道泄漏點(diǎn)圖片的目的。水下機(jī)器人內(nèi)置的ESP8266可以將水下機(jī)器人拍攝的圖片反饋給上位機(jī)進(jìn)行顯示并進(jìn)一步處理,同時(shí)上位機(jī)可以發(fā)送指令改變舵機(jī)的參數(shù)以此來控制機(jī)器人沿著管道前進(jìn)。
由于場地的限制,本系統(tǒng)采用在淺層水域進(jìn)行模擬的方法進(jìn)行測試。采用直徑為35 mm、長度為40 cm的PVC水管模擬石油管道。在PVC管道上面鉆出一個(gè)直徑為3 mm的空洞,模擬石油管道漏油孔。圖像識(shí)別測試時(shí),將水下管道巡查機(jī)器人檢測試驗(yàn)時(shí)采集到的視頻取幀,如圖11和圖12所示,分別顯示了石油泄露之前處理前后的圖像。
圖11 泄露之前原圖像
圖12 泄露之前處理圖像
由于沒有石油的泄露,在石油泄露初期處理后的圖像沒有看到油泡的輪廓。如圖13、圖14所示,顯示了石油剛開始泄露的圖像。圖13中,有兩顆油泡位于泄露孔上方,而在處理過的圖像中,正確顯示了兩顆球狀的氣泡輪廓。
圖13 泄露初期原圖像
圖14 泄露初期處理圖像
為了驗(yàn)證非球狀的氣泡輪廓是否能夠檢測出來,再次模擬了石油在水中的其他形狀。圖15顯示了石油大量泄露時(shí)的情形,圖16表明準(zhǔn)確檢測出的大概輪廓。綜上所述,該系統(tǒng)的圖像預(yù)處理效果良好。
圖15 大量泄露原圖像
圖16 大量泄露處理圖像
綜上所述,該系統(tǒng)可以達(dá)到良好的運(yùn)動(dòng)性能,滿足水下拍照、圖像回傳的要求,可以實(shí)現(xiàn)無線控制,能從水下圖像中獲取有效的圖像,分析圖像可以得到水下的泄露信息。系統(tǒng)運(yùn)行可靠、通信穩(wěn)定、性價(jià)比高。調(diào)試結(jié)果表明,該系統(tǒng)控制性能良好,安全可靠,能夠滿足水下機(jī)器人的基本航行功能,為水下石油管道的巡查提供了一種有效的辦法。