丁杰月,張延兵,談英姿
(1.東南大學自動化學院,江蘇 南京 210096)(2.江蘇省特種設備安全監督檢驗研究院南通分院,江蘇 南通 226000)
進入21世紀后機器人產業得到迅速發展,機器人種類繁多,表現形式各種各樣。其中爬壁機器人在各行各業也開始大放異彩。爬壁機器人的研制在國內起步較晚,哈爾濱工業大學機器人研究所是國內最早研制爬壁機器人的科研機構,其代表性爬壁機器人是多功能履帶式罐壁噴涂檢測磁吸附爬壁機器人[1]。此外國內其他高校如清華大學、上海交通大學、東南大學、大連海事大學及寧波大學等都在研發爬壁機器人,但各自應用場景不同[2]。
機器人包括機械結構和控制系統兩部分,本文研究的爬壁機器人主要應用于罐體檢測,采用永磁吸附、雙電機驅動,因此其機械結構部分復雜度較小,研究的重點在控制系統部分,主要的難點在控制系統的魯棒性和通用性[3]。永磁吸附爬壁機器人屬于移動機器人的一種,其控制系統應該具有一定的決策能力,通過獲取環境變量可以實現與用戶的實時交互,搭載檢測傳感器完成檢測任務。本文主要介紹了機器人控制系統硬件構成和軟件系統的實現方法。以工控機、視覺傳感器、姿態傳感器和高精度里程計為硬件基礎,實現了機器人穩定運行和空間定位功能,并基于Qt5.0和Android3.0設計了多平臺的操控端。
檢測要求:機器人能夠在垂直壁面穩定移動,能夠檢測壁面溫度、壁面障礙物和機器人本體的姿態。
定位要求:在不改變現場環境的情況下,機器人要能夠實現本體的空間定位,且定位精度在厘米級別。
通信要求:服務器和操作端能夠同時互相傳輸圖像和控制指令,且圖像傳輸時延應在0.3s之內。服務器端和傳感器之間的通信誤碼率應低于0.1%。
交互需求:操作人員能夠遠程遙控機器人,包括設定機器人的運動模式、設定機器人的運動速度、設定機器人的檢測任務等,通過設計的操作端能夠監測機器人的運行狀態。
安全需求:機器人能夠實現電池電量自檢測及電量過低報警、溫度監控異常報警等。
控制系統由服務器端、傳感器網絡、驅動機構、通信模塊、操作端組成。其中服務器端、傳感器網絡、驅動機構之間通過RS-485總線進行通信。服務器端和操作端之間通過TCP/IP、UDP協議進行通信。系統的整體架構如圖1所示。
機器人本體硬件系統是機器人運動的基礎平臺,一個好的硬件系統可以極大地提升機器人控制系統的穩定性。本文中控制系統硬件設計采用模塊化設計方式[4]。系統硬件主要包括電源模塊、控制器模塊、傳感器模塊、通訊模塊、運動模塊等。硬件系統整體設計如圖2所示。

圖1 系統整體架構

