汪 洋
(國(guó)網(wǎng)浙江省電力有限公司杭州供電公司,浙江 杭州 310000)
變電站是電網(wǎng)中轉(zhuǎn)換和分配電能的重要節(jié)點(diǎn),隨著技術(shù)的發(fā)展,其自動(dòng)化和智能化水平不斷提升。傳統(tǒng)的變電站人工巡檢需值班人員使用手持儀器對(duì)設(shè)備逐一檢查,這種方式在面對(duì)規(guī)模越來(lái)越龐大和繁雜的現(xiàn)代變電站時(shí)顯得力不從心,且人工巡檢易受到人員工作經(jīng)驗(yàn)、責(zé)任心、精神狀態(tài)等諸多因素的影響。當(dāng)前的變電站也配置了一定數(shù)量的攝像頭,但由于受視覺盲區(qū)、光照等客觀條件限制而無(wú)法實(shí)現(xiàn)全方位監(jiān)控。得益于無(wú)線傳感器網(wǎng)絡(luò)(wireless sensor networks,WSN)技術(shù)的發(fā)展,電力系統(tǒng)開始引入相關(guān)傳感器監(jiān)測(cè)設(shè)備運(yùn)行參數(shù),但由于傳感器通信帶寬小,應(yīng)用范圍受到很大的局限。隨著人工智能和嵌入式技術(shù)的發(fā)展,具備多種功能的巡檢機(jī)器人在電力系統(tǒng)中相繼投入應(yīng)用,與人工巡檢相比,其檢測(cè)效率和精度都更具優(yōu)勢(shì),同時(shí)也能避免人工巡檢過(guò)程存在的安全風(fēng)險(xiǎn)。
目前,電力系統(tǒng)巡檢機(jī)器人大多針對(duì)500 kV及以上的大型變電站,而在眾多的小型變電站中涉及較少且尚未形成統(tǒng)一的標(biāo)準(zhǔn),同時(shí)已投入使用的巡檢機(jī)器人大多采用遙控巡檢方式,不僅沒(méi)有真正形成智能化,還存在導(dǎo)航精度差、通信速度慢和圖像匹配精度低等問(wèn)題。因此,開發(fā)和應(yīng)用一款變電站智能巡檢機(jī)器人顯得尤為急迫。
1.1.1 加權(quán)平均算法
巡檢機(jī)器人的底盤下安裝有8個(gè)磁傳感器,編號(hào)1~8并賦予不同的權(quán)重值。由于傳感器的接受范圍有限,至多同時(shí)有3個(gè)磁傳感器可檢測(cè)到磁軌,檢測(cè)到磁軌的傳感器會(huì)把自己的權(quán)重值信號(hào)輸出給主控芯片,主控芯片的輸入輸出接口讀取磁傳感器信號(hào)并根據(jù)信號(hào)的加權(quán)平均值來(lái)判斷機(jī)器人當(dāng)前的位置。若最后的加權(quán)平均值為0,則機(jī)器人位于磁軌正中央,速度調(diào)節(jié)系統(tǒng)輸入的速度參考值保持不變;若根據(jù)相應(yīng)的加權(quán)平均值判斷出機(jī)器人相對(duì)于磁軌左偏或右偏,則相應(yīng)的左側(cè)或右側(cè)直流無(wú)刷電機(jī)加速,即對(duì)應(yīng)電機(jī)的速度調(diào)節(jié)系統(tǒng)的輸入速度參考值增大[1]。表1給出當(dāng)不同組的磁傳感器檢測(cè)到磁軌時(shí),速度調(diào)節(jié)系統(tǒng)的輸入值。
表1 速度調(diào)節(jié)系統(tǒng)的輸入值
1.1.2 PID控制技術(shù)
對(duì)于計(jì)算機(jī)可以處理的離散數(shù)字式PID主要有位置式PID控制算法和增量式PID控制算法兩種。位置式PID是一種非遞推的算法,因PID控制輸出的u(k)值直接對(duì)應(yīng)電機(jī)的實(shí)際轉(zhuǎn)速,所以基于簡(jiǎn)化電機(jī)控制系統(tǒng)的考慮,控制設(shè)計(jì)采用位置式PID算法。
PID算法最重要的是參數(shù)整定,比例參數(shù)、積分參數(shù)和微分參數(shù)的選取直接決定了系統(tǒng)的控制效果。這3個(gè)參數(shù)可通過(guò)理論計(jì)算求得,也可通過(guò)工程試驗(yàn)得出。理論計(jì)算需提前推導(dǎo)被控對(duì)象的傳遞函數(shù),且還要考慮工作時(shí)變化的阻尼和可能的外界干擾,很難建立系統(tǒng)實(shí)際數(shù)學(xué)模型,因此采用簡(jiǎn)單易行的工程試驗(yàn)來(lái)整定PID參數(shù)。
1.2.1 譯碼器模塊
在Simulink工具內(nèi)搭建基于微處理器(STM32)的霍爾信號(hào)譯碼過(guò)程抽象電路以及譯碼規(guī)則,由于電路母線上可直接設(shè)置接收霍爾信號(hào)的模塊,可將該信號(hào)傳給為實(shí)現(xiàn)控制邏輯專門搭建的譯碼器[2]。
1.2.2 速度調(diào)節(jié)器模塊
速度調(diào)節(jié)器的主體是PI控制器,利用Simulink把芯片通過(guò)軟件將霍爾信號(hào)轉(zhuǎn)換成速度信號(hào)的過(guò)程抽象化,由于在Simulink中與電機(jī)連接的母線上可直接獲取到電機(jī)的轉(zhuǎn)速值,所以可直接將此值作為PI控制器的一個(gè)輸入,并將速度參考值作為PI控制器的另一個(gè)輸入。PI控制器可以直接選擇Simulink中的預(yù)制模塊。
1.2.3 整體仿真
在Simulink中構(gòu)建系統(tǒng)的整體仿真模型,在輸出位置加入電壓表和數(shù)據(jù)顯示模塊用以探測(cè)逆變器的輸入變化、電機(jī)的轉(zhuǎn)速變化、PI控制器的輸出以及譯碼器的譯碼結(jié)果。
系統(tǒng)仿真時(shí)間設(shè)定為1 s,速度參考值為3 000 rad/s,并且預(yù)設(shè)在0.5 s時(shí)給系統(tǒng)一個(gè)外加干擾,通過(guò)電機(jī)的轉(zhuǎn)速變化確定系統(tǒng)是否可實(shí)現(xiàn)調(diào)速。由轉(zhuǎn)速變化趨勢(shì)(見圖1)可知,PI控制器的超調(diào)不大,也沒(méi)有發(fā)生振蕩,整體響應(yīng)時(shí)間很短,0.5 s時(shí)系統(tǒng)受到外部干擾后,轉(zhuǎn)速發(fā)生下降但很快恢復(fù)正常。
圖1 轉(zhuǎn)速變化趨勢(shì)
通過(guò)觀測(cè)3個(gè)霍爾傳感器輸出的120°相位差霍爾信號(hào),這3組信號(hào)經(jīng)過(guò)譯碼就可以產(chǎn)生換相序列。
由逆變器輸入電壓的變化可知,隨著電機(jī)轉(zhuǎn)速的升高,逆變器的輸入電壓也同時(shí)升高,并且在電機(jī)轉(zhuǎn)速穩(wěn)定后逆變器的輸入電壓保持不變,當(dāng)額外加入一個(gè)力矩給電機(jī),系統(tǒng)為維持速度就會(huì)增大逆變器的輸入電壓,基本確定所提轉(zhuǎn)速控制方案是可行的。
通過(guò)在Simulink中對(duì)直流無(wú)刷電機(jī)控制系統(tǒng)的仿真,驗(yàn)證了利用3組霍爾信號(hào)控制三相橋式逆變電路的開關(guān)來(lái)實(shí)現(xiàn)電機(jī)的換相,同時(shí)利用速度調(diào)節(jié)器產(chǎn)生的電壓信號(hào)調(diào)整電機(jī)上的磁場(chǎng)強(qiáng)度來(lái)控制電機(jī)的速度是可行性。實(shí)際上的控制系統(tǒng)就基于該原理連接不同的硬件實(shí)現(xiàn)的,再輔以軟件控制讓系統(tǒng)成為一個(gè)有機(jī)的整體。
根據(jù)上述需求,對(duì)硬件(電路架構(gòu))進(jìn)行設(shè)計(jì)與分析。如果需要直流無(wú)刷電機(jī)動(dòng)作,那么需要的基本模塊有直流電源、逆變系統(tǒng)、功率驅(qū)動(dòng)電路等,但這些模塊組成的是一個(gè)開環(huán)系統(tǒng)。為實(shí)現(xiàn)對(duì)電機(jī)的控制,機(jī)器人必須加入霍爾信號(hào)獲取系統(tǒng)和速度轉(zhuǎn)換系統(tǒng),使其構(gòu)成一個(gè)完整的閉環(huán)系統(tǒng)。通過(guò)STM32可實(shí)現(xiàn)PID控制、霍爾邏輯脈沖寬度調(diào)制(PWM)控制、電流及電壓保護(hù)等諸多功能。
導(dǎo)航系統(tǒng)架構(gòu)如圖2所示,工作站的導(dǎo)航部分是依托于集成芯片STM32F103V8T6建立,主要的被控對(duì)象是直流無(wú)刷電機(jī),輔以電源電壓監(jiān)控,同時(shí)霍爾信號(hào)作為芯片的高級(jí)定時(shí)器的輸入。整個(gè)系統(tǒng)的基本工作過(guò)程為電源電路根據(jù)速度調(diào)節(jié)器的不同值提供不同的電壓,系統(tǒng)初始化并進(jìn)行電壓檢測(cè),啟動(dòng)電機(jī),霍爾信號(hào)被芯片的高級(jí)定時(shí)器接收后經(jīng)過(guò)功率驅(qū)動(dòng)電路作用于逆變器的3個(gè)橋臂控制電機(jī)換相,同時(shí)霍爾信號(hào)接入一個(gè)普通定時(shí)器進(jìn)行速度轉(zhuǎn)換。當(dāng)需要調(diào)速時(shí),轉(zhuǎn)換后的速度值和新的參考值一起通過(guò)比較寄存器產(chǎn)生用于控制直流電源電壓輸出的信號(hào),用以控制逆變電路的直流輸入[3]。
圖2 導(dǎo)航系統(tǒng)架構(gòu)
軟件開發(fā)平臺(tái)使用的是Keil公司開發(fā)的MDK-ARM套件,該軟件為基于Cortex-M、Cortex-R4、ARM、ARM9處理器設(shè)備提供了一個(gè)完整的開發(fā)環(huán)境,可滿足絕大多數(shù)的嵌入式應(yīng)用。設(shè)計(jì)使用的具體版本為Keil MDK5,包含了uVision5 IDE集成開發(fā)環(huán)境和ARM Compiler5編譯器。
該設(shè)計(jì)中的程序分為主程序和中斷子程序兩部分,采用這樣的設(shè)計(jì)是為了優(yōu)化代碼的運(yùn)行效率,同時(shí)增強(qiáng)其可讀性,且也有利于后期的調(diào)試和優(yōu)化。主程序負(fù)責(zé)系統(tǒng)的初始化、和其相連的各個(gè)外設(shè)的初始化及提供子程序接口。為了確保電機(jī)的速度被精確控制,需要一系列的中斷子程序來(lái)實(shí)現(xiàn)相應(yīng)的功能,包括PI控制程序、霍爾信號(hào)的譯碼、霍爾信號(hào)的速度轉(zhuǎn)換、換相信號(hào)的產(chǎn)生等。
圖像匹配度檢測(cè)是指巡檢機(jī)器人在變電站的標(biāo)定位置停車并調(diào)用攝像機(jī)拍攝標(biāo)定位置的圖像,利用通信模塊將圖像回傳給后臺(tái),后臺(tái)軟件在Python-OpenCV環(huán)境下識(shí)別回傳圖像與模板庫(kù)內(nèi)標(biāo)準(zhǔn)圖像的差異度,如果差異度超過(guò)閾值就證明有異物懸掛或產(chǎn)生了較大的形變。為保證識(shí)別的準(zhǔn)確度,背景濾除和畸形矯正技術(shù)被廣泛應(yīng)用。
圖像處理算法主要依賴于OpenCV視覺庫(kù)。OpenCV被大量應(yīng)用在人機(jī)交互、圖像識(shí)別、人臉識(shí)別、動(dòng)作跟蹤、機(jī)器視覺等領(lǐng)域。
OpenCV中提供了攝像機(jī)調(diào)用的接口,可以通過(guò)其拍攝一段視頻并且灰度化。為了獲取視頻,系統(tǒng)需要?jiǎng)?chuàng)建一個(gè)VideoCapture對(duì)象,這個(gè)對(duì)象的參數(shù)通常是一個(gè)設(shè)備的序列號(hào)或者是一段視頻文件,如果是調(diào)用自身的攝像機(jī)則該參數(shù)為0。
2.2.1 關(guān)鍵技術(shù)
OpenCV中使用函數(shù)cv2.cornerHarris進(jìn)行角點(diǎn)檢測(cè),該函數(shù)有輸入圖像的類型、角點(diǎn)檢測(cè)中要考慮的鄰域大小、窗口的大小、自由參數(shù)四個(gè)參數(shù),通過(guò)其應(yīng)用可獲得較好的角點(diǎn)檢測(cè)結(jié)果。
如果對(duì)檢測(cè)有更高的要求,OpenCV函數(shù)庫(kù)還可以提供亞像素級(jí)的角點(diǎn)檢測(cè)函數(shù)cv2.cornerSubPix和適合在目標(biāo)跟蹤算法中使用的cv2.goodFeatureToTrack函數(shù)。
2.2.2 差異度檢測(cè)的實(shí)現(xiàn)
二值化和角點(diǎn)檢測(cè)是形狀匹配的基礎(chǔ),角點(diǎn)作為描述圖像特征的因子被當(dāng)作形狀匹配函數(shù)的輸入。因角點(diǎn)算法具有旋轉(zhuǎn)不變性,但當(dāng)圖像的尺寸發(fā)生變化時(shí)(如圖像縮放),角點(diǎn)的描述就不再準(zhǔn)確,即被判定為角點(diǎn)的像素點(diǎn)事實(shí)上可能不再是角點(diǎn)。為解決這個(gè)問(wèn)題,系統(tǒng)使用根據(jù)Hu矩(一種圖像特征描述方法,用于描述圖像形狀和幾何特征的不變特性,具有平移、旋轉(zhuǎn)和尺度不變性)計(jì)算的cv2.matchShape函數(shù)來(lái)進(jìn)行形狀匹配,具有縮放不變性。
差異度檢測(cè)算法中,不論是角點(diǎn)檢測(cè)函數(shù)還是形狀匹配函數(shù),都要對(duì)圖片中所有像素點(diǎn)進(jìn)行遍歷,嘈雜背景中的元素都會(huì)加入檢測(cè)和匹配的過(guò)程。在實(shí)際的變電站應(yīng)用中,天氣等客觀因素造成的背景變化是不可避免的,所以該算法投入應(yīng)用,則必須配置一個(gè)高精度的背景減除算法。
2.3.1 背景建模
在視頻中的任何一個(gè)像素點(diǎn)都是由K(一般取3~5)個(gè)高斯分布混合建模的,那么任意一個(gè)時(shí)間節(jié)點(diǎn)N的像素值為XN的概率為p(XN)=(XN,θj),式中:wj是第j個(gè)高斯分量的權(quán)重,η(XN,θj)是第k個(gè)分量的正態(tài)分布。在這個(gè)算法中使用適應(yīng)值ωk/σk對(duì)K分布進(jìn)行排序,其中,σk是第k個(gè)分量的協(xié)方差,wk為第k個(gè)高斯分布的權(quán)重。算法使用這個(gè)適應(yīng)值對(duì)像素進(jìn)行K分布排序,并且取其中的前B個(gè)像素作為背景的模型,其中B=argmin(>T),其中,閾值T是背景模型的最小部分,即背景在場(chǎng)景中的最小先驗(yàn)概率。背景減法通過(guò)將前景像素標(biāo)記為遠(yuǎn)離任何背景像素大于2.5標(biāo)準(zhǔn)差的任何像素來(lái)執(zhí)行,匹配測(cè)試值的第一個(gè)高斯分量將由一組更新方程進(jìn)行更新。
此外,高斯混合分布模型可以將背景分量與前景分量進(jìn)行比較,如果前景分量中的某個(gè)部分的色度和亮度都在設(shè)定的區(qū)間內(nèi)則會(huì)被認(rèn)定為陰影部分?;诒尘傲炼鹊目紤],Z.Zivkovic改進(jìn)了該算法,為每一個(gè)像素都單獨(dú)設(shè)定了一個(gè)K值,改進(jìn)過(guò)后的算法對(duì)背景亮度的變化更加敏感。
2.3.2 測(cè)試
將上述算法打包成函數(shù)cv2.createBackgroundSubtractorMOG2,其包含了幾個(gè)可調(diào)參數(shù):進(jìn)行建模場(chǎng)景的時(shí)間長(zhǎng)度、高斯混合成分的數(shù)量、閾值等,在實(shí)際應(yīng)用中全部設(shè)為默認(rèn)值,測(cè)試結(jié)果如下。
1) 不同亮度的背景的減除。選用一段背景中含有不同亮度部分的視頻,經(jīng)算法優(yōu)化,不同的亮度區(qū)域都被認(rèn)定成了背景區(qū)域,說(shuō)明高斯混合模型算法對(duì)于顏色和亮度都是敏感的。
2) 含有前景的圖像的背景減除。采用視頻中含有前景的一幀畫面和經(jīng)過(guò)背景減除之后含有前景的一幀畫面進(jìn)行對(duì)比,在這組實(shí)驗(yàn)中背景發(fā)生過(guò)一次變化(從白色變成藍(lán)色),測(cè)試結(jié)果可知,當(dāng)背景起初發(fā)生變化時(shí)會(huì)被當(dāng)成前景不被減除,但由于算法中使用的函數(shù)具有自適應(yīng)能力,藍(lán)色部分很快被認(rèn)定為背景并減除。
由于機(jī)器人只搭載了一臺(tái)單孔攝像機(jī),導(dǎo)致拍攝的圖片存在畸變,這就需要對(duì)攝像機(jī)進(jìn)行標(biāo)定。圖像畸變是由四個(gè)內(nèi)參數(shù)(fx,fy,cx,cy)和五個(gè)外參數(shù)(即三個(gè)徑向畸變參數(shù)(k1,k2,k3)和兩個(gè)切向畸變參數(shù)(p1,p2))造成的,想要消除畸變就必須求解出這些參數(shù)。求解參數(shù)的大致思路為,利用計(jì)算機(jī)中預(yù)存的包含明顯圖案模式的樣本圖片(如棋盤),圖片上的一些特殊點(diǎn)(如棋盤的四個(gè)角點(diǎn))的坐標(biāo)是已知的,將這張預(yù)存的圖片下載并打印,利用移動(dòng)攝像機(jī)對(duì)標(biāo)準(zhǔn)圖片拍攝若干張照片(拍攝的照片存在畸變),在畸變照片上的角點(diǎn)與標(biāo)準(zhǔn)圖像中的角點(diǎn)之間建立方程組,求解這些方程組即可求出上文中的畸變參數(shù)[4],具體實(shí)現(xiàn)過(guò)程如下。
1) 設(shè)定好迭代過(guò)程停止的條件,cv2.TERM_CRITERIA_EPS表示精確度(誤差)滿足epsilon (誤差設(shè)定值)時(shí)停止,cv2.TERM_CRITERIA_MAX_ITER表示迭代次數(shù)超過(guò)max_iter (最大允許迭代次數(shù))時(shí)停止。cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER表示滿足任意條件即可。
2) 獲取標(biāo)定板角點(diǎn)的位置并將坐標(biāo)系建立在標(biāo)定板上,建立2個(gè)數(shù)組用于存儲(chǔ)角點(diǎn)的2D和3D坐標(biāo);使用cv2.findChessboardCorners函數(shù)找到棋盤格的角點(diǎn)。由于該函數(shù)找到的角點(diǎn)坐標(biāo)并不是一個(gè)精確的坐標(biāo),如果有更高的精度需求,則需要使用cv2.cornerSubPix這個(gè)函數(shù)來(lái)找到亞像素級(jí)的角點(diǎn)位置。
3) 使用cv2.drawChessboardCorners函數(shù)把已經(jīng)找到的角點(diǎn)在棋盤格的相應(yīng)位置標(biāo)記下來(lái);再使用cv2.calibrateCamera函數(shù)來(lái)標(biāo)定造成圖像畸變的參數(shù),返回?cái)z像機(jī)矩陣、畸變系數(shù)、旋轉(zhuǎn)和變換向量等。
4) 通過(guò)cv2.getOptimalNewCameraMatrix函數(shù)得到自由縮放系數(shù),利用該系數(shù)對(duì)攝像機(jī)矩陣進(jìn)行優(yōu)化,同時(shí)返回一個(gè)包含感興趣區(qū)域(ROI)的圖像,后續(xù)程序可以用這個(gè)圖像對(duì)結(jié)果進(jìn)行裁剪。
機(jī)器人不僅需要將在標(biāo)定位置拍攝的圖像與標(biāo)準(zhǔn)圖像進(jìn)行對(duì)比,同時(shí)也需要把巡檢過(guò)程中的全部情況以視頻形式傳送給后臺(tái),以便后臺(tái)人員對(duì)變電站有更及時(shí)和全面的了解。機(jī)器人的視頻回傳系統(tǒng)是一個(gè)基于樹莓派的無(wú)線視頻監(jiān)控系統(tǒng),樹莓派插入無(wú)線網(wǎng)卡使機(jī)器人和后臺(tái)PC保持在同一個(gè)局域網(wǎng)內(nèi),同時(shí)樹莓派上的USB接口可連接搭載的攝像頭。系統(tǒng)工作流程為基于Wi-Fi技術(shù)使機(jī)器人和后臺(tái)保持在一個(gè)局域網(wǎng)內(nèi),通過(guò)V4L2接口技術(shù)完成視頻的采集,在利用H.264編碼技術(shù)完成視頻編碼,并在TCP/IP通信協(xié)議下搭建套接字(Socket)[5-7],最終將視頻傳送至后臺(tái)。
3.1.1 開發(fā)板介紹
Raspberry pi開發(fā)板是一款基于ARM架構(gòu)、Linux操作系統(tǒng)的微型電腦,其尺寸小、售價(jià)低,擁有相較于單片機(jī)更大的內(nèi)存,也可選用SD卡作為外存,并可拓展連接鼠標(biāo)、鍵盤、無(wú)線網(wǎng)卡、攝像機(jī)及顯示器等。
Raspberry pi擁有完善的Raspbian OS系統(tǒng)(基于Linux的樹莓派板卡操作系統(tǒng)),相較于沒(méi)有操作系統(tǒng)的芯片而言,在Raspbian OS下編寫的通信程序?qū)⒈粯O大地簡(jiǎn)化,且和PC端Linux系統(tǒng)下編寫的程序差異并不大。
3.1.2 V4L2接口技術(shù)
Linux視頻設(shè)備驅(qū)動(dòng)(video for linux 2,V4L2)是一種在Linux系統(tǒng)下用于捕獲影音硬件設(shè)備的接口,可為硬件設(shè)備提供驅(qū)動(dòng),也可通過(guò)一系列接口函數(shù)完成開發(fā)板和攝像機(jī)之間的指令傳遞和數(shù)據(jù)讀取,其采集視頻的流程如圖3所示。
圖3 V4L2采集視頻流程
3.1.3 TCP/IP通信協(xié)議
國(guó)際標(biāo)準(zhǔn)化組織制定了實(shí)現(xiàn)開放系統(tǒng)互連的基礎(chǔ)模型—OSI模型,具體可分為物理層、鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層,具體到TCP/IP協(xié)議下的模型可按圖4劃分,其中TCP屬于傳輸層、V4L2和H.264屬于第一、二層。
圖4 TCP/IP協(xié)議下的模型示意
TCP/IP是面向連接的,在收發(fā)數(shù)據(jù)前必須和接收方建立三次可靠的連接(三次握手),結(jié)束后第四次握手?jǐn)嚅_連接。TCP網(wǎng)絡(luò)編程是通過(guò)Socket套接字來(lái)實(shí)現(xiàn),Socket可以理解為插座,其本質(zhì)上是一種文件描述符,通過(guò)調(diào)用這個(gè)函數(shù)就可以返回一個(gè)包含了通信五元組(源端口、目的端口、源IP、目的IP、協(xié)議類型)的整形Socket描述符。
在Socket通信前先設(shè)定機(jī)器人為客戶端,后臺(tái)PC為服務(wù)器端。編寫TCP/IP協(xié)議下的Socket通信程序先要建立一個(gè)Socket套接字,設(shè)定協(xié)議的類型、套接字的類型、端口號(hào)等;接下來(lái)使用bind函數(shù)將套接字與主機(jī)間的IP、端口等信息關(guān)聯(lián),使用listen函數(shù)監(jiān)聽可能的訪問(wèn),使用accept函數(shù)來(lái)相應(yīng)接入請(qǐng)求,重新創(chuàng)建一個(gè)socket描述符用于與客戶端交換信息,使用connect函數(shù)是用來(lái)完成客戶端與服務(wù)器端的連接,使用send和recv函數(shù)用于傳輸和接收具體的數(shù)據(jù),最后由close關(guān)閉,如圖5所示。
圖5 socket通信流程
針對(duì)變電站的智能巡檢機(jī)器人的設(shè)計(jì)要求,把機(jī)器人的設(shè)計(jì)分成運(yùn)動(dòng)及導(dǎo)航、圖像匹配檢測(cè)、視頻回傳三部分。首先通過(guò)對(duì)磁傳感器位置判斷、PID控制技術(shù)、軟硬件設(shè)計(jì)等實(shí)現(xiàn)了機(jī)器人的運(yùn)動(dòng)與導(dǎo)航;其次基于Python-OpenCV實(shí)現(xiàn)攝像機(jī)調(diào)用、差異度檢測(cè)、攝像機(jī)標(biāo)定等功能,并通過(guò)圖像匹配的算法、攝像機(jī)畸形矯正和視頻動(dòng)態(tài)背景濾除提升識(shí)別準(zhǔn)確率;最后利用Raspberry pi開發(fā)板、V4L2接口、TCP/IP通信協(xié)議以及Socket通信程序等技術(shù)構(gòu)建了機(jī)器人視頻回傳系統(tǒng)。與其他巡檢機(jī)器人最大差異在于,該設(shè)計(jì)加入了機(jī)器人在標(biāo)定位置拍照并與模板庫(kù)內(nèi)標(biāo)準(zhǔn)照片自動(dòng)對(duì)比差異度的功能,可在變電站存在異物懸掛或者較大形變時(shí),自動(dòng)發(fā)出報(bào)警,提高對(duì)變電站的巡檢效率。