蘆姝冰,于寶成,王春梅,楊世團,熊永燚
(武漢工程大學 計算機科學與工程學院,湖北 武漢 430205)
目前AGV[1]大多通過磁感應、慣性、視覺及其組合方式進行導航定位。文獻[2]利用了RFID標簽輔助慣性導航系統構成一種自主式組合導航系統,用過布放RFID標簽以降低數據更新時間來提高AGV定位精度。文獻[3]基于多傳感器進行AGV定位誤差校正,采用視覺導航方式,結合左右輪編碼器對AGV進行運動控制。文獻[4,5]設計了一種基于二維碼圖像標簽定位導航的視覺導引AGV,雖然降低了維護成本,但整體實時性不高。文獻[6]采用單攝像頭識別二維碼獲取定位消息,結合陀螺儀和里程計以彌補單傳感器定位缺陷。文獻[7]利用了QR碼視覺定位結合航位推算定位實現導引車定位,但QR碼識別速率難以保證系統的運行速度。文獻[8]在視覺導航方法的基礎上利用粒子群算法來優化PID控制器參數,改善小車跟蹤行駛效果。文獻[9]提出通過外置的視覺信標給機器人提供絕對位置信息,但是視覺信標需要前期的安裝工作,具有一定局限性。
本文采用基于雙攝像頭掃碼的視覺導航技術對AGV慣性定位誤差進行補償,通過安裝在AGV車頭與車體中心兩處下方的攝像頭分別對二維碼標簽進行識別與信息核定,對定點處的定位誤差進行調整,并結合車身慣性傳感器獲取的偏航角等信息,補償慣性導航產生的固有累計誤差,提高運動軌跡精度。
本文提及的AGV系統采用雙輪差速方式驅動,車體結構如圖1所示,AGV前后各設兩個萬向輪,左右兩輪各自使用獨立的電機驅動,通過控制兩驅動輪轉速實現轉向,這種車體結構提高了AGV的穩定性與實操性。

圖1 車體結構
考慮到AGV運行軌跡的精度要求,本文中的AGV安裝有兩個攝像頭在車頭兩萬向輪連軸中心和兩驅動輪的連軸正中心,分別記為攝像頭1和攝像頭2。當攝像頭1讀取到二維碼信息時CPU定時器開始計時,直到攝像頭2讀取到二維碼圖像信息時停止,當小車經過分配運動命令為直行的二維碼碼點時,通過兩攝像頭固定點間距和計時時間可得AGV在此點的瞬時速度,當AGV經過分配運動命令為停止或轉向的二維碼碼點時,攝像頭1讀取二維碼信息無誤后,在兩攝像頭間的固定間距中做勻減速運動,使得攝像頭1中心點與二維碼圖標中心點重合時AGV停止,增長了小車剎車的制動距離,避免在馱運貨物時驟停的不利影響,加強了AGV定位的精確度,降低了路徑中二維碼點讀取的誤碼率。
針對如圖1所示的AGV結構設計,通過控制兩個獨立電機分別驅動左右兩輪的速度差實現車體旋轉,以逆時針為正轉,速度記為正速度,應有:①當VL=-VR時,小車做直線運動(左輪正速度且右輪負速度時AGV前進,反之AGV后退);②當VL=VR時,小車圍繞兩驅動輪連軸中心做旋轉運動(兩輪速度均為正速度時AGV向左旋轉);③當|VL|≠|VR|時,小車做弧線運動。
故通過控制驅動輪轉速,AGV可作直線運動或繞驅動輪軸心連線上任意點作旋轉運動。運動模型如圖2所示,圖中Y軸為小車理想的行駛路線,O為左右驅動輪中軸線中點。當小車發生圖示的路徑偏移現象時,u為驅動輪連軸中心的水平偏移距離,α為實際形式路徑與理想路徑的角度偏差,R為小車偏移時的轉向半徑。