圖2 硬件系統整體設計
電源模塊在整個控制系統中的作用非常重要,它直接決定整個系統的穩定性。機器人硬件系統使用24V鋰電池供電,雖然大容量且小體積的鋰電池成本高,但其輸出電壓穩定,自放電小,沒有記憶效應,工作溫度范圍寬,可快速充放電,使用壽命長、污染小[5]。電源模塊采用多級降壓方式,通過直流降壓模塊將24V電壓轉換成12V、6~7V、5V、3V多種輸出電壓。其中12V轉換模塊額定功率為80W,主要給控制器模塊、視覺模塊、路由器、運動模塊中的驅動器模塊供電;6~7V電源模塊額定功率為40W,主要給機器人二次運動模塊中的舵機供電;5V、3V電源模塊主要給傳感器網絡提供電源。由于電源系統采用多級降壓穩壓,前級電源產生的干擾信號很有可能對下級電源模塊產生干擾,為保證各級電源可靠工作,必須強化各級電源的前、后濾波,使干擾降到最小[6],因此在前、后級電源模塊之間增加了濾波電容。
機器人本體控制器采用ADVANTECH2236-j1900控制器。該款控制器有豐富的外設接口如SATA、mSATA、RJ45、USB、RS-485、VGA、HDMI、HD Audio等。控制器可以搭載Ubuntu16.04操作系統,配合多線程機制可以輕松實現圖像處理、控制運算和數據傳輸等功能,處理器性能完全能滿足控制要求。
傳感器模塊分為兩個部分。第一部分與感知、運動有關,主要包括四通道超聲波傳感器、非接觸式測溫傳感器、紅外測距傳感器、6軸姿態儀、網絡攝像頭、高精度編碼器、接近開關等;第二部分與罐體壁面檢測有關,該部分主要包括測厚儀、焊縫檢測儀、探傷儀等。
運動模塊由兩個直流電機和電機驅動器組成。電機的最大輸出功率是實際負載的1.5倍,設計時選用了體型較小的MAXON電機,驅動器選擇Motec HIPPO驅動器,最大輸出功率可達500W,具有一定的余量。
控制器、傳感器、運動機構之間使用RS-485總線通信。使用RS-485總線可以將多個傳感器構成一個傳感器網絡,節約外設接口資源。綜合考慮傳輸質量、距離和抗干擾性能及數據量,RS-485總線使用9 600波特率[7]。機器人本體控制器和操作端之間使用TCP/IP和UDP協議通信。在網絡連接正常情況下,TCP/IP協議傳輸質量遠遠的高于UDP協議,而UDP的傳輸速率卻遠高于TCPSocket,所以控制指令使用TCP/IP協議進行傳輸,圖像傳輸則使用UDP協議。
機器人控制系統的軟件系統包括本體控制系統和遠程操控系統,軟件系統使用C/S架構、MVC設計模式。機器人本體控制系統作為服務器端,可實現多操作端同時登錄、同時操控。在MVC模式中,M為數據層(model),主要包括傳感器數據和機器人狀態信息;C 為控制層(controller),主要負責控制算法的實現、數據轉發、實時報警、操作端管理等[8];V為View層,該層負責實現與用戶的交互、實時數據圖像顯示。MVC各層的功能如圖3所示。
爬壁機器人作為移動平臺,除了搭載其他設備還要能夠按照指定的路徑移動,且能夠實現空間定位。為了彌補傳統定位的缺陷,本研究通過融合姿態儀和里程計的方式實現了空間定位。

圖3 MVC各層功能
機器人本體控制系統使用了多線程技術。系統包括1個主線程和5個子線程,通過使用共享內存的方式在多個線程之間傳遞數據。此外系統中還使用了指令緩沖隊列的方法,即所有線程共享一個指令隊列,當接收到控制指令時將指令存入到指令隊列中,當執行完成一條指令后將該指令從指令隊列中刪除[9]。如果指令隊列長時間為空狀態,則部分線程進入休眠狀態,讓出系統CPU資源給其他線程。
主線程主要執行全局對象的初始化、子線程的開啟和關閉、服務器端UI的維護、本體運動控制以及檢測運動控制。主線程程序流程圖如圖4所示。

圖4 本體控制系統主線程程序流程圖
第一個子線程為Socket線程,負責操作端的接入和退出、Socket通信、數據編解碼以及數據存儲。程序流程框圖如圖5所示。
第二個子線程為感知器數據采集線程,負責傳感器數據采集和存儲。
第三個線程是圖像采集和傳輸線程,該線程主要負責攝像頭的登錄、退出及圖像的采集和轉發。
第四個線程是數據處理線程,該線程主要負責處理傳感器反饋的數據和圖像,對數據進行矯正補償、姿態檢測、信號報警。如當紅外測距傳感器所測得的距離超過設定的閾值時系統將會發送越界信號,當里程計數值未發生變化而姿態儀中加速度計數值劇烈波動時系統將會發送墜落信號。

