吳國沛,李 華,林李波,張 鐵
(1.廣州供電局有限公司,廣東廣州 510620;2.華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東廣州 510641)
隨著國家對電力系統(tǒng)設(shè)備運(yùn)行安全及維護(hù)提出了更高的要求,變電站內(nèi)設(shè)備的安全及維護(hù)也具有更為重要的意義。國內(nèi)外對變電站巡檢機(jī)器人研究比較多。如羅建軍[1]研制了變電站巡視機(jī)器人,杜元翰[2]研究了遙操作電力巡檢機(jī)器人,該機(jī)器人通過遙控?zé)o線通信模塊實(shí)現(xiàn)機(jī)器人和遙控器的通信。
對于GIS的外部運(yùn)行狀況的巡檢同樣可以使用巡檢機(jī)器人完成,如牛勃[3]等研究了GIS局部放電的智能巡檢系統(tǒng),并將GIS局部放電信息通過4G無線通信網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程通信,將信息發(fā)送到巡檢機(jī)器人的主控制器。文獻(xiàn)[4-6]研制了一次作業(yè)可檢測距離不大于500 m的管道檢測機(jī)器人,但其只適用于Ф200 mm的管道;文獻(xiàn)[7]研制了采用4輪獨(dú)立伺服驅(qū)動的管道檢測機(jī)器人,該系統(tǒng)同樣只能實(shí)現(xiàn)對Ф200 mm管徑的地下輸水管道的檢測,且需拖纜控制,無法實(shí)現(xiàn)無線通信。
但對內(nèi)部故障或缺陷的表現(xiàn)形態(tài)和準(zhǔn)確位置的查找和判定是當(dāng)前行業(yè)內(nèi)關(guān)于GIS內(nèi)部檢查的主要問題。為解決這一問題,作者研制了一種面向變電站氣體絕緣金屬封閉開關(guān)設(shè)備的缺陷故障檢測,可在設(shè)備氣室內(nèi)部進(jìn)行水平、垂直方向直線運(yùn)動的仿壁虎機(jī)器人[8],并設(shè)計(jì)了機(jī)器人的通信系統(tǒng)。一般來說檢測機(jī)器人的通信方法常用的有采用無線網(wǎng)絡(luò)[9-11]、基于CAN總線、RS232總線[12]等。
本文針對所研制的4足關(guān)節(jié)式機(jī)器人的運(yùn)動控制原理,研究了基于無線通信的分布式控制系統(tǒng)之間的通信系統(tǒng)。
圖1為機(jī)器人實(shí)物及機(jī)構(gòu)原理。如圖1所示,為實(shí)現(xiàn)機(jī)器人在GIS內(nèi)壁的爬行,所研制的機(jī)器人采用了真空吸附的方式,設(shè)計(jì)成四足的結(jié)構(gòu)類似壁虎的爬行形式??紤]到GIS內(nèi)部的對稱結(jié)構(gòu),所設(shè)計(jì)的機(jī)器人四足的結(jié)構(gòu)為完全對稱的結(jié)構(gòu)。其中每條腿上有3個轉(zhuǎn)動關(guān)節(jié)和1個有球關(guān)節(jié)的吸附腳掌,如圖中的J11,J12,J13分別是機(jī)器人的3個轉(zhuǎn)動關(guān)節(jié),采用3個集成了傳感器的總線舵機(jī)。并在腿部末端上有帶球關(guān)節(jié)的真空吸附腳掌。因此,機(jī)器人每個足部具3個自由度,具有空間爬壁的能力[13]。
仿壁虎機(jī)器人分布式運(yùn)動控制系統(tǒng)由遠(yuǎn)程控制器(MC)、機(jī)載運(yùn)動控制器(RC)和輔助運(yùn)動控制器(AXUC)構(gòu)成,3個子控制器之間通過無線通信實(shí)現(xiàn)指令控制和返回狀態(tài)數(shù)據(jù)的功能。
圖2為機(jī)器人分布式運(yùn)動控制系統(tǒng)。如圖2所示,操作遠(yuǎn)程控制器(MC)給機(jī)載運(yùn)動控制器(RC)發(fā)送控制指令,機(jī)載運(yùn)動控制器(RC)收到指令后,與輔助運(yùn)動控制(AXUC)通信獲取輔助運(yùn)動控制器(AXUC)控制的真空泵和真空傳感器的狀態(tài)信息,再結(jié)合機(jī)載運(yùn)動控制器(RC)本身的狀態(tài),準(zhǔn)確執(zhí)行機(jī)載運(yùn)動控制器(RC)發(fā)送的指令。另外,機(jī)載運(yùn)動控制器(RC)會實(shí)時上傳自身狀態(tài)信息給上位機(jī)和機(jī)載運(yùn)動控制器(RC)[14]。
仿壁虎機(jī)器人的運(yùn)動控制系統(tǒng)為機(jī)載運(yùn)動控制器、遠(yuǎn)程控制器和輔助控制器組成的分布式控制器,使用無線串口模塊實(shí)現(xiàn)相互之間的透明數(shù)據(jù)傳輸。
機(jī)器人系統(tǒng)的硬件構(gòu)成如圖3所示,其中,機(jī)器人的板載主控制器由電源管理模塊、舵機(jī)通信總線控制模塊、IMU慣性檢測單元、攝像頭檢測模塊以及無線通信模塊構(gòu)成。其中,IMU慣性檢測單元用于實(shí)時檢測機(jī)器人的姿態(tài)。攝像頭檢測模塊是將微型攝像頭裝于云臺舵機(jī)上,實(shí)現(xiàn)管道內(nèi)全方位的檢測,并通過無線網(wǎng)橋傳輸視頻信息。舵機(jī)通信總線控制模塊通過串口對12個舵機(jī)進(jìn)行同步運(yùn)動控制,實(shí)現(xiàn)機(jī)器人在管道內(nèi)進(jìn)行各方位的爬行動作。電源管理模塊實(shí)現(xiàn)機(jī)器人供電、蓄電及自我故障診斷等功能。
機(jī)器人的運(yùn)動控制方式是操作者通過遠(yuǎn)程控制器給出一個前進(jìn)、后退、向左、向右、轉(zhuǎn)彎的指令,機(jī)器人機(jī)載運(yùn)動控制器收到該指令后,輔助運(yùn)動控制器獲得真空吸盤和傳感器的狀態(tài)信息,機(jī)載運(yùn)動控制器獲得機(jī)器人自身的姿態(tài)信息,機(jī)載控制器完成操作者所給出的運(yùn)動控制指令。
因而,機(jī)器人的通信系統(tǒng)的設(shè)計(jì)主要分為2部分:機(jī)器人和輔助運(yùn)動控制器(AXUC)與遠(yuǎn)程控制器(MC)之間的三方通信;機(jī)器人控制器和12個舵機(jī)之間的內(nèi)部通信。
近年來,由于無線網(wǎng)絡(luò)高速數(shù)字傳輸特性和連接穩(wěn)定性的提高,在移動機(jī)器人領(lǐng)域也得到了應(yīng)用[15-17]。無線通信模塊是機(jī)器人在GIS內(nèi)部實(shí)現(xiàn)對管道內(nèi)部檢測的關(guān)鍵,仿壁虎機(jī)器人各控制器之間采用無線串口通信,無線串口模塊采用E28-2G4M20S模塊。
E28-2G4M20S與主控單片機(jī)的接線如圖4所示,可以通過將 M2M1M0 進(jìn)行高低電平組合,確定模塊工作模式。其工作模式配置如表1所示。
表1 無線串口模塊模式配置表
機(jī)器人的3個控制器均使用E28-2G4M20S無線串口模塊實(shí)現(xiàn)控制器間的無線通信,當(dāng)三方控制器的無線串口模塊設(shè)置為相同波特率,設(shè)置好通信信道和配置好E28-2G4M20S模式后,便可實(shí)現(xiàn)各控制器間的數(shù)據(jù)透明傳輸。
2.2.1 三方通信策略
三方通信的程序設(shè)計(jì)根據(jù)機(jī)器人處于靜止?fàn)顟B(tài)和運(yùn)動狀態(tài)的不同,分為閑時三方通信和執(zhí)行指令時的三方通信2部分。
當(dāng)遠(yuǎn)程控制器沒有發(fā)送指令時,機(jī)器人靜止不動時,此時為通信閑時,通信閑時的通信內(nèi)容和機(jī)制如圖5所示。輔助控制器、機(jī)器人控制器與遠(yuǎn)程控制器之間的通信都是以一定的頻率定時發(fā)送和接收。遠(yuǎn)程控制器負(fù)責(zé)接收并顯示機(jī)器人控制器反饋的機(jī)器人狀態(tài)和輔助控制器反饋的吸盤氣壓值數(shù)據(jù),以方便操作者觀察及操作。在閑時機(jī)器人靜止不動時,機(jī)器人不需要高速的三方數(shù)據(jù)反饋。
當(dāng)遠(yuǎn)程控制器發(fā)送指令控制機(jī)器人運(yùn)動時,通信情況如圖6所示,執(zhí)行指令時的三方通信在瞬時的通信頻率更高,機(jī)器人爬行過程中采用該方式的三方通信,而靜止時則采用閑時三方通信方式。
2.2.2 三方通信數(shù)據(jù)協(xié)議
為確保遠(yuǎn)程控制器、機(jī)器人控制器和輔助控制器三方之間的控制指令和數(shù)據(jù)互傳的可靠性,設(shè)置私有的三方通信協(xié)議,如表2所示。
表2 三方通信數(shù)據(jù)協(xié)議
該數(shù)據(jù)協(xié)議包含包頭、廣播標(biāo)志、緊急標(biāo)志、源地址、目的地址、數(shù)據(jù)長度、幀數(shù)序號、數(shù)據(jù)開始標(biāo)志、數(shù)據(jù)、數(shù)據(jù)結(jié)束標(biāo)志、奇偶校驗(yàn)值、CRC校驗(yàn)。由于處理器采用的是小端對齊,其中的多字節(jié)數(shù)據(jù)均采用小端對齊。包頭占據(jù)4字節(jié),有3種數(shù)據(jù)用來區(qū)分該通信包的性質(zhì),比如0xA5A5A5A5表示該數(shù)據(jù)包是控制命令包,0xA55A5AA5表示該包為狀態(tài)數(shù)據(jù)包,0x5A5A5A5A專用于上位機(jī)修改機(jī)器人的參數(shù)。廣播標(biāo)志為1代表該數(shù)據(jù)包可被其他方接收,為0表示該數(shù)據(jù)包為普通包,該包點(diǎn)對點(diǎn)通信指定接收方。源地址和目的地址用于說明數(shù)據(jù)的發(fā)送方和接收方。幀數(shù)序號在拼接多幀數(shù)據(jù)時,使得數(shù)據(jù)對齊。數(shù)據(jù)長度指明輸出的數(shù)據(jù)字節(jié)數(shù),數(shù)據(jù)開始標(biāo)志和數(shù)據(jù)結(jié)束標(biāo)志方便進(jìn)行上下位機(jī)解析。奇偶校驗(yàn)值和CRC校驗(yàn)值用于檢驗(yàn)傳輸前后通信包是否準(zhǔn)確無誤。
2.2.3 三方通信軟件實(shí)現(xiàn)及數(shù)據(jù)存儲
按照多方通信數(shù)據(jù)的作用性質(zhì),多方通信互傳的數(shù)據(jù)可以分為3類:狀態(tài)數(shù)據(jù)、控制指令數(shù)據(jù)和上位機(jī)專用修改機(jī)器人參數(shù)指令數(shù)據(jù)。狀態(tài)數(shù)據(jù)用于反饋?zhàn)陨頎顟B(tài)給三方中的其他兩方??刂浦噶羁梢詠碜圆僮髡卟僮鞯倪h(yuǎn)程控制器,也可以是機(jī)器人發(fā)送的對輔助控制器的控制指令。上位機(jī)專用修改機(jī)器人參數(shù)數(shù)據(jù)可以直接修改機(jī)器人的參數(shù)配置。
考慮到通信頻率比控制器處理數(shù)據(jù)的速度高,操作者可能在短時間連續(xù)多次操作遠(yuǎn)程控制器,產(chǎn)生多次數(shù)據(jù),因而建立環(huán)形隊(duì)列queue緩存有效的數(shù)據(jù)。隊(duì)列queue具有“先進(jìn)先出”的特性,如機(jī)器人控制器先接收到的指令先執(zhí)行,與操作者的操作順序一致。
以機(jī)器人控制的通信為例,三方通信軟件實(shí)現(xiàn)如圖7所示。根據(jù)三方通信協(xié)議,機(jī)器人對接收到的通信包進(jìn)行層層篩選,以奇偶校驗(yàn)和CRC校驗(yàn)篩選出未失真的數(shù)據(jù),以廣播標(biāo)志和目的地址確定該通信包是否要接收,以包頭和緊急標(biāo)志確定該通信包內(nèi)部的數(shù)據(jù)類型,并根據(jù)數(shù)據(jù)類型放入不同緩沖隊(duì)列queue,最后由數(shù)據(jù)解析和指令執(zhí)行任務(wù)完成對有效數(shù)據(jù)的處理。
2.3.1 控制器與12個舵機(jī)之間的通信策略
及時而準(zhǔn)確地獲取12個舵機(jī)的狀態(tài)是機(jī)器人能穩(wěn)定爬壁的重要前提。機(jī)器人控制器通過發(fā)送運(yùn)動指令控制舵機(jī)轉(zhuǎn)動,也可以通過發(fā)送讀取舵機(jī)的狀態(tài)指令來獲取舵機(jī)的位置、速度等狀態(tài)數(shù)據(jù)。機(jī)器人通過獲得12個舵機(jī)的狀態(tài)數(shù)據(jù),通過運(yùn)動學(xué)和機(jī)構(gòu)學(xué)的知識便可整合出機(jī)器人的當(dāng)前姿態(tài)。
在機(jī)器人爬行過程中,每個舵機(jī)的速度不同,機(jī)器人獲取舵機(jī)狀態(tài)數(shù)據(jù)的速度也應(yīng)不同。由于12個舵機(jī)共用一個USART串口的硬件,因此需要考慮給各舵機(jī)分配不同的帶寬。對此,提出了一種依據(jù)舵機(jī)運(yùn)動狀態(tài)不同而分配不同通信權(quán)重的通信策略。
該策略主要考慮了舵機(jī)靜止時和運(yùn)動時的通信權(quán)重分配,旨在機(jī)器人讀取舵機(jī)數(shù)據(jù)的及時性。如圖8所示,它是從ServoID(舵機(jī)編號)為1開始遍歷12個舵機(jī)并判斷是否讀取該號舵機(jī)的狀態(tài)數(shù)據(jù)。如果MoveFlag為1,則表示該號舵機(jī)處于移動狀態(tài),該號舵機(jī)通信權(quán)重為1,則立刻讀取該號舵機(jī)的狀態(tài)數(shù)據(jù);如果MoveFlag為0,則表示該號舵機(jī)處于靜止?fàn)顟B(tài),通信權(quán)重為0.5,需要第二周期來臨時才會讀取該號舵機(jī)的狀態(tài)數(shù)據(jù)。
為確保舵機(jī)與控制器之間控制命令和數(shù)據(jù)互傳的可靠性,設(shè)置了舵機(jī)與控制器之間的私有的通信協(xié)議?;谠搮f(xié)議,規(guī)范定義了舵機(jī)通信指令包的格式和舵機(jī)通信應(yīng)答包的格式,如表3和表4所示。
2.3.2 舵機(jī)與控制器之間的通信協(xié)議
表3 舵機(jī)通信指令包
表4 舵機(jī)通信應(yīng)答包
舵機(jī)通信指令包包含字頭、舵機(jī)ID、數(shù)據(jù)長度、指令、校驗(yàn)和。舵機(jī)通信應(yīng)答包包含字頭、舵機(jī)ID、當(dāng)前狀態(tài)、參數(shù)、校驗(yàn)和。其中字頭為0XFF,舵機(jī)ID為舵機(jī)識別標(biāo)志,指令包括讀指令和寫指令2類,參數(shù)為舵機(jī)內(nèi)存表的索引,當(dāng)前狀態(tài)用于表示舵機(jī)電壓、溫度、電流等是否處在正常范圍,校驗(yàn)和用于校驗(yàn)數(shù)據(jù)包傳輸前后是否準(zhǔn)確無誤。
機(jī)器人控制器通過發(fā)送修改舵機(jī)內(nèi)存表參數(shù)的指令包達(dá)到對舵機(jī)轉(zhuǎn)動角度、轉(zhuǎn)速、力矩最大值等的控制,也可以發(fā)送讀取舵機(jī)狀態(tài)的指令選擇性獲取舵機(jī)的轉(zhuǎn)動角度、轉(zhuǎn)速、扭矩、電壓等數(shù)據(jù)。作為反饋,舵機(jī)可以通過發(fā)送包含自身狀態(tài)的應(yīng)答包給控制器,反饋數(shù)據(jù)為舵機(jī)的轉(zhuǎn)動角度、轉(zhuǎn)速、扭矩、電壓等數(shù)據(jù)。
2.3.3 通信軟件實(shí)現(xiàn)及數(shù)據(jù)存儲
由于舵機(jī)通信頻率一定,針對機(jī)器人只需要獲取舵機(jī)的轉(zhuǎn)動角度、轉(zhuǎn)速、扭矩、電壓、當(dāng)前狀態(tài)、移動標(biāo)志的數(shù)據(jù),建立ServoState結(jié)構(gòu)體來存儲每個舵機(jī)的狀態(tài)數(shù)據(jù),該狀態(tài)數(shù)據(jù)具有實(shí)時覆蓋性,代碼如下所示。
typedef struct _SERVO_STATE_RECORD
{
unsigned short current_position;
short current_speed;
short current_load;
unsigned char current_voltage;
unsigned char work_state;
unsigned char move_mark;
unsigned char ID;
} ServoState,*PServoState;
ServoState Current_Servos_State[12];
為確保機(jī)器人控制器準(zhǔn)確讀取舵機(jī)的信息,編寫了讀取舵機(jī)指定數(shù)據(jù)的函數(shù)和控制電機(jī)轉(zhuǎn)動函數(shù)。
void ServoReadCommand(unsigned char ServoID,unsigned char addr,unsigned char Len);其中,ServoID為讀取舵機(jī)的ID,指定讀取的舵機(jī);addr指定舵機(jī)內(nèi)存表的位置;Len表示從addr所指位置連續(xù)讀取Len字節(jié)數(shù)據(jù)。該函數(shù)可以指定讀取舵機(jī)的信息數(shù)據(jù),要求相應(yīng)舵機(jī)返回應(yīng)答包。
u8 servo_sync_write (u8 need_control_servo[12],u16 pos[12],u16 speed[12]);如上函數(shù)servo_sync_write(),參數(shù)need_control_servo[12]指定需要控制轉(zhuǎn)動的舵機(jī),pos[12]指定轉(zhuǎn)動角度,speed[12]指定轉(zhuǎn)動速度,該函數(shù)可以指定多個舵機(jī)同時轉(zhuǎn)動。機(jī)器人控制器僅需和舵機(jī)進(jìn)行一次通信則可以完成對多個舵機(jī)轉(zhuǎn)動的控制,保證舵機(jī)返回狀態(tài)數(shù)據(jù)具有足夠的通信時間。
在完成仿壁虎機(jī)器人的通信系統(tǒng)的設(shè)計(jì)后,對仿壁虎機(jī)器人的通信系統(tǒng)進(jìn)行了實(shí)驗(yàn)。在GIS內(nèi)壁面上,對機(jī)器人進(jìn)行爬壁實(shí)驗(yàn),觀察并記錄機(jī)器人爬壁的穩(wěn)定性、機(jī)器人與輔助控制器響應(yīng)遠(yuǎn)程操作器的速度、機(jī)器人控制12個舵機(jī)的準(zhǔn)確性。
如圖9所示,機(jī)器人在0°、90°、180°的GIS內(nèi)壁爬行都能夠穩(wěn)定吸附,經(jīng)過2 h的往復(fù)爬行測試未出現(xiàn)通信異常,機(jī)器人能夠穩(wěn)定爬行。
(1)本文針對GIS內(nèi)壁檢測的4足12關(guān)節(jié)的移動式仿壁虎機(jī)器人的控制機(jī)制,設(shè)計(jì)了分布式機(jī)器人控制系統(tǒng),設(shè)計(jì)各控制器之間的三方通信機(jī)制和三方通信策略,并詳細(xì)說明了三方通信的軟硬件實(shí)現(xiàn)的原理和功能。
(2)基于機(jī)器人12關(guān)節(jié)采用的智能總線舵機(jī),設(shè)計(jì)了半雙工串行通信的控制模塊,針對機(jī)器人運(yùn)動時各關(guān)節(jié)舵機(jī)的通信權(quán)重不同,提出了機(jī)器人與12個舵機(jī)的通信機(jī)制和通信策略,設(shè)計(jì)了機(jī)器人與舵機(jī)之間的精簡通信協(xié)議。
(3)機(jī)器人在GIS管道內(nèi)壁的爬行實(shí)驗(yàn)結(jié)果表明,分布式機(jī)器人控制系統(tǒng)設(shè)計(jì)合理,機(jī)器人控制系統(tǒng)的三方通信以及機(jī)器人與舵機(jī)之間的通信都正常,滿足了爬壁機(jī)器人在GIS內(nèi)壁爬行運(yùn)動的要求。