圖2 AGV運動模型
由運動學可知
(1)
(2)
其中,VL,VR分別為左右驅動輪線速度,VO為車體中心線速度,ω為小車右轉時的角速度,L為左右驅動輪間距;
假設在短時間內小車向右的偏移變化量極小,則α與sinα近似相等,則由式(1)、式(2)兩式結合可得
α=(VL-VR)Δt/L
(3)
(4)
在AGV的工作區域內等間距粘貼內含坐標信息的二維碼作為定位點,利用攝像頭掃碼可提取出AGV定位信息以及AGV相對于定位點的偏移信息。根據接收任務命令結合定位信息完成AGV的路徑導航,期間利用偏移信息結合慣性傳感器對AGV進行軌跡修正。控制流程如圖3所示。

圖3 AGV控制流程
通過對攝像頭2采集到的二維碼圖像進行邊緣檢測、Hough變換等圖像處理方法獲得碼點中心與AGV車體中心的相對位置信息,包括水平方向的位移偏差以及角度偏差,根據這3個信息可對AGV小車在碼點上方的位姿進行糾正,或在直行通過碼點時,將其代替此刻慣性傳感器所測數值作為初始偏差。碼間運動中利用慣性傳感器獲取AGV的實際運動軌跡與理想路徑的偏移角度,結合初始偏差信息,控制左右兩驅動輪轉速實現小角度轉向糾正偏差,使AGV在運動過程中能順利采集到下一個二維碼標簽。
在AGV工作區域內等間距粘貼內含坐標信息的二維碼標簽,坐標信息形如:0102,0309,0005等,前2位和后2位分別表示該碼點的X、Y軸坐標。
首先采集圖像,根據獲得的運動圖像,利用相位相關算法初步確定前后幀圖像中相位相關區域,并通過平移變換進行一次運動補償,再利用Harris算法檢測特征點,并結合SURF描述子進行特征點匹配完成運動估計,利用6參數仿射運動參數模型構建運動模型,確定全局運動參量,再根據上述參量做運動補償,補償得到穩定的圖像序列;再對穩定的圖像序列采用三幀差分算法檢測得到運動的區域,提取出運動目標;之后對提取的運動目標圖形進行預處理;采用改進的Canny算法結合Hough直線檢測進行圖像邊緣檢測與畸變矯正,可得到二維碼在圖像采集界面中的位置信息以及旋轉角度,從而得到AGV在該碼點的位姿信息;最后對采集到的圖像進行解碼。圖像處理流程如圖4所示。

圖4 圖像處理流程
車體共安裝兩個攝像頭,此處僅分析攝像頭2的圖像采集界面。可得到攝像頭采集界面如圖5所示。

圖5 二維碼偏移信息
圖5中方框區域即為攝像頭2的圖像采集界面:o點為攝像頭2中心點也即車體中心;圖中14為AGV中心線與二維碼中心線的方向偏差,記為θ;圖中15、16分別為二維碼碼點相對于車體中心的橫縱位移偏量,也即二維碼中心在圖像坐標系XoY中的坐標,記二維碼中心為O點,則圖中15、16記為Ox,Oy。θ、Ox、Oy表明了在該時刻AGV與期望位置點的3項偏差信息。
其中:當Ox>0時,車輛在理想路徑的右側,當Ox<0時,車輛在理想路徑左側;當θ>0時,車輛運動方向偏向左側,當θ<0時,車輛運動方向偏向右側。
想要獲取準確的偏移角度信息,我們需要對采集到的圖像進行圖像處理工作,而為了能夠適應實際工作區域內不同的光照強度,需要進行圖像預處理操作,將初始圖像轉化為灰度圖像,并進行降噪處理,然后進行邊緣檢測確定具體圖像,即通過檢測每個像素點及其鄰域的灰度值變化判斷該像素點是否恰好在圖像的邊界。以連續的函數f(x,y)作為處理對象,利用Canny算子卷積模板與相應的圖像原數據進行卷積運算,再做閾值處理檢測來確定邊緣。針對如圖5所示的圖像采集界面,對圖中二維碼進行處理后的效果如圖6所示。