圖5 本體Sokcet線程程序流程圖
第五個線程是在焊縫識別技術的基礎上通過查詢罐體焊縫數據庫、融合姿態儀和里程計的方式實現機器人空間定位。傳統定位方式在罐體定位中無法正常工作,因為基于傳統的超聲、紅外、WiFi等方式的定位原理要求信號收發器處于空間同一平面,且中間無遮擋物。因此在該線程中根據實際焊縫的特點通過融合姿態儀、里程計方式實現了機器人基于焊縫編號的空間定位方式。實際罐體焊縫如圖6所示。定位過程主要分3步:焊縫編號確定、多傳感器位移計算、多傳感器位移融合。

圖6 實際焊縫樣圖
1)焊縫工程編號確定。
使用姿態儀和里程計可以實現機器人的空間定位,但是由于里程計和姿態儀都存在累計誤差,所以機器人運行時間越長定位誤差越大。為了消除累積誤差,可以使用分段定位的方式,即運行一定的距離后將傳感器重新置零。采用在罐體表面貼標記實現分段定位的方式會增加檢測的人力成本。由于大型罐體是由多塊鋼板拼接而成的,其焊縫都是規則的直線段,因此充分利用罐體焊縫的已有特征,對焊縫上焊點的標定采用分段標定方式,其坐標為(焊縫編號ID,距離焊縫起點距離Pos),其中ID通過視覺傳感器確定。焊縫的起始點和結束點都是匯合點(多個焊縫的相交點),當檢測到第一個匯合點時即為一條焊縫的起始點。機器人沿著某條焊縫移動,當再次檢測到匯合點時,此匯合點即為此條焊縫的結束點。通過紋理檢測可以精確地識別焊縫的匯合點[10],當識別到匯合點之后查詢數據庫確定焊縫的工程編號。結合圖6將實際焊縫抽象成如圖7所示的焊縫示意圖,機器人沿0號焊縫箭頭方向駛入匯合點,當機器人通過視覺傳感器識別出匯合點的同時識別出匯合點處所有的焊縫,對匯合點處的焊縫按順時針方向進行編號,機器人根據決策規律駛入下一條焊縫如2號焊縫,此時查詢數據庫可知該焊縫在數據庫中的工程編號為c,因此其焊點坐標可表示為(c,Pos),其中Pos根據2)、3)確定。

圖7 焊縫示意圖
2)位移計算。
里程計將轉動軸的角位移、角速度等機械量轉換成相應的電脈沖以數字量輸出。通過計算里程計信號差值可以得到轉軸轉動距離,因此可以求得機器人的實際位移。本文中使用的里程計為Maxon 1024高精度光電式編碼器,即電機軸每旋轉一圈編碼器產生1 024個脈沖信號。機器人電機轉速為w,減速比為a,輪徑為r,里程計初始值為S0,t時刻里程計的值為St,則機器人移動距離L1(t)(m/s)為:
本研究選用的姿態儀傳感器由三軸加速度計和三軸陀螺儀構成,可以分別輸出x,y,z各軸的加速度、角速度、角度。對x,y,z三軸的加速度做兩次積分可以計算出機器人的位移。姿態儀的采樣頻率為200Hz,機器人工作時行走速度為0.2~0.5m/s,一個采樣周期內機器人移動的距離為1.0~2.5mm,對此作積分計算求得的位移可以近似為機器人移動的距離。根據加速度計算得到的機器人移動距離L2(t)(m/s)為:

