朱 朔, 張志安, 董培方, 梅新虎
(1. 南京理工大學(xué) 機(jī)械工程學(xué)院, 江蘇 南京 210094; 2. 南京理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 江蘇 南京 210094)
基于OpenCV的麥克納姆輪全向平臺(tái)的視覺(jué)循線設(shè)計(jì)
朱 朔1, 張志安1, 董培方1, 梅新虎2
(1. 南京理工大學(xué) 機(jī)械工程學(xué)院, 江蘇 南京 210094; 2. 南京理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 江蘇 南京 210094)
針對(duì)倉(cāng)庫(kù)、 廠房等地對(duì)運(yùn)送平臺(tái)自主移動(dòng)的需求, 文中著重進(jìn)行了麥克納姆輪全向移動(dòng)平臺(tái)的攝像頭循線算法優(yōu)化設(shè)計(jì). 通過(guò)HSV與RGB結(jié)合分割的方式適應(yīng)多背景的顏色分割. 采用概率霍夫變換檢測(cè)直線后, 提出一種簡(jiǎn)化算法, 可準(zhǔn)確獲得目標(biāo)直線并減少運(yùn)算量. 在拐角與十字路口檢測(cè)時(shí)引入凸包缺陷檢測(cè), 通過(guò)算法的優(yōu)化與幾何條件的綜合判定, 做到準(zhǔn)確檢測(cè). 采用OpenCV編程, 移植到Manifold嵌入式處理平臺(tái)后, 經(jīng)實(shí)際測(cè)試證明, 該算法能夠達(dá)到實(shí)時(shí)分析的要求.
麥克納姆輪; 全向平臺(tái); 攝像頭循線; OpenCV; 嵌入式平臺(tái); 實(shí)時(shí)分析
Abstract: In order to satisfy the needs of the autonomous mobile transport platform in warehouse and factory, patrol line by camera of omni-directional platform with me can um wheel is studied in this article. Combination of HSV and RGB color segment is used to accommodate different kinds of background. Probabilistic hough transform is used to detect line, and an algorithm is proposed to get target line information and reduce the operating quantity. Convexity defects is used to detect turn and crossroad. The accuracy of detection is improved by the optimization algorithm and comprehensive judgment of geometry conditions. The program is based on OpenCV. It is transplanted to Manifold embedded platform. The actual test proved that the algorithm can achieve real-time analysis requirements.
Keywords: mecanum wheel; omni-directional platform; camera patrol line; OpenCV; embedded platform; real-time analysis
麥克納姆輪因其全向移動(dòng)的特點(diǎn), 在現(xiàn)代工業(yè)中的應(yīng)用越來(lái)越廣泛. 麥克納姆輪全向移動(dòng)平臺(tái), 在要求移動(dòng)靈活的倉(cāng)庫(kù)、 工廠、 停車場(chǎng)等場(chǎng)合有著巨大的市場(chǎng)潛力[1]. 倉(cāng)庫(kù)等地由于高效運(yùn)行的要求, 必然要求物流小車是全向移動(dòng)的, 并且自主程度越大越好, 傳統(tǒng)的移動(dòng)平臺(tái)無(wú)法適應(yīng)這種需求. 現(xiàn)在很多研究人員進(jìn)行了麥克納姆輪全向平臺(tái)控制的研究, 除了采用微處理器進(jìn)行控制外[2], 新型的智能控制方法例如手勢(shì)控制平臺(tái)的運(yùn)動(dòng)也逐漸增多[3]. 但是對(duì)應(yīng)采用攝像頭循線自主運(yùn)動(dòng)的麥克納姆輪平臺(tái)控制研究還較少. 基于這種需求, 本文設(shè)計(jì)了一種麥克納姆輪全向移動(dòng)平臺(tái)的循線控制算法.
1.1 麥克納姆輪平臺(tái)的運(yùn)動(dòng)模型
本文設(shè)計(jì)的全向移動(dòng)平臺(tái)采用麥弗遜懸架, 底盤(pán)上安裝4個(gè)麥克納姆輪, 兩個(gè)為左旋輪, 兩個(gè)為右旋輪, 左旋輪、 右旋輪對(duì)角安裝. 如圖 1 所示.
圖 1 4麥克納姆輪移動(dòng)平臺(tái)運(yùn)動(dòng)分析Fig.1 Motion analysis of four mecanum wheels platform
以移動(dòng)平臺(tái)中心O點(diǎn)為原點(diǎn)建立全局坐標(biāo)系. 在平面上, 全方位移動(dòng)平臺(tái)具有3個(gè)自由度. 當(dāng)無(wú)刷直流電機(jī)驅(qū)動(dòng)車輪旋轉(zhuǎn)時(shí), 可將車輪的運(yùn)動(dòng)分解為2個(gè)分運(yùn)動(dòng), 一是沿垂直于電機(jī)軸方向的前進(jìn)運(yùn)動(dòng), 二是與輥?zhàn)永@其軸線的旋轉(zhuǎn)運(yùn)動(dòng). 輪4中心的速度為
式中:R是麥克納姆輪的直徑, 用到的麥克納姆輪直徑為76 mm,α是電機(jī)軸和輥?zhàn)拥膴A角.
另外, 由平臺(tái)整體的速度可知
由式(1), 式(2)可得
同理可得
式中:J為系統(tǒng)逆運(yùn)動(dòng)學(xué)方程的雅克比矩陣. 此平臺(tái)α角約為35°, 因此J矩陣中各元素均不為零, 所以總有rank(J)=3, 所以平臺(tái)可以全方位移動(dòng).
該全方位移動(dòng)平臺(tái)的自由度為3, 但是擁有4個(gè)獨(dú)立的電機(jī), 所以為過(guò)驅(qū)動(dòng)模式. 4個(gè)驅(qū)動(dòng)之間必須相容, 即4個(gè)電機(jī)的角速度嚴(yán)格按照公式(4)給出的速度. 這就要求必須引入反饋進(jìn)行閉環(huán)控制.
1.2 平臺(tái)控制
平臺(tái)的控制采用STM32F405作為主控芯片, 采用3510減速電機(jī)驅(qū)動(dòng)平臺(tái). 在底盤(pán)的運(yùn)動(dòng)控制中, 電調(diào)通過(guò)CAN總線輸出電機(jī)的運(yùn)行狀態(tài)信息, 根據(jù)反饋得出控制輸出量輸出至電調(diào)以驅(qū)動(dòng)電機(jī)轉(zhuǎn)動(dòng).
底盤(pán)硬件系統(tǒng)如圖 2 所示, 實(shí)物圖如圖 3 所示.
圖 2 底盤(pán)硬件控制系統(tǒng)Fig.2 Hardware controls system of underpan
圖 3 平臺(tái)實(shí)物圖Fig.3 Picture of real platform
如今圖像處理與機(jī)器視覺(jué)已成為炙手可熱的研究領(lǐng)域, 為檢測(cè)、 工業(yè)自動(dòng)化等帶來(lái)更高的工作效率. 攝像頭廉價(jià)、 可靠、 輸出直觀, 現(xiàn)在已經(jīng)廣泛應(yīng)用于工業(yè)生產(chǎn)、 城市監(jiān)控等領(lǐng)域. 本文采用常見(jiàn)的USB接口CMOS攝像頭進(jìn)行車輛前方的圖像采集, 獲得地面上預(yù)設(shè)線的圖像.
2.1 圖像的預(yù)處理
攝像頭捕獲圖像之后, 由于光照干擾、 攝像頭自身的缺陷以及傳輸過(guò)程中的干擾等問(wèn)題, 會(huì)存在很多的缺陷, 所以首先進(jìn)行圖像濾波. 攝像頭分辨率為640*480, 原圖如圖 4.
圖 4 攝像頭捕獲的原圖Fig.4 Original picture of camera
采用歸一化塊濾波器, 輸出像素值是核窗口內(nèi)像素值的均值 ( 所有像素加權(quán)系數(shù)相等), 其卷積核為[4]
圖像平滑之后, 對(duì)圖像進(jìn)行顏色空間變換, 由RGB空間轉(zhuǎn)化為HSV空間. HSV顏色空間中顏色的參數(shù)分別是: 色調(diào)(H), 飽和度(S), 明度(V). HSV顏色空間受光照影響較小, 所以很多情況下將采用RGB和HSV顏色空間結(jié)合的方式進(jìn)行顏色分割.
本文設(shè)定不同的顏色分量取值范圍, 獲得圖像掩膜, 將兩種顏色空間分割獲得的掩膜進(jìn)行相與操作. 只用RGB顏色空間分割時(shí), 效果如圖5(a)所述, 只用HSV顏色分割時(shí), 效果如圖5(b)所示, RGB與HSV顏色分割相結(jié)合之后的分割效果如圖5(c)所示.
圖 5 顏色分割圖Fig.5 Color segment picture
由以上效果可知, RGB與HSV顏色相結(jié)合使用時(shí), 分割效果最好, 可以最大限度地分割出目標(biāo)顏色. 但是可以看出分割的效果還不是很理想, 圖像內(nèi)部存在一些孔洞, 會(huì)對(duì)后續(xù)的識(shí)別產(chǎn)生不利影響.
圖 6 開(kāi)閉運(yùn)算后的顏色分割圖Fig.6 Color segment picture after morphological opening-and-closing operation
所以需要進(jìn)一步對(duì)圖像進(jìn)行開(kāi)閉運(yùn)算. 在圖像處理中, 膨脹與腐蝕都是常見(jiàn)的處理缺陷的手段[5]. 膨脹可以使圖像中的目標(biāo)區(qū)域生長(zhǎng), 這樣就可以去除一些孔洞, 腐蝕則相反, 兩者的結(jié)合可以得到預(yù)期的效果而不會(huì)大幅度影響整個(gè)畫(huà)面. 腐蝕和膨脹都是集合操作.A被B膨脹, 表示為A⊕B, 定義為
式中:φ為空集;B為結(jié)構(gòu)元素. 腐蝕的定義為
A被B腐蝕是包含在A中的B由z平移的所有點(diǎn)z的集合. 開(kāi)運(yùn)算即為先腐蝕后膨脹, 閉運(yùn)算相反.
可以看出, 處理后效果更好, 填充了很多孔洞缺陷, 而且圖像的邊緣變得更平滑, 如圖 6 所示.
2.2 目標(biāo)區(qū)域的尋找
具體的程序流程如圖 7 所示.
圖 7 確定車身位置與初步運(yùn)動(dòng)程序流程Fig.7 Platform position located and preliminary movement flow control
2.3 邊緣檢測(cè)與直線檢測(cè)
為了檢測(cè)出白色區(qū)域的輪廓, 需要對(duì)前文獲得的二值化圖像進(jìn)行邊緣檢測(cè). 邊緣是指圖像局部強(qiáng)度變化最顯著的部分, 是進(jìn)行圖像分割等操作的基礎(chǔ). 比較常用的邊緣檢測(cè)算子有: Canny、 Sobel等.
Canny 邊緣檢測(cè)算法是 John F. Canny 提出的一個(gè)多級(jí)邊緣檢測(cè)算法[6]. 由于本文需要檢測(cè)各個(gè)方向的邊緣, Sobel算子對(duì)豎直和水平的邊緣較為敏感, 所以Sobel算子不合適, 于是文中選擇Canny邊緣檢測(cè)算子[7].
Canny邊緣檢測(cè)中計(jì)算梯度幅值和方向:
1) 運(yùn)用一對(duì)卷積陣列 (分別作用于x和y方向)Canny邊緣檢測(cè)中采用非極大值抑制來(lái)排除非邊緣像素, 僅僅保留了一些細(xì)線條(候選邊緣).
圖 8 檢測(cè)到的邊緣Fig.8 Edges detected
2) 使用式(11), 式(12)計(jì)算梯度幅值和方向
最后, 使用了滯后閾值, 滯后閾值需要兩個(gè)閾值(高閾值和低閾值), 根據(jù)這兩個(gè)閾值來(lái)判斷是否將像素保留為邊緣像素.
3.1 概率霍夫直線檢測(cè)
獲得邊緣后, 本文對(duì)整幅圖像進(jìn)行直線檢測(cè). 最常用的是霍夫直線檢測(cè)算法. 標(biāo)準(zhǔn)霍夫變換需要計(jì)算所有的M個(gè)邊緣點(diǎn), 它的運(yùn)算量很大. 如果在輸入圖像中抽取m(m 檢測(cè)步驟如圖 9. 檢測(cè)到的直線如圖 10 所示. 圖 9 概率霍夫變換檢測(cè)步驟Fig.9 Probabilistic hough transform process 圖 10 檢測(cè)到的直線Fig.10 Line detected 3.2 不同背景下的直線檢測(cè) 圖 11 是在不同顏色的地面上的顏色分割與直線的檢測(cè)效果, 可以看出提出的算法可以適應(yīng)各種顏色的地面, 具有廣泛的適應(yīng)性. 圖 11 不同背景下檢測(cè)到的直線Fig.11 Line detected against different background 3.3 斜率的計(jì)算 通過(guò)統(tǒng)計(jì)概率霍夫線變換, 獲得直線的兩個(gè)端點(diǎn): (x1,y1), (x2,y2), 在整個(gè)圖像中建立直角坐標(biāo)系, 如圖 12 所示. 圖 12 圖像中建立的直角坐標(biāo)系Fig.12 Rectangular coordinate system in the image 這樣, 根據(jù)直線的一般式方程 帶入獲得的直線端點(diǎn)坐標(biāo)(x1,y1), (x2,y2)來(lái)解出直線的方程, 進(jìn)而獲得直線的斜率. 3.4 多條直線的篩選與排除 在直線檢測(cè)中會(huì)遇到各種難以解決的問(wèn)題: 貼條自身有寬度, 會(huì)檢測(cè)出多條基本平行的直線; 檢測(cè)出多條直線; 檢測(cè)出本來(lái)是一條直線而在圖像中檢測(cè)為基本共線的間斷的兩條直線等. 傳統(tǒng)的解決方法中有將所有檢測(cè)到的直線進(jìn)行歸一化處理, 最終合成一條位于中間的直線; 還有一種方法, 將間斷的共線直線合成為同一條直線. 上面兩種直線的處理方式計(jì)算極為復(fù)雜, 都不適合本文的要求. 本文提出一種簡(jiǎn)單的方法來(lái)進(jìn)行直線的篩選: 首先, 通過(guò)直線長(zhǎng)度閾值除去過(guò)短的直線, 然后計(jì)算車輛當(dāng)前位置點(diǎn)A與檢測(cè)到的所有直線的距離, 采用點(diǎn)到直線距離公式 篩選出點(diǎn)到直線距離最短的直線, 認(rèn)為該直線即為當(dāng)前所檢測(cè)到的貼條斜率, 這樣, 便極大地簡(jiǎn)化了計(jì)算過(guò)程, 同時(shí)也符合設(shè)計(jì)要求. 隨后, 根據(jù)斜率的正負(fù)與大小來(lái)判斷直線的朝向, 進(jìn)而控制麥克納姆輪平臺(tái)進(jìn)行原地左轉(zhuǎn)或者右轉(zhuǎn)或者直行的命令. 但是僅僅依靠這種判斷, 顯然是無(wú)法達(dá)到要求的. 本文引入一種方法, 通過(guò)將A點(diǎn)正前方、 左前方、 右前方3個(gè)正方形內(nèi)的白色像素總數(shù)進(jìn)行對(duì)比, 再進(jìn)行直線、 向左平移、 向右平移的操作. 優(yōu)先級(jí)最高的是正前方的正方形, 如果正前方的正方形內(nèi)的白色像素?cái)?shù)目大于一定的閾值, 那么就認(rèn)為車輛可以向前直行, 否則判斷左前方是否符合要求, 符合則向左平移, 右前方同理. 3.5 左拐直角、 右拐直角、 十字路口的檢測(cè) 傳統(tǒng)的拐角和十字路口檢測(cè)方法都是采用掃描與最小二乘法擬合, 這樣的方法受角度和光照影響大, 無(wú)法準(zhǔn)確地識(shí)別各類旋轉(zhuǎn)后的目標(biāo). 本文提出一種基于凸包與凸包缺陷檢測(cè)的方法, 可以大大減少因車身旋轉(zhuǎn)帶來(lái)的問(wèn)題, 提高檢測(cè)的成功率. 凸多邊形擬合后的輪廓線與輪廓之間的部分為凸包缺陷[9]. 每個(gè)凸包缺陷區(qū)域, 本文選出4個(gè)特征量: 起始點(diǎn), 結(jié)束點(diǎn), 距離多邊形最遠(yuǎn)點(diǎn), 最遠(yuǎn)點(diǎn)到多邊形的邊的距離[10]. 本文的檢測(cè)對(duì)象: 拐角和十字路口顯然是具有凸包缺陷的. 針對(duì)拐角的情況, 左拐與右拐的凸包缺陷中, 右轉(zhuǎn)的凸包可以看出缺陷內(nèi)點(diǎn)在外側(cè)兩個(gè)起始點(diǎn)的左上方, 而且即使拐角在圖像中有較大的偏移, 這個(gè)特征也不會(huì)改變. 而由圖 13 可知, 即使檢測(cè)到的圖像存在缺陷或者噪點(diǎn)較多, 凸包缺陷也可以被清晰地檢測(cè)出來(lái), 獲得準(zhǔn)確的凸包缺陷幾何信息, 不會(huì)影響對(duì)道路屬性的判斷. 圖 13 拐角與十字路口檢測(cè)Fig.13 Rectangular coordinate system in the image 至此, 視野中所有可能出現(xiàn)的視覺(jué)特征都被準(zhǔn)確地檢測(cè)出來(lái). 4.1 移植 為保證程序運(yùn)行效率, 程序采用依賴OpenCV庫(kù)的C++編寫(xiě), 而且可以滿足跨平臺(tái)的要求. 為了保證程序的運(yùn)行實(shí)時(shí)及保證在麥克納姆輪平臺(tái)上的便攜性, 采用大疆妙算Manifold作為嵌入式圖像處理平臺(tái). 妙算配備了NVIDIA 公司的Tegra K1 作為核心處理器, 運(yùn)行Ubuntu 14.04操作系統(tǒng). 整個(gè)麥克納姆輪全向平臺(tái)采用STM32F405作為主控制器, 可保證車輛的全向移動(dòng)以及轉(zhuǎn)向. 上位機(jī)與下位機(jī)之間采用串口通信的方式進(jìn)行數(shù)據(jù)傳輸, STM32F405在串口接收中斷時(shí)對(duì)上位機(jī)Manifold的指令做出反應(yīng). 4.2 串口編程 為保證程序的簡(jiǎn)潔輕便, 本文采用自定義串口頭文件的方式進(jìn)行處理. 在妙算上, 串口2的設(shè)備號(hào)為ttyTHS3, 直接打開(kāi)串口即可. 定義一個(gè)Comm類, 公有成員move, 有3個(gè)參數(shù), 分別為前進(jìn)量、 左移量、 旋轉(zhuǎn)量. 下位機(jī)STM32根據(jù)這3個(gè)量可以合成平面內(nèi)的任意運(yùn)動(dòng). 協(xié)議開(kāi)始標(biāo)識(shí): 0xff (-128), 結(jié)束標(biāo)識(shí): 0x80 (-0). 表 1 不同路面狀況下的幀率 這樣, 定義Comm類的變量Car之后, 執(zhí)行Car.move(m,n,p)即可實(shí)現(xiàn)串口指令的輸出. 在實(shí)驗(yàn)室的條件下, 對(duì)系統(tǒng)處理速度進(jìn)行了測(cè)試, 測(cè)試結(jié)果如表 1 所示. 經(jīng)過(guò)測(cè)試, 攝像頭能夠準(zhǔn)確獲得地面的標(biāo)志信息, 幀率在20FPS左右, 滿足實(shí)時(shí)性的要求, 車輛運(yùn)行狀況良好. 本文設(shè)計(jì)了一種麥克納姆輪全向移動(dòng)平臺(tái)的攝像頭循線算法, 提出了一種新的搜索與移動(dòng)策略, 在檢測(cè)出直線的同時(shí), 通過(guò)優(yōu)化算法減少了計(jì)算量, 提升了程序的效率. 并基于凸包缺陷提出了一種準(zhǔn)確度較高的拐角與十字路口的識(shí)別方法. 經(jīng)過(guò)移植到大疆Manifold嵌入式平臺(tái)后, 檢測(cè)的準(zhǔn)確度與實(shí)時(shí)性都滿足要求. [1] 侯彬, 李亞明. 麥克納姆輪技術(shù)及其在船用輪式設(shè)備中的應(yīng)用[J]. 船舶工程, 2011(3): 84-87. Hou Bin, Li Yaming. Mecanum wheel technology and its application in ship wheel devices[J]. Ship Engineering, 2011(3): 84-87. (in Chinese) [2] 魏權(quán)利, 高吉明. 基于STM32微處理器的全方位智能移動(dòng)平臺(tái)設(shè)計(jì)[J]. 機(jī)床與液壓, 2016, (23): 34-37. Wei Quanli, Gao Jiming. Design of omni-directional mobile platform based on STM32 microprocessor[J]. Machine Tool & Hydraulics, 2016, (23): 34-37. (in Chinese) [3] 孫強(qiáng), 王文濤, 周璇. 基于kinect傳感器的全方位運(yùn)輸平臺(tái)控制系統(tǒng)研究[J]. 電子設(shè)計(jì)工程, 2015, (24): 99-102. Sun Qiang, Wang Wentao, Zhou Xuan. Development of omnidirectional mobile system based on the kinect sensor[J]. Electronic Design Engineering, 2015, (24): 99-102.(in Chinese) [4] Pham C C, Ha S V U, Jeon J W. Adaptive Guided Image Filtering for Sharpness Enhancement and Noise Reduction[C]. Pacific Rim Conference on Advances in Image and Video Technology. Springer-Verlag, 2011: 323-334. [5] 楊信廷, 孫文娟, 李明, 等. 基于K均值聚類和開(kāi)閉交替濾波的黃瓜葉片水滴熒光圖像分割[J]. 農(nóng)業(yè)工程學(xué)報(bào), 2016, 32(17): 136-143. Yang Xinting, Sun Wenjuan, Li Ming, et al. Water droplets fluorescence image segmentation of cucumber leaves based on K-means clustering with opening and closing alternately filtering[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2016, 32(17): 136-143. (in Chinese) [6] 李俊山, 馬穎, 趙方舟, 等. 改進(jìn)的Canny圖像邊緣檢測(cè)算法[J]. 光子學(xué)報(bào), 2011, (增刊): 50-54. Li Junshan, Ma Ying, Zhao Fangzhou, et al. A novel arithmetic of image edge detection of canny operator[J]. Acta Photonica Sinica, 2011, (S1): 50-54. (in Chinese) [7] Bing W, Fan S S. An Improved CANNY Edge Detection Algorithm[C]. International Workshop on Computer Science and Engineering, 2010: 497-500. [8] 胡彬, 趙春霞. 基于概率霍夫變換的快速車道線檢測(cè)方法[J]. 微電子學(xué)與計(jì)算機(jī), 2011, (10): 177-180. Hu Bin, Zhao Chunxia. A fast lane detection method based on the progressive probabilistic hough transform[J]. Microelectronics & Computer, 2011, (10): 177-180. (in Chinese) [9] 李海, 張憲民, 陳忠. 基于直線檢測(cè)的棋盤(pán)格角點(diǎn)自動(dòng)提取[J]. 光學(xué)精密工程, 2015, (12): 3480-3489. Li Hai, Zhang Xianmin, Chen Zhong. Automatic corner detection of checkerboard based on LSD[J]. Optics and Precision Engineering, 2015, (12): 3480-3489. (in Chinese) [10] Youssef M M, Asari V K. Human action recognition using hull convexity defect features with multi-modality setups[J]. Pattern Recognition Letters, 2013, 34(15): 1971-1979. MachineVisionPatrolLineofMecanumWheelOmni-directionalPlatformBasedonOpenCV ZHU Shuo1, ZHANG Zhian1, DONG Peifang1, MEI Xinhu2 (1. School of Mechanical Engineering, Nanjing University of Science and Technology, Nanjing 210094, China; 2. School of Computer Science and Engineering, Nanjing University of Science and Technology, Nanjing 210094, China) 1671-7449(2017)05-0369-08 TP391.41 A 10.3969/j.issn.1671-7449.2017.05.001 2017-04-02 國(guó)家自然科學(xué)基金資助項(xiàng)目(11472008) 朱 朔(1992-), 男, 碩士生, 主要從事機(jī)械電子與圖像處理等研究.4 移植與下位機(jī)串口通信
5 結(jié)束語(yǔ)