趙章焰 張 天
武漢理工大學(xué)物流工程學(xué)院 武漢 430063
港口機(jī)械的安全是相關(guān)從業(yè)人員一直關(guān)注的熱點(diǎn)。目前,對(duì)于起重機(jī)等大型港口機(jī)械的檢測(cè)主要依靠人工進(jìn)行,但因港口機(jī)械尺寸過(guò)大,工作人員需要高空作業(yè),存在著一定的安全隱患。此外,部分金屬結(jié)構(gòu)表面維修人員很難到達(dá),這對(duì)港口機(jī)械的檢測(cè)和維修帶來(lái)了很大的困擾。隨著制造技術(shù)及控制技術(shù)的發(fā)展,如何利用智能化的攀爬機(jī)器人從事一些具有危險(xiǎn)性的工作逐漸成為一種研究的方向,而導(dǎo)航技術(shù)又是機(jī)器人自主行走的基礎(chǔ)。
導(dǎo)航方式可以分為絕對(duì)定位和相對(duì)定位[1],絕對(duì)定位主要有北斗衛(wèi)星系統(tǒng)、全球定位系統(tǒng)等,該方法可獲得機(jī)器人在地球上的經(jīng)緯度,但精度受天氣、建筑等因素的干擾。相對(duì)定位是指機(jī)器人在運(yùn)動(dòng)時(shí)根據(jù)獲得的傳感器信息計(jì)算相對(duì)位姿變換的技術(shù),視覺(jué)導(dǎo)航技術(shù)作為一種相對(duì)定位技術(shù),其探測(cè)范圍廣、獲取的環(huán)境信息豐富、在復(fù)雜環(huán)境中有很好的通用性,得到了廣大學(xué)者的大量研究[2]。隨著微機(jī)電系統(tǒng)(MEMS)和計(jì)算機(jī)圖像學(xué)的進(jìn)步,視覺(jué)導(dǎo)航技術(shù)被廣泛應(yīng)用到機(jī)器人行業(yè)以提高機(jī)器人的智能化水平。
金屬結(jié)構(gòu)作為港口機(jī)械的主要組成部分,是港口機(jī)械的骨架,其形式大致可分為格構(gòu)式、實(shí)腹式或混合式,文中所述的攀爬機(jī)器人主要是在箱型實(shí)腹式結(jié)構(gòu)表面工作,如箱形梁等。箱形金屬結(jié)構(gòu)特點(diǎn)有總體尺寸大、邊緣平直,表面涂有油漆,顏色單一且與背景區(qū)分度高,為結(jié)構(gòu)化路徑。對(duì)于結(jié)構(gòu)化路徑,視覺(jué)導(dǎo)航主要應(yīng)用于自動(dòng)駕駛汽車(chē)、農(nóng)田作業(yè)機(jī)器人等領(lǐng)域[3]。與其他結(jié)構(gòu)化路徑相比,港口機(jī)械金屬結(jié)構(gòu)位于室外,受光照和陰影等環(huán)境干擾較多,而且金屬結(jié)構(gòu)位于三維空間內(nèi),環(huán)境背景復(fù)雜。金屬結(jié)構(gòu)表面存在油漆、銹蝕等缺陷也會(huì)對(duì)視覺(jué)導(dǎo)航帶來(lái)一定的影響。
針對(duì)于上述情況,通過(guò)對(duì)結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航方法的研究,結(jié)合金屬結(jié)構(gòu)特點(diǎn),對(duì)起重機(jī)特征提取算法進(jìn)行優(yōu)化,對(duì)Hough變換模型建立約束條件,最終利用改進(jìn)的視覺(jué)導(dǎo)航方法對(duì)港口機(jī)械金屬結(jié)構(gòu)進(jìn)行邊緣提取,并計(jì)算得到結(jié)構(gòu)中心線和運(yùn)動(dòng)直線,求取運(yùn)動(dòng)參數(shù)。實(shí)驗(yàn)表明,該方法能夠計(jì)算得到機(jī)器人在金屬結(jié)構(gòu)中的相對(duì)位置,為指導(dǎo)攀爬機(jī)器人的行動(dòng)提供數(shù)據(jù)支撐。
視覺(jué)導(dǎo)航技術(shù)是利用攝像頭獲取機(jī)器人行進(jìn)過(guò)程中局部環(huán)境信息,通過(guò)圖像算法處理得到機(jī)器人運(yùn)動(dòng)信息進(jìn)而指導(dǎo)運(yùn)動(dòng)[4]。結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航方法是利用金屬結(jié)構(gòu)邊緣來(lái)擬合結(jié)構(gòu)中心線作為機(jī)器人的導(dǎo)航線,對(duì)機(jī)器人進(jìn)行速度和方向控制,使其沿著金屬結(jié)構(gòu)的中心線移動(dòng),從而實(shí)現(xiàn)攀爬機(jī)器人在金屬結(jié)構(gòu)表面的自主移動(dòng)。步驟可分為三步:首先,由相機(jī)獲得金屬結(jié)構(gòu)表面的圖像并進(jìn)行預(yù)處理;然后利用改進(jìn)型的Canny進(jìn)行金屬結(jié)構(gòu)邊緣特征提取,因光線、油污、銹蝕等因素的干擾,提取的邊緣線不具有連續(xù)性,建立具有約束的Hough變換模型和最小二乘法來(lái)擬合邊緣線;再計(jì)算結(jié)構(gòu)中心線和運(yùn)動(dòng)方程,確定機(jī)器人的偏航角和偏距,進(jìn)而通過(guò)上位機(jī)轉(zhuǎn)化為電機(jī)信號(hào)輸出,調(diào)整機(jī)器人的運(yùn)動(dòng)。視覺(jué)導(dǎo)航系統(tǒng)工作流程如圖1所示。
圖1 結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航流程
在結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航中,路徑的邊緣是最基礎(chǔ)的數(shù)據(jù)。在提取路徑邊緣后,可以對(duì)目標(biāo)、障礙物等相關(guān)信息辨別,并將這些數(shù)據(jù)傳遞到控制器進(jìn)行操作。
本次金屬結(jié)構(gòu)邊緣特征提取方法是自適應(yīng)閾值的Canny算法,Canny算子在物體特征識(shí)別及提取時(shí)處理速度很快,但Canny算子的高低閾值往往依據(jù)圖片進(jìn)行多次實(shí)驗(yàn)尋找合適閾值[5],該合適閾值對(duì)實(shí)驗(yàn)圖片檢測(cè)效果較好,當(dāng)圖片的灰度值變化較大時(shí),需要重新尋找閾值,不具有一般通用性。自適應(yīng)閾值的Canny算法使用OTSU方法計(jì)算出較佳高閾值,再根據(jù)比例求得低閾值,使得算法不需要人工設(shè)定閾值。改進(jìn)型Canny算法處理流程如圖2所示。
圖2 改進(jìn)Canny算法流程
高斯濾波對(duì)圖像卷積可以有效地減弱噪聲影響,高斯濾波器的生成方程式為
本次高斯矩陣是一個(gè)3×3的矩陣,標(biāo)準(zhǔn)差取0。
邊緣是灰度值變化較大的像素點(diǎn)的集合,圖像灰度梯度用一階有限差分近似求取[6]。改進(jìn)型Canny算法中采集的卷積算子比較簡(jiǎn)單,表達(dá)為
其x向、y向的一階偏導(dǎo)數(shù)矩陣,梯度幅值以及梯度方向的數(shù)學(xué)表達(dá)式為
式中:P(i,j)為x方向一階偏導(dǎo)數(shù)矩陣;Q(I,j)為y方向一階偏導(dǎo)數(shù)矩陣;M(i,j)為梯度幅值;θ(i,j)為梯度方向。
求得梯度圖像后,會(huì)存在弱邊緣干擾等問(wèn)題,用非極大值抑制尋找像素點(diǎn)的局部最大值[7],并把其對(duì)應(yīng)像素點(diǎn)值置0,可以去除掉一些非邊緣像素點(diǎn)。
在非極大值抑制后,剩余的像素點(diǎn)為結(jié)構(gòu)邊緣。然而還存在著因噪聲等因素引起的假邊緣像素。為了去除這些假的邊緣像素,利用高低閾值檢測(cè)來(lái)過(guò)濾低梯度值的像素點(diǎn),保留高梯度值的像素點(diǎn)。自適應(yīng)閾值中高閾值的求取使用OTSU算法,求取使非極大值抑制圖像有最大類(lèi)間方差σ2的k值,此k值即為高閾值,高低閾值的比例設(shè)置為2:1。
經(jīng)過(guò)邊緣提取后,得到金屬結(jié)構(gòu)的輪廓像素點(diǎn)集合,但因噪聲、不均勻的光線以及其他干擾因素的影響,輪廓像素點(diǎn)集合很難完整的表現(xiàn)出結(jié)構(gòu)邊緣線,需要后續(xù)處理。對(duì)于金屬結(jié)構(gòu)輪廓像素點(diǎn)集合,常使用Hough變換和最小二乘法求取結(jié)構(gòu)邊緣的近似方程。
1) Hough變換擬合直線
Hough變換是一種特征提取技術(shù),通過(guò)兩個(gè)坐標(biāo)空間之間的相互變換將一個(gè)空間的直線轉(zhuǎn)換為另一個(gè)空間的點(diǎn),將點(diǎn)識(shí)別線的方式轉(zhuǎn)換成識(shí)別直線并串取共線點(diǎn)的方式[8]。
直接運(yùn)用Hough變換時(shí)計(jì)算數(shù)據(jù)量大、復(fù)雜程度高,為了提高數(shù)據(jù)處理的效率,減少因背景結(jié)構(gòu)、陰影等造成的檢測(cè)誤差,通過(guò)對(duì)機(jī)器人移動(dòng)路徑的金屬結(jié)構(gòu)邊緣模型分析,在Hough變換時(shí)增加約束條件來(lái)提高計(jì)算效率[9]。模型如圖3所示。
圖3 結(jié)構(gòu)分析模型
假設(shè)機(jī)器人在沿結(jié)構(gòu)中心線前進(jìn)時(shí),左邊緣線斜率θl= (0,π/2),右邊緣斜率為θr= (π/2,π)。在實(shí)際行駛過(guò)程中,機(jī)器人本身具有一定的寬度,且攝像頭也存在安裝誤差,機(jī)器人一般在結(jié)構(gòu)中心線附近前進(jìn),對(duì)邊界斜率設(shè)置一個(gè)置信區(qū)間,對(duì)斜率置信區(qū)間內(nèi)的直線進(jìn)行檢測(cè),可以剔除一些非結(jié)構(gòu)邊緣線段,提高系統(tǒng)的實(shí)時(shí)性??紤]到機(jī)器人可能存在的偏移情況,設(shè)置左側(cè)和右側(cè)邊緣最小傾斜角度為θ1=β1=arctan(2H/W),左右側(cè)邊緣最大傾斜角度為θ2=β2=(π-θ1)。式中W為圖片的寬度,H為圖片的高度。結(jié)合實(shí)驗(yàn)數(shù)據(jù),取H=2W,求得θ1=β1=76°,所以左右金屬結(jié)構(gòu)邊緣斜率的置信區(qū)間為(76°,104°)。
2)最小二乘法優(yōu)化
經(jīng)過(guò)Hough變換后,可能會(huì)存在誤檢查的情況,再有陰影、油污等噪聲的影響,Hough變換提取的直線可能不連續(xù)或者偏離了原直線,為了克服這些問(wèn)題,采用最小二乘法對(duì)檢測(cè)邊緣進(jìn)行連續(xù)性處理。最終得到左邊金屬結(jié)構(gòu)的邊緣擬合直線為L(zhǎng)L:y(x)=a1x+b1,右邊金屬結(jié)構(gòu)的邊緣擬合直線為L(zhǎng)R:y(x)=a2x+b2。
依據(jù)投影幾何學(xué)理論,在三維空間中相互平行的兩直線,在二維成像空間內(nèi)會(huì)相交于一點(diǎn),命名為消影點(diǎn)[10],見(jiàn)圖 4。
圖4中LL、LR分別為左右結(jié)構(gòu)邊緣直線;LM為結(jié)構(gòu)中心線;LMT為第i時(shí)刻的運(yùn)動(dòng)直線;消影點(diǎn)(xi,yi)為在第i時(shí)刻左右結(jié)構(gòu)邊緣線的交點(diǎn);點(diǎn)(x0,y0)為攝像頭光學(xué)中心,為已知值。
圖4 路徑導(dǎo)航原理圖
結(jié)構(gòu)的中心線本質(zhì)上也是結(jié)構(gòu)線夾角的角平分線,求取結(jié)構(gòu)的中心線方程方法很多,本文采用兩點(diǎn)法進(jìn)行求解。假設(shè)在中心線上的已知兩點(diǎn)A(x1,y1)、B(x2,y2),則A、B到左右輪廓邊緣直線的距離相等,即
此時(shí),代入兩個(gè)特殊點(diǎn)進(jìn)行計(jì)算,即A(0,y1)、B(x2,0)時(shí),在求得A、B后,即可求得結(jié)構(gòu)中心線方程LM。機(jī)器人與消影點(diǎn)的運(yùn)動(dòng)直線方程為L(zhǎng)i:y=kix+bj其中:ki=(yo-yi)/(x0-xi),bi=y0-ki x0。
攀爬機(jī)器人在金屬結(jié)構(gòu)上攀爬時(shí),偏航角和偏距的計(jì)算是通過(guò)攝像頭計(jì)算得到的,將這些圖像數(shù)據(jù)經(jīng)過(guò)處理傳遞到上位機(jī),通過(guò)對(duì)應(yīng)的控制策略,進(jìn)一步轉(zhuǎn)化為電機(jī)的控制信號(hào)輸出,從而完成自主導(dǎo)航任務(wù)。
當(dāng)攀爬機(jī)器人處于一般情況下,即方向不平行于結(jié)構(gòu)兩側(cè)邊緣時(shí),在不同的時(shí)刻消影點(diǎn)的坐標(biāo)也不同,在第i時(shí)刻消影點(diǎn)的坐標(biāo)記作(xi,yi),此時(shí)機(jī)器人與消影點(diǎn)的直線方程為式Li:y=kix+bj。機(jī)器人的偏航角a是第i時(shí)刻運(yùn)動(dòng)直線與同時(shí)刻結(jié)構(gòu)中心線的夾角,即
偏距的計(jì)算主要是通過(guò)在某一深度y下,計(jì)算各個(gè)直線的x值,不同直線的x值之差表示兩直線之間的像素個(gè)數(shù)。結(jié)構(gòu)的中心線到結(jié)構(gòu)兩側(cè)邊緣的距離是相等的,即GML=GMR=XM-XL=XR-XM。當(dāng)對(duì)攀爬機(jī)器人定位時(shí),通過(guò)計(jì)算觀測(cè)運(yùn)動(dòng)直線在該深度下到結(jié)構(gòu)中心線的像素個(gè)數(shù)GMM=XMT-XM,兩個(gè)像素差的比值乘以左右邊緣距離DLR和偏航角α即為攀爬機(jī)器人到中心線的距離。偏距DMM計(jì)算公式為
攀爬機(jī)器人通過(guò)不斷的檢測(cè)偏航角和偏距來(lái)調(diào)整自身運(yùn)動(dòng)軌跡,從而使自身沿著結(jié)構(gòu)中心線行走。
為了驗(yàn)證文中方法的可行性、準(zhǔn)確性以及實(shí)時(shí)性,在電腦上首先采用Python3.7和OpenCV3.4庫(kù)進(jìn)行算法仿真實(shí)驗(yàn)。在港口機(jī)械支腿上選取了左中右各三張圖片,利用算法進(jìn)行結(jié)構(gòu)邊緣的提取。首先,對(duì)圖片進(jìn)行圖像預(yù)處理,利用自適應(yīng)Canny算法進(jìn)行邊緣特征提取,然后利用Hough變換和最小二乘法進(jìn)行邊緣擬合,最終處理結(jié)果如圖5所示。
圖5a~圖5c為支腿左中右3張?jiān)紙D片,圖5d~圖5f為不添加任何約束擬合出來(lái)的邊緣直線圖,圖5g~圖5i為添加角度約束后擬合的邊緣直線,可以明顯地看出在添加約束模型后,非邊緣直線被很好地篩掉,且邊緣直線的角度都在設(shè)置的約束區(qū)間內(nèi)。
圖5 結(jié)構(gòu)邊緣線擬合結(jié)果
在驗(yàn)證算法的可行性后,利用機(jī)器人攜帶微型相機(jī)進(jìn)行實(shí)際攀爬來(lái)采集視頻,對(duì)實(shí)驗(yàn)的數(shù)據(jù)進(jìn)行處理。采集的視頻分辨率為720×480。運(yùn)行軟件的平臺(tái)為win10。
首先,對(duì)導(dǎo)入的視頻進(jìn)行幀數(shù)的選擇,選擇幀后,先對(duì)圖像進(jìn)行灰度化和二值化的預(yù)處理;在利用改進(jìn)型Canny算法進(jìn)行邊緣特征的預(yù)提取,利用Hough進(jìn)行邊緣直線方程擬合,最終得到結(jié)構(gòu)中心線。通過(guò)連續(xù)幀的處理,實(shí)時(shí)計(jì)算導(dǎo)航線偏航角和偏距,將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)進(jìn)行處理,進(jìn)而轉(zhuǎn)換為電機(jī)的輸出信號(hào),來(lái)不斷調(diào)整機(jī)器人的位置使其沿著中心線行走。
圖6為軟件的操作界面,可提取到當(dāng)前幀左右結(jié)構(gòu)邊緣的直線方程得到擬合中心線的方程以及運(yùn)動(dòng)方程,通過(guò)比較中心線方程和運(yùn)動(dòng)方程計(jì)算得到偏航角和偏距。
圖6 軟件界面
攀爬機(jī)器人自身攜帶有一個(gè)云臺(tái)和一個(gè)微型相機(jī),通過(guò)云臺(tái)可控制相機(jī)的擺動(dòng),將攀爬機(jī)器人放置在中心線處,使相機(jī)處于不同角度,獲取數(shù)據(jù)計(jì)算偏航角;使機(jī)器人再沿著固定角度移動(dòng)獲取運(yùn)動(dòng)視頻,進(jìn)行偏距的計(jì)算。圖7為機(jī)器人在港口機(jī)械支腿上攀爬獲取實(shí)驗(yàn)數(shù)據(jù),表1和表2為實(shí)驗(yàn)數(shù)據(jù)處理結(jié)果。
圖7 攀爬機(jī)器人攀爬獲取數(shù)據(jù)
由表1、表2分析可知,算法可以很好地計(jì)算到機(jī)器人在某一時(shí)刻下的偏航角和偏距,但與真值之間存在一定誤差。誤差分析主要有兩方面,第一誤差受相機(jī)自身精度的影響,本次使用的相機(jī)精度不高,對(duì)于相機(jī)的畸變沒(méi)有進(jìn)行很好的處理,這部分誤差可通過(guò)更換設(shè)備進(jìn)行解決。此外,誤差也與光線強(qiáng)弱、相機(jī)安裝位置以及相機(jī)在運(yùn)動(dòng)過(guò)程中的穩(wěn)定性有關(guān),這部分誤差需要不斷地調(diào)整,直到誤差最小。當(dāng)攀爬機(jī)器人在低速前進(jìn)過(guò)程中,該方法的實(shí)驗(yàn)精度能夠滿足需求,指引攀爬機(jī)器人在港口機(jī)械表面的運(yùn)動(dòng)。
表1 偏角結(jié)果對(duì)比 (°)
表2 偏距結(jié)果對(duì)比 mm
為了研究攀爬機(jī)器人在港口機(jī)械金屬結(jié)構(gòu)表面的自主移動(dòng),提出了一種可應(yīng)用于港口機(jī)械攀爬機(jī)器人的結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航方法。首先對(duì)圖像進(jìn)行預(yù)處理;利用改進(jìn)型Canny算法提取邊緣特征并建立具有約束模型的Hough變換和最小二乘法計(jì)算邊緣直線方程;然后求取結(jié)構(gòu)中心線方程和運(yùn)動(dòng)觀測(cè)方程以及偏航角和偏距。通過(guò)攀爬機(jī)器人實(shí)際攀爬獲取實(shí)驗(yàn)數(shù)據(jù)并進(jìn)行數(shù)據(jù)分析,實(shí)驗(yàn)證明結(jié)構(gòu)化路徑視覺(jué)導(dǎo)航方法能夠得到攀爬機(jī)器人的運(yùn)動(dòng)參數(shù),為機(jī)器人的攀爬提供數(shù)據(jù)支撐。