式中:*代表x,y,z;n為采樣周期;ax,ay,az分別為x,y,z軸向的線加速度;Vx,Vy,Vz分別為x,y,z軸向的線速度。
3)姿態儀和里程計定位融合。
機器人的實際移動路徑和規劃路徑存在偏差,因此里程計的定位位移始終大于實際位移。而姿態儀是通過近似、求和、積分的方法計算位移,其中存在計算模型誤差,導致所求的位移小于實際位移[11]。通過分析可知,機器人沿焊縫勻速行走時,其角度可能發生變化,但角加速度不會變化。基于此,采用自適應權重方法將兩種位移算法融合在一起[12],計算方式如下。其中L為融合后的位移,L1為里程計計算得到的位移即L1(t),L2為姿態儀計算得到的位移即L2(t)。
L=k1L1+k2L2,k1+k2=ka,ka≤1
式中:k1為L1的權重;k2為L2的權重;ka可以通過自適應算法確定,也可以根據經驗值確定。k1,k2,ka的確定規則如下:①機器人運行穩定,則ka=1,k1=k2=0.5;②機器人運行不穩定但角速度變化穩定,則ka=1,k1+k2=1,k2>k1;③機器人運行不穩定且角速度變化不穩定,則k1+k2=ka,k1=k2=ka/2。ka通過經驗值確定,將多次實驗得到的數據存儲在表中,機器人運行時根據運行狀態查表可得具體值。
機器人操控端主要任務是完成控制系統與操作員的交互,因此需要有良好的用戶體驗。為了支持多平臺操控,分別設計了PC版和Android版的操控端。
1)PC操控端設計。
Windows和Linux版本操控端的設計都是基于Qt 5.0完成的。Qt具有跨平臺性,即在一個平臺編寫好源代碼之后,在目標平臺編譯即可運行,無需重新編寫代碼。其設計思想依然以線程為對象,不同線程完成不同的任務。PC操控端設計如圖8所示。

圖8 Windows、Linux版PC操控端
2)Android操控端設計。
Android操控端是基于Android studio3.0實現的,操控端可以運行在Android 平板、Android 手機以及Android模擬器上。Android Studio設計的界面交互性比Windows的更貼近用戶使用習慣,更便于攜帶操作。Android操控端設計界面如圖9所示。

圖9 Android操控端
為了驗證系統的可行性和魯棒性,以SEU_CLIMB_ROB_I 型爬壁機器人為實現平臺,進行多次實際操作測試,對系統進行驗證。圖10為爬壁機器人在豎直壁面移動的測試圖。通過上位機實時顯示機器人的狀態信息和傳感器數據。圖11為傳感器采集的機器人的實時數據和狀態信息。通信方面采用無線和有線兩種傳輸方式,當無線通訊干擾較強時,機器人可以選擇有線通信,實驗中通信線路可以穩定地傳輸數據。
在機器人穩定工作的基礎上對定位的可行性做了實驗驗證,圖12為定位實驗數據,圖13為根據定位數據繪制的曲線,通過融合姿態儀和里程計兩種定位方式,可以較好地實現爬壁機器人空間定位,從而克服傳統定位方法在空間有障礙情況下無法定位的缺點,圖12中相鄰定位點的距離均小于1cm,因此定位識別精度在厘米級別,滿足定位精度的需求。

圖10 機器人功能測試圖

圖11 傳感器數據

圖12 定位實驗數據

圖13 定位曲線
本文針對應用于罐體設備檢測的爬壁機器人設計了一套完整的控制系統,結合模塊化設計思想和MVC設計模式使得系統層次清晰。硬件系統由多個模塊組成,除電源模塊之外,各模塊可獨立工作,極大程度降低了硬件系統的耦合性,因此也降低了機器人宕機的風險。軟件采用C/S架構,機器人本體為服務器,實現了對機器人的控制;操控端則作為客戶端,完成與用戶的交互、監控等功能。實驗結果表明,該控制系統可以穩定地控制爬壁機器人的運動。通過融合姿態儀和里程計的方式實現機器人的空間定位,該方法定位精度能滿足實際要求。通過長時間的運行和重復實驗,驗證了控制系統的穩定性和魯棒性,能夠滿足罐體設備檢測的爬壁機器人控制需求。總體而言,該系統魯棒性強、耦合性低、功能擴展性好。但該系統仍然有提升優化的空間,如機器人內部空間小導致機體內部熱量難以散發、系統對設備的精度要求高導致設計成本偏高等問題。