圖6 圖像邊緣檢測效果
圖像出現傾斜時,利用Hough變換檢測直線進行校正,基本思想是點——線的對應性。直角坐標系中直線上的點經過Hough變化后對應了極坐標(ρ,θ)上的點。圖像進行Hough校正,篩選得到參數空間ρoθ平面共線點數的局部最大值,這個共線點的坐標(ρ,θ)中便攜帶了待檢測直線的斜率和截距。以圖5中二維碼為例,可得出圖5中直線傾斜角度如圖7所示。

圖7 圖像傾斜角度檢測效果
經數據處理,可得出圖6中二維碼旋轉角度為21°(順時針旋轉為正角度,以二維碼圖像邊緣與采集圖像界面y軸重合時為0度)。
則針對圖5所示的二維碼圖像采集界面可知,當前情況下AGV的運動狀況判斷為:車輛偏移至理想行駛路線右側,且車頭朝向偏向右側,偏離理想路線約21°。
本文中軌跡修正包括兩種修正類型,一種是在碼間運動過程中糾偏,一種是在碼點上方調整。
理想狀態下或碼間運動糾偏順利完成時,當AGV經過分配運動命令為停止或轉向的二維碼碼點時,通過在兩攝像頭間的固定間距中作勻減速運動,使得AGV停止時車體中心正與碼點中心重合,但實際情況下可完成在AGV停止時,車體中心與碼點在同一水平線上且垂直于運動方向,此時圖像采集界面的偏差信息僅有θ和Ox。
此時假設θ和Ox均大于0,表明小車偏離到理想軌跡的左邊且車頭朝向偏左。在原地調整時令小車原地旋轉,如圖8所示。

圖8 碼點處運動軌跡糾正
兩驅動輪間距設為L,兩輪轉速分別為n1、n2,二維碼碼點中心與畫面采集中心距離為x,兩輪在經過相同時間后走過的路程比記為兩輪轉速比,記左右兩輪走過路程為S1,S2,根據幾何關系,有
(5)
故欲讓車體與二維碼碼點中心對準且朝向相同,兩輪應以符合上式比例的轉速作旋轉運動。
當AGV在碼點上方糾正好位姿后向前運動,理論上應沿導航路徑作直線運動,但由于摩擦力或配重不均等影響因素,AGV會出現運動路徑偏移現象,根據慣性傳感器檢測的角度信息θ可判斷小車走向與理想路徑的角度差,進行糾偏使其順利讀取到下一二維碼標簽;當AGV經過分配運動命令為直行的二維碼碼點時,小車采集二維碼圖像獲取3項偏移信息,其中的角度信息可對六軸檢測的角度信息進行補正,以避免慣性傳感器的累積誤差對軌跡修正產生影響。碼間運動軌跡糾正如圖9所示。

圖9 碼間運動軌跡糾正
圖9中部分1隱含了部分2、3、4這3種情況,即Ox>0時,θ>0、θ=0和θ<0。
假設此時AGV朝向較導航路徑向右偏θ,應控制小車作彎道轉向運動,若單純只考慮將θ糾正,不對車體與導航路徑間的水平位置偏移做修正,則導致小車運動路徑與導航路徑平行但不重合,不滿足導航精度要求,故可考慮控制小車作彎道轉向運動,使其運動軌跡無限逼近于導航路徑。

