馬 鑫,吳銀川
(西安石油大學 陜西省油氣井測控技術重點實驗室,西安 710065)
石油管道巡檢工作是管道日常維護的重要環節,國內石油管線巡護以傳統人工巡檢為主,受人為和地理區域因素的影響,導致復雜地理環境下的管線以及人力無法達到區域的場所,巡檢困難[1]。隨著科技的發展和人類探索空間的擴大,機器人技術的應用更為廣泛,設計出對地形適應能力強的機器人日益重要[2]。在智能機器人領域中,應用于陸地工作的移動機器人主要包括履帶式機器人、輪式機器人和足式機器人等。根據以往的研究表明,輪式機器人在較為平坦的地形上行駛時,比足式、履帶式機器人具有移動速度迅速,移動平穩,控制簡單的優勢,但在崎嶇地面移動時,這些能力就會大打折扣,而履帶式移動方式雖然在崎嶇地面也能行走,但是這種方式無法適應環境多變的一些特殊場景。前兩者因其操作簡單、移動速度快等優點,主要用于地形較為平坦的區域;足式機器人因為具有立足點離散、運動方式靈活多變等優勢,適用于具有非線性結構化特點的真實場景[3]。
為了使六足機器人各肢體能更好地協調,以及使六足機器人能更好地適應石油管道巡檢中各種復雜環境,需要對其步態、控制系統進行分析和設計。因此,本文設計了一種六足機器人控制系統,以STM32F103RCT6作為主控板,采用舵機驅動板控制機器人移動,配置傳感器模塊,從而實現石油管道智能巡檢。
本設計腿部機械結構如圖1所示,圖1中機器人共有六條腿,中間紅色區域作為機器人主體可裝置各類傳感器和機器人電路系統,機器人每條腿都由3個舵機組成,分別形成六足機器人的髖關節、膝關節和踝關節,其中1、4、7、10、13、16號舵機為六足機器人髖關節,2、5、8、11、14、17號舵機為機器人膝關節,3、6、9、12、15、18號舵機為機器人踝關節,髖關節主要負責機器人腿部的轉動,膝關節和踝關節負責機器人腿的抬升運動,膝關節和踝關節之間采用弧形連接件形成機器人的大腿,弧形結構可以有效地增強大腿抵抗外力的強度,踝關節與地面之間同樣采用弧形連接件形成小腿,這樣可以使機器人在移動過程中保持平穩。這種機械結構具有結構簡單、行走平穩等特點,相對于傳統的輪式和履帶式移動方式,這種機械結構更適合在復雜環境中移動[4]。

圖1 六足機器人正視圖Fig.1 Front view of hexapod robot
本設計共分為主控板、舵機驅動板、電源、降壓電路、舵機等部分,其中主控板采用STM32F103RCT6,舵機驅動板采用PCA9685,舵機型號采用MG996R舵機,電路系統框架圖如圖2所示。傳感器模塊通過采集外部信息,然后將采集到的數據信息通過數據接口反饋給主控板,主控板根據傳感器模塊反饋回來的數據判斷外部環境是否適合機器人行走,接著電源模塊通過降壓電路給舵機驅動板提供穩壓電壓,主控板通過I2C接口控制舵機驅動板,然后舵機驅動板通過PWM控制舵機轉動,從而使機器人移動。

圖2 電路系統框架Fig.2 Circuit system framework
本文設計的六足機器人主要包括以下模塊:STM32F103系列主控板、舵機驅動板、電源模塊、傳感器模塊,其中舵機驅動板采用PCA9685。現對六足機器人驅動部分闡述如下:
舵機驅動采用舵機驅動板控制,舵機驅動板與控制板串口連接如圖3所示。驅動板與主控板之間采用I2C方式通信,OE引腳連接主控板PC5接口,低電平使能有效,I2C通信總線由數據線SDA和時鐘線SCL構成。當I2C總線處于空閑狀態時,數據線SDA和時鐘線SCL均為高電平。