(6)
第2步,應控制AGV右輪加速走過一定角度后,使得θ<0,此時左右輪交換速度,再次進行彎道轉向運動,且后兩次轉彎軌跡為兩段對稱的圓弧,即R2=R3。此時相當于對AGV進行了兩次軌跡調整,那么假設在第一次調整時,AGV轉彎前點坐標為(Xn+1,Yn+1),六軸獲取角度為θn+1=90,運行過路程S后,AGV的坐標為(Xn+2,Yn+2),六軸獲取角度為θn+2
(7)
在第二次調整中,AGV轉彎前點坐標為(Xn+2,Yn+2),六軸獲取角度為θn+2,運行過路程S后,AGV的坐標為(Xn+3,Yn+3),六軸獲取角度為θn+3=90
(8)
結合式(3)、式(4)可得,欲完成上述糾偏過程,當轉過半徑為R、角度為θ的圓弧時,左右兩輪速度應滿足比例為P,且應保持上述比例運動時長為T
(9)
(10)
本文實驗在4.2 m*4.2 m的區域內進行,最終結果是AGV通過WIFI接收到一連串運動命令后,采用二維碼結合慣性傳感器的導航方式,完成自主導航。利用二維碼坐標信息與圖像信息,分別實現對AGV的定位和對慣性導航長時間累計誤差的修正。
AGV運行軌跡的精確性包含了AGV運動的控制精度,除了采集實驗軌跡結果外,還需要對AGV直線運動距離、旋轉角度進行測定。
精確控制AGV直線運動距離的意義在于:當小車停止時攝像頭2中心點與二維碼圖標中心點重合。采用雙攝像頭增長了小車剎車的制動距離,在兩攝像頭間的固定間距中作勻減速運動,避免在馱運貨物時驟停的不利影響,加強了AGV定位的精確度。對比單攝像頭檢測到二維碼目標后控制AGV減速停止,有數據差異見表1。
如表1中數據可知,碼間距離固定時,針對不同的行駛速度,AGV在碼間運動的啟停存在不同的效果,可知在實際應用中,當AGV采用中高速檔位運行時,單攝像頭檢測到正確圖像信息后減速停車難以達到準確的定位效果。

表1 碼間運動測試
將文中方法應用于AGV運動控制,對慣性傳感器進行累計誤差修正。實驗區域等間距粘貼二維碼標簽,實驗結果如圖10所示,圖10中圖(a)為各方法獲得的轉彎角度和真實角度的誤差。圖(b)為各方法經過碼間運動后到達指定碼點時,真實位置與理想定位點在X軸方向上的誤差。圖(c)為車載單攝像頭和雙攝像頭情況下,AGV到達指定碼點停止后的真實位置和理想定位點在Y方向上的誤差。

圖10 定位誤差
其中,針對如圖10所示的定位誤差,記AGV偏移至航線左方為X軸正向位移誤差,AGV超過定位點一定距離為Y軸正向位移誤差。
根據多次實驗可得出AGV運行軌跡圖如圖11所示,將僅用慣性傳感器作為導航定位信息獲取來源和結合雙攝像頭掃碼與慣性傳感器的導航方法相比較,從圖中可看出:模擬AGV在工作區域內預設的行進軌跡為一個正方形,經過雙攝像頭掃碼將慣性傳感器的累積誤差消除后,相比單一使用慣性傳感器時軌跡的精確度有了較好的改進,包括小車啟停時相較于定位碼點的Y軸位移誤差也得到了改善,大大提高了AGV的使用性能。

圖11 實際誤差對比
本文提出了一種基于雙攝像頭掃碼的AGV運動軌跡修正方法:將二維碼圖像識別與慣性傳感器結合作為導航方式,對攝像頭采集到的二維碼圖像信息進行特征點識別與匹配,并進行邊緣檢測與旋轉矯正獲得AGV真實位置與理想定位點的差距,根據圖像處理得到的偏移信息并結合慣性傳感器獲取到的運動角度信息,將六軸傳感器長時間工作產生的累計誤差進行消除;利用雙攝像頭掃碼結構,增長了小車剎車的制動距離,既能使AGV平穩剎車,又對AGV減速滑行的距離進行了更加精確的控制。實驗結果表明,此方法具有很好的實用性與穩定性,可滿足AGV在實際工作中對定位和運動軌跡的精度要求。