圖3 主控板與驅動板接口Fig.3 Interface between main control board and driver board
I2C通信過程由開始、發送、響應、接收、停止5個部分組成,I2C通信時序如圖4所示。在開始信號之后,主控板發送開始信號。當時鐘線SCL處于低電平時,數據線SDA允許改變數據;當時鐘線SCL處于高電平時,數據線SDA不能改變數據[5]。在I2C通信協議中,一個時鐘周期只能傳輸1bit數據,數據傳輸8個時鐘周期后,在第9個時鐘周期內,舵機驅動板將數據線SDA變為低電平,并且產生一個應答信號給主控板。若在第9個時鐘周期內,時鐘線SCL為高電平,數據線SDA未被主控板檢測到為低電平時,則視為舵機驅動板沒有產生應答信號,表明數據傳輸失敗,然后舵機驅動板釋放數據線SDA以使主控板繼續傳輸數據,如果主控板發送停止信號,則此次數據傳輸結束[6]。

圖4 I2C通信時序Fig.4 I2C Communication timing
本設計所需18個舵機,且1個驅動板只有16個舵機接口,因此通過采用兩個驅動板串聯的方式使驅動板與舵機連接,驅動板與舵機連接方式如圖5所示。驅動板與每一個舵機連接都需要3根線,分別是電源線VCC、控制線PWM和地線GND,其中控制線用來輸出PWM脈沖。驅動板通過PWM線向舵機配置脈沖從而控制舵機轉動,舵機轉動的角度和控制線配置PWM脈沖的寬度成正比。因此,通過I2C總線協議,使兩個舵機驅動板可以產生18路PWM脈沖,從而控制六足機器人移動[7]。

圖5 驅動板與舵機接口Fig.5 Interface between drive board and steering gear
六足機器人整個驅動部分是由兩塊舵機驅動板串聯而成,在實際中,每塊舵機驅動板都有1個確定的控制命令,每塊驅動板的控制命令都由4部分組成:驅動板地址、舵機地址、脈寬起始地址LED_ON、脈寬結束地址LED_OFF。舵機驅動板控制命令格式為:
驅動板地址(1個字節)+舵機地址(1個字節)+脈寬起始值on(2個字節)+脈寬結束值off(2個字節)。
驅動板地址共有8位,其中最高地址位固定為1,最低位為W/R讀寫模式選擇,第二位到第七位地址位由驅動板外接電平確定。當寫入程序時,第一個舵機驅動板地址的最高位不變,其余7個地址位為0。不同的是,第二個舵機驅動板的第6個地址位為1。因此,第一個舵機驅動板的器件地址為0x80,第二個舵機驅動板的器件地址為0x84。一個舵機驅動板上可以控制16個舵機通道,每個通道的地址設置為0x00、...、0x0F。
每個PWM通道有4個寄存器LEDn_ON_H、LEDn_ON_L、LEDn_OFF_H、LED_OFF_L,舵機驅動板通過采用控制PWM脈沖寬度的方式來控制舵機旋轉的角度,關系如圖6所示,寄存器LEDn_ON_H和LED_ON_L控制輸出脈沖寬度的起始值on,LEDn_OFF_H和LEDn_OFF_L控制輸出脈沖寬度的結束值off。由于舵機驅動板的分辨率為12位,所以脈沖寬度起始值on和結束值off的范圍為0~4095,其中脈沖寬度起始值on設置為0,并且一般舵機只能旋轉180°,接收PWM的頻率為50Hz,則有舵機角度與輸入脈沖時間對應 :0°-0.5ms、45°-1.0ms、90°-1.5ms、135°-2.0ms、180°-2.5ms,角度φ與脈沖寬度結束值off的關系如式(1)所示:

圖6 舵機PWM脈寬Fig.6 Servo PWM pulse width
以舵機驅動板1為例,使其中舵機1旋轉60°,則off為239,十六進制為0x00ef,則其命令格式為:0x80(驅動板地址)+0x00(舵機地址)+0x0000(脈寬起始值)+0x00ef(脈寬結束值)。
目前,常見的六足機器人步態主要有三角步態和四足步態、五足步態。四足步態為機器人在任意時刻的狀態均為四足支撐,同時機器人的兩側各有一足向前擺動;五足步態是將六足機器人的六條腿按照順序依次前進,每次只有一條腿移動,另外五條腿支撐機器人;三角步態也稱交替三角步態,由機器人一側的前足、后足和另外一側的中足構成兩組交替擺動,三角步態是自然界中多數昆蟲最常使用的一種步態,也被譽為最快速有效的靜態穩定步態。由于四足步態的速度比三足步態快,五足步態在3種步態里面是最穩定的,但是由于四足步態在機器人移動過程中穩定性較差,五足步態在機器人移動過程中移動速度較慢,而且三角步態的移動模式簡單,速度和穩定性適中,因此非常適合步行架構的機器人的直線行走[8]。本文設計的六足機器人采用三角步態進行移動,以機器人前進為例,具體的步態分解如圖7所示。

圖7 機器人前進步態分解圖Fig.7 Decomposition diagram of robot's forward gait
六足機器人移動時將6個腿部分為兩個組,其中左側前腿(a)、右側中腿(d)、左側后腿(e)組成第一組,右側前腿(b)、左側中腿(c)、右側后腿(f)組成第二組。當機器人前進時,首先處于靜止站立狀態,接著左側前腿(a)、右側中腿(d)、左側后腿(e)抬起、向前轉動,然后右側前腿(b)、左側中腿(c)、右側后腿(f)向后轉動,同時左側前腿(a)、右側中腿(d)、左側后腿(e)落下,接著左側前腿(a)、右側中腿(d)、左側后腿(e)恢復原來的角度,并且右側前腿(b)、左側中腿(c)、右側后腿(f)抬起、向前轉動,然后右側前腿(b)、左側中腿(c)、右側后腿(f)落下,并且左側前腿(a)、右側中腿(d)、左側后腿(e)向后轉動,最后所有腿恢復靜止站立狀態。
編寫機器人主程序時,除了編寫主程序外,還需要編寫子程序,包括機器人的前進、后退、轉彎、避障等程序。在對機器人進行程序編寫時,首先進行系統初始化,包括I2C串口配置、GPIO的配置、舵機驅動板的地址分配等。初始化后,傳感器模塊傳輸數據,接著對接收到的數據進行判斷,最后通過控制占空比調節機器人關節角度,從而控制機器人移動[9]。以機器人避障程序為例,其避障程序流程圖如圖8所示。當機器人進行避障時,首先傳感器對機器人前方進行檢測,若機器人前方有障礙物時,則判斷障礙物與機器人之間的距離與安全距離的大小,若實際距離小于安全距離,機器人左轉,從而避開前方障礙物[10]。

圖8 避障程序流程圖Fig.8 Obstacle avoidance program flowchart
本設計選擇STM32F103RCT6作為主控板,PCA9685作為舵機驅動板,MG996R直流伺服舵機作為關節驅動,通過在PCA9685上控制脈沖寬度(PWM)來使舵機進行轉動,從而操縱機器人進行移動。在安裝機器人腿部關節時,需要調整舵機的角度以保證機器人移動過程中不會因為動作進行的順序發生碰撞,以保證機器人調試順利。等機器人的控制程序錄入后,通過在實驗室測試,測得機器人正常移動速度為2m/min,最小轉彎半徑為10cm,超聲波有效測量距離為2m。
通過在實驗室測試發現,機器人在地面可以穩定行走,并且在行走過程中可以有效地躲避前方障礙物,以及可以對周圍環境進行正常測量,但是機器人爬坡能力和避障能力還有待提高,且機器人控制方法可以進一步優化,后續還可以搭配其他傳感器以及攝像頭模塊,使機器人系統可以更好地適應石油巡檢管線環境。