徐建明,胡弘歷
(浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023)
隨著新能源汽車產(chǎn)業(yè)的逐步成熟和市場需求的逐漸擴大,新能源汽車充電技術(shù)受到了越來越多的關(guān)注。傳統(tǒng)的新能源汽車充電方式[1]依賴人力,要求操作人員手持充電設(shè)備連接到汽車充電插座,該方式人工成本高、作業(yè)效率低、漏電安全隱患大,因此,新能源汽車充電方式的無人化、智能化便有了很大的研究價值。充電機器人自動化充電方式[2-3]的實現(xiàn)需要完成以下工作:1)機器人通過導(dǎo)航移動到待充電電動汽車的充電接口旁;2)視覺系統(tǒng)識別定位充電接口;3)機器人控制充電槍插入充電插座,其中的難點之一是充電接口的識別定位。電動汽車現(xiàn)場充電作業(yè)一般處于戶外環(huán)境,光線變化大、反射不均勻;充電設(shè)備存在強電磁干擾;充電插座內(nèi)部為金屬材質(zhì)、孔徑不一的多軸孔,易反光遮擋表面信息,增加了實現(xiàn)電動汽車自動充電的技術(shù)難度,尤其在充電孔的識別定位方面存在很大的困難。
電動汽車充電插座識別定位技術(shù)的研究和應(yīng)用在國內(nèi)外都處于探索階段,國外的公司和少數(shù)高校進行了充電機器人的研究,特斯拉研發(fā)了一款蛇形充電機器人用于電動汽車的充電[4];大眾聯(lián)合庫卡研發(fā)了一款自動充電系統(tǒng)對??寇囕v進行掃描和充電口檢測[5]。但目前以上研究只有相關(guān)報道,難以實現(xiàn)學(xué)習(xí)借鑒。國內(nèi)的研究主體是部分高校,張輝等[6]研究了一種基于機器視覺的新能源電動車充電孔檢測與定位方法,通過形態(tài)學(xué)的方法提取充電孔特征及其像素坐標(biāo),但是該方法對環(huán)境的適應(yīng)性差;孫成[7]研究了基于單目視覺的復(fù)雜環(huán)境下充電口的識別定位方法;王超[8]研究了電動汽車充電口位姿激光掃描定位技術(shù),通過激光器掃描的方法確定充電口位置,但是兩者都是通過對充電接口進行外部改裝,添加高反光材料來識別定位充電口,在實際應(yīng)用中不可能對所有車輛充電插座都進行改造,因此難以落地推廣。此外,上述研究都只是針對一種充電插座進行研究分析,沒有考慮對快充、慢充插座的識別。為此,結(jié)合研究現(xiàn)狀,筆者采用基于支持向量機和線性可變形模板匹配相結(jié)合的方法,設(shè)計“眼在手上”的充電操作機器人雙目視覺系統(tǒng),可區(qū)分快充、慢充插座、定位目標(biāo)插座中心充電孔,引導(dǎo)機器人完成充電操作。
充電操作機器人系統(tǒng)主要包括六自由度機器人、移動機器人(AGV)、激光雷達、工控機、CCD工業(yè)相機、工業(yè)鏡頭、條形光源、電動汽車充電設(shè)備(包括充電槍快換接頭、充電槍)和機器人控制柜,系統(tǒng)結(jié)構(gòu)組成如圖1所示。
圖1 機器人系統(tǒng)結(jié)構(gòu)組成
系統(tǒng)主要分為3 部分:控制中心、視覺傳感部分和執(zhí)行裝置。工控機作為整個系統(tǒng)的控制中心,基于TCP/IP協(xié)議建立和機器人控制器、視覺傳感器之間的通信,對圖像數(shù)據(jù)進行處理,并將運算得到的坐標(biāo)結(jié)果轉(zhuǎn)化為運動控制指令,發(fā)送至機器人控制器。視覺傳感器[11]部分包括兩個工業(yè)相機、鏡頭,輔以一個條形光源,搭載于機械臂末端。雙目視覺系統(tǒng)實現(xiàn)對電動汽車充電插座的圖像采集、插座識別和充電孔定位;條形光源提供穩(wěn)定的光照,克服外部光照變化的工作環(huán)境。執(zhí)行裝置包括充電操作機器人底座和六自由度機器人,機器人底座是一個AGV,裝載有激光雷達,通過構(gòu)建空間地圖將機器人導(dǎo)航至電動汽車充電口[9-10];AGV上裝載六自由度機器人,機器人末端連接汽車充電槍,實現(xiàn)控制充電槍插入充電插座的操作。
電動汽車充電操作機器人在工作的過程中,首先由AGV導(dǎo)航移動至電動汽車充電插座附近,然后由雙目視覺系統(tǒng)完成對充電插座的識別和充電孔的定位,最后由機器人根據(jù)識別到的坐標(biāo)信息將末端的充電槍插入目標(biāo)充電插座,工作流程如圖2所示。
圖2 機器人系統(tǒng)工作流程
系統(tǒng)運行的具體過程:1)機器人、工控機上電,執(zhí)行機器人系統(tǒng)、視覺系統(tǒng)的初始化;2)AGV通過激光導(dǎo)航,移動至待充電電動汽車充電接口旁,下發(fā)識別指令給工控機;3)工控機監(jiān)聽到識別信號,觸發(fā)視覺系統(tǒng)工作,雙目相機采集充電插座圖像,執(zhí)行圖像處理程序識別定位充電口,將識別定位結(jié)果解析為運動指令發(fā)送至機器人控制器;4)機器人根據(jù)運動指令,將末端的充電槍插入充電插座;5)機器人末端快換接頭和充電槍分離,機器人移動到初始位置,本次充電操作完成,等待下次工作指令。
要實現(xiàn)準(zhǔn)確識別目標(biāo)充電插座、定位充電孔的功能,就必須確立一套完善的目標(biāo)識別定位方案,通過對視覺系統(tǒng)的功能需求分析,筆者設(shè)計了基于支持向量機和線性可變形模板匹配的充電插座識別定位系統(tǒng),包括圖像預(yù)處理、充電插座分類和充電孔匹配定位,主要操作有圖像灰度化、圖像濾波、圖像分割、特征提取、SVM分類器設(shè)計及參數(shù)選擇、線性可變形模板創(chuàng)建及匹配定位等。目標(biāo)充電插座識別和充電孔定位算法流程如圖3所示。
圖3 識別定位算法流程
電動汽車充電插座的重要特征是插座內(nèi)部有多個孔徑不一的圓形軸孔,并且軸孔是金屬孔芯,在光源照射下,由于反光使得該區(qū)域處于同一種范圍的黃白色或暗黃色的暖色調(diào),邊緣信息突出,而軸孔的外部為深色系塑料材質(zhì),屬于暗冷色調(diào),有較大色差。因此,選擇提取充電孔的邊緣輪廓特征作為分類依據(jù)。
支持向量機(Support vector machines,SVM)[12-15]作為一種二分類模型,對于小樣本、非線性模式識別擁很大的優(yōu)勢。針對電動汽車快充、慢充插座的內(nèi)部結(jié)構(gòu)特征差異,采用基于支持向量機的方法進行識別。MVTec公司的Halcon視覺平臺提供了SVM分類器的算法包,利用該SVM分類器,對電動汽車快充、慢充兩個插座設(shè)置合適的分類器參數(shù),進行分類器訓(xùn)練,得到分類器模型,將該分類器模型作用于快充、慢充插座的測試樣本,達到預(yù)期的識別率便可以得到一個合適的SVM模型。具體的模型訓(xùn)練流程如圖4所示。
圖4 SVM模型訓(xùn)練流程
充電插座SVM模型的訓(xùn)練步驟為
1)充電插座數(shù)據(jù)樣本制作。分別采集不同光照條件、角度和工作距離下快充、慢充插座的圖像各50 張,再通過比例縮放、角度旋轉(zhuǎn)的方式對原始圖像進行樣本擴充,得到各200 張圖像樣本,對快充、慢充插座圖像樣本進行標(biāo)注處理。
2)充電插座特征提取。利用create_class_svm(::NumFeatures,KernelType,KernelParam,Nu,NumClasses,Mode,Preprocessing,NumComponents:SVMHandle)函數(shù)創(chuàng)建一個SVM分類器,根據(jù)兩類插座的結(jié)構(gòu)特性區(qū)別,選擇提取樣本圖像的輪廓中心、輪廓長度、輪廓區(qū)域面積和灰度不變矩4種特征,特征數(shù)量設(shè)置為4;核函數(shù)選擇RBF徑向基函數(shù)[16],實現(xiàn)在高維特征空間中非線性變?yōu)榫€性可分離的分類任務(wù);類別數(shù)量設(shè)置為2,其他參數(shù)選擇默認。選擇圖像樣本總量的70%作為訓(xùn)練數(shù)據(jù),對輸入樣本進行特征提取,將兩類插座的多特征添加到創(chuàng)建的SVM訓(xùn)練器中。
3)SVM模型訓(xùn)練。利用train_class_svm()函數(shù),對輸入的訓(xùn)練樣本數(shù)據(jù)進行SVM訓(xùn)練,訓(xùn)練結(jié)束后得到一個SVM訓(xùn)練模型。
4)SVM模型測試。選擇圖像剩余樣本的30%作為測試樣本進行分類測試,利用classify_class_svm(::SVMHandle,Features,Num:Class)函數(shù)進行分類。根據(jù)SVM分類結(jié)果,當(dāng)樣本數(shù)據(jù)的測試正確率達到期望標(biāo)準(zhǔn)95%,則輸出最終得到的SVM分類器,否則增加樣本數(shù)據(jù)進行SVM模型的訓(xùn)練。
快充、慢充插座的SVM分類實現(xiàn)的主要思路是:通過提取快充、慢充插座內(nèi)部充電孔的邊緣輪廓特征信息,利用訓(xùn)練的SVM分類器,對提取的特征進行分類,從而分辨出是快充還是慢充插座,實現(xiàn)步驟為
1)通過雙目相機采集快充、慢充插座圖像,利用邊緣檢測提取充電插座內(nèi)部充電孔的邊緣輪廓信息。
2)提取充電孔邊緣輪廓的輪廓中心、輪廓長度、輪廓區(qū)域面積和灰度不變矩4種特性作為分類器的輸入特征,并利用add_sample_class_svm()函數(shù)添加到SVM分類器中。
3)根據(jù)不同充電插座特征信息,通過訓(xùn)練好的SVM模型,利用classify_class_svm()函數(shù)進行快充、慢充插座的SVM分類。
4)用矩形框?qū)⒎诸惓龅哪繕?biāo)插座框出,標(biāo)注“fast”表示快充插座類別,“slow”表示慢充插座類別,從而實現(xiàn)對充電插座的區(qū)域的大致定位,以便后續(xù)對充電孔進行精確定位和坐標(biāo)提取。
對快充、慢充插座進行不同光照、距離和角度的60組分類識別實驗,通過雙目視覺系統(tǒng)分別采集60 組充電插座圖像對,利用訓(xùn)練的SVM模型進行分類識別,識別正確率如表1所示。由表1可知:在小數(shù)據(jù)樣本的情況下,筆者采用的SVM分類方法實現(xiàn)了對快充、慢充插座的分類,且插座識別的正確率滿足對充電操作機器人視覺系統(tǒng)的識別要求。
表1 充電插座分類正確率
通過線性可變形模板匹配,提取充電孔的邊緣輪廓特征實現(xiàn)充電孔的定位。該方法是一種針對表面呈平面狀物體的三維模板匹配[17-19],對尺度變化、角度變化、非線性的光照變化和表面局部變形的情況都有很好的匹配效果。充電插座表面呈平面狀,內(nèi)部為金屬材質(zhì)的多軸孔,灰度變化明顯,該方法能夠精確獲取充電插座中心插孔的輪廓邊緣和像素坐標(biāo)。
對采集的圖像進行預(yù)處理,消除電磁噪聲干擾,根據(jù)分類識別的目標(biāo)插座區(qū)域,利用線性可變形模板匹配,定位中心充電孔,結(jié)合雙目視差原理計算中心充電孔在三維空間中的位姿。通過設(shè)計視覺算法實現(xiàn)流程,完成線性可變形模板的創(chuàng)建,模板創(chuàng)建流程如圖5所示。
圖5 線性可變形模板創(chuàng)建流程
線性可變形模板的具體創(chuàng)建步驟為
1)圖像預(yù)處理。分別采集清晰的快充、慢充插座樣本圖像,對圖像進行灰度化處理。由于作業(yè)環(huán)境有著充電設(shè)備的強電磁干擾,選擇使用雙邊濾波算法[20],過濾掉高頻噪聲信號,同時保留邊緣銳度和圖像細節(jié),利用bilateral_filter(Image,ImageJoint:ImageBilateral:SigmaSpatial,SigmaRange,GenParamName,GenParamValue:)函數(shù)對采集圖像進行濾波,sampling_ratio設(shè)置更大的采樣率會實現(xiàn)更快的濾波。
2)邊緣提取。選擇感興趣區(qū)域(ROI),即插座充電孔區(qū)域,利用基于Canny算法[21]的edges_sub_pix(Image:Edges:Filter,Alpha,Low,High:)函數(shù)對該ROI進行邊緣檢測,提取出內(nèi)部充電孔的亞像素精度邊緣。選擇Canny濾波器,設(shè)置濾波器的Alpha對邊緣梯度方向進行非極大值抑制,最后設(shè)置Low、High閾值,利用雙閾值算法檢測和連接邊緣輪廓。
3)圓形擬合。利用基于最小二乘法[22]的fit_circle_contour_xld()函數(shù)對提取出的邊緣輪廓進行圓形擬合,得到清晰的圓形充電插孔輪廓。
4)創(chuàng)建模板。將預(yù)處理后的圖像作為參考模板,調(diào)用create_planar_uncalib_deformable_model()函數(shù)進行線性可變形模板的創(chuàng)建,設(shè)置模板參數(shù),包括相機內(nèi)參數(shù)、金字塔層數(shù)、模板尺寸縮放比例、搜索角度范圍、搜索步長、對比度、匹配分數(shù)和貪婪度等,最后將模板文件保存至本地。
對目標(biāo)插座區(qū)域進行線性可變形模板匹配,實現(xiàn)中心充電孔的精確定位和像素坐標(biāo)提取。利用find_planar_uncalib_deformable_model()函數(shù)調(diào)用創(chuàng)建的線性可變形模板,作用于目標(biāo)充電插座區(qū)域進行模板匹配,搜索內(nèi)部中心充電孔的精確位置。主要通過調(diào)整起始搜索角度、模板尺寸縮放比例和貪婪度來增加搜索速度,調(diào)整匹配分數(shù)來提高匹配的成功率,從而優(yōu)化模型的匹配效果。通過調(diào)試,設(shè)置合適的匹配參數(shù)后,利用模板匹配將模板中的插孔邊緣輪廓映射到插座圖像上,輸出姿態(tài)偏移(rx,ry,rz)和匹配分數(shù)Score;選擇中心插孔輪廓,利用area_centre()函數(shù)獲得其像素坐標(biāo)(x,y),慢充插座的匹配結(jié)果如圖6所示,提取出了插座的7個軸孔輪廓,定位出中心充電孔,并以x,y,z軸作出三維空間方向標(biāo)識。
圖6 充電插座模板匹配結(jié)果
得到目標(biāo)插座中心充電孔的像素坐標(biāo)后,根據(jù)雙目視覺的視差原理[23],計算出充電孔在空間中的三維坐標(biāo)P(x,y,z),如圖7所示。
圖7 雙目視差原理
圖7中:f為已知鏡頭焦距;b為基線距離;m為投影距離;O1,O2為左右相機光平面中心點;P1(xl,yl),P2(xr,yr)分別為左右相機的像素坐標(biāo)。記d為兩點橫坐標(biāo)的視差值,根據(jù)三角形相似關(guān)系,可得
(1)
由式(1)結(jié)合P1,P2點像素坐標(biāo),可以得到目標(biāo)空間點的三維坐標(biāo)P(x,y,z)為
(2)
雙目視覺分為平行和非平行雙目視覺,實驗中為了擴大雙目視覺的視野范圍,左右相機存在一定的角度傾斜,屬于非平行雙目視覺,而上述視差原理是基于平行雙目視覺,因此需要對采集的圖像進行立體校正,使左右圖像處于同一平面,實現(xiàn)步驟為
1)調(diào)用gen_binocular_rectification_map()函數(shù)創(chuàng)建一個圖像校正映射,輸入為左右相機圖像和相機內(nèi)參數(shù),生成用于描述相機圖像對到公共校正圖像平面的轉(zhuǎn)換的映射Map1,Map2和相機的校正參數(shù)。
2)調(diào)用map_image(Image,Map:ImageMapped::)函數(shù),將Map映射作用于左右圖像對,就可以將采集到的圖像對校正為標(biāo)準(zhǔn)極線幾何結(jié)構(gòu),校正過后圖像對的匹配點在同一水平線并且極線相互平行。
立體校正前后雙目相機的相對位姿參數(shù)如表2所示。此時便可以根據(jù)視差原理,結(jié)合得到的左右圖像中心充電孔的像素坐標(biāo),計算出插座中心充電孔的三維坐標(biāo)。
表2 校正前后左右相機相對位姿參數(shù)
充電操作機器人視覺系統(tǒng)在進行對充電插座的識別定位時,可能遇到一些異常情況,導(dǎo)致視覺系統(tǒng)不能完成預(yù)期的識別定位功能,如圖8所示。
圖8 異常識別情況
圖8(a)中:在AGV導(dǎo)航至電動汽車充電口旁時,可能由于激光構(gòu)圖的誤差導(dǎo)致??课恢闷钶^大,機器人和充電口的距離超出機器人的工作空間,此時雙目視覺識別系統(tǒng)定位充電孔,發(fā)送坐標(biāo)信息給機器人控制器,會導(dǎo)致機器人無法移動到目標(biāo)點而出現(xiàn)異常。針對該情況,筆者設(shè)計了深度閾值處理機制:1)根據(jù)充電機器人的工作空間范圍,確定其在z方向的有效工作距離為[z1,z2];2)視覺系統(tǒng)工作時,通過雙目視覺識別定位出z方向深度距離,判斷是否處于機器人的工作距離范圍,當(dāng)超出工作距離,則下發(fā)異常狀態(tài)碼至AGV控制器,AGV移動到新的初始位置,視覺系統(tǒng)進行二次識別。
圖8(b)中:由于筆者采用的充電孔定位算法利用了充電插座的充電口輪廓特征,而充電口的軸孔存在一定的深度,因此實際上定位的是充電口軸孔的底部。當(dāng)雙目相機的初始位置和充電口的角度偏差過大時,會導(dǎo)致定位的深度信息小于實際深度距離,此時如果將定位的坐標(biāo)信息發(fā)送給機器人控制器,會導(dǎo)致充電槍插入深度存在偏差。針對該情況,設(shè)計了角度閾值處理機制:1)汽車充電接口相對角度是固定的,因此充電槍插入汽車充電插座時,在期望情況下,機械臂偏航角θ處于固定角度,在偏航角最大誤差α允許范圍內(nèi),充電槍可以順利插入插座,識別角度偏差過大會導(dǎo)致識別的深度信息小于實際深度距離,則可能插入失敗。根據(jù)這一特性設(shè)計了偏航角θ的角度閾值,設(shè)置允許的角度偏差范圍為[θ-α,θ+α];2)在識別算法中,對識別到的偏航角rz添加異常處理判斷,當(dāng)rz超出[θ-α,θ+α]范圍時,則下發(fā)異常狀態(tài)碼至AGV控制器,AGV移動到新的初始位置,視覺系統(tǒng)進行二次識別。
通過建立識別的異常處理機制,對可能出現(xiàn)的異常狀況采取相應(yīng)處理措施,避免異常情況對機器人和車輛造成損害,從而保證機器人系統(tǒng)的安全性、可靠性和系統(tǒng)運行的穩(wěn)定性。
根據(jù)電動汽車充電操作機器人的功能需求進行系統(tǒng)設(shè)計,搭建實驗平臺如圖9所示,主要包括執(zhí)行裝置、視覺傳感裝置和控制裝置。在此平臺進行充電插座的識別和充電孔定位的實驗。
圖9 實驗平臺
為了驗證視覺系統(tǒng)所采用的識別定位方法的可行性和優(yōu)越性,將筆者方法與模板匹配方法進行了對比實驗驗證。為模擬出真實作業(yè)場景的不同工作情況,在實驗中分別設(shè)置了不同光照條件、工作角度和工作距離的環(huán)境條件來驗證方法的可行性,圖10所示為不同實驗條件下通過雙目視覺采集的左右相機圖像對。圖10(a,b)分別為明亮、昏暗光照條件下采集的圖像對,以驗證視覺系統(tǒng)在不同光照下的識別效果;圖10(c,d)分別為機器人和插座距離30,40 cm條件下采集的圖像對,以驗證視覺系統(tǒng)在不同工作距離下的識別效果;圖10(e,f)分別為機器人初始位置位于充電插座左側(cè)45°、右側(cè)45°條件下采集的圖像對,以驗證視覺系統(tǒng)在不同工作角度下的識別效果。采用模板匹配的方法和筆者方法所得到的充電孔識別定位結(jié)果如表3,4所示,序號1~6的數(shù)據(jù)分別對應(yīng)圖10(a~f)實驗條件下視覺系統(tǒng)識別定位的耗時和中心充電孔位姿信息。目標(biāo)插座中心充電孔的實際期望位置坐標(biāo)為(805 mm,55 mm,616 mm),姿態(tài)坐標(biāo)為(-92°,1.5°,-92°),由表4可知:筆者方法下的充電孔識別結(jié)果中,位置誤差在2 mm內(nèi),姿態(tài)誤差在1.5°內(nèi),表明筆者方法可以有效克服光照條件等外部環(huán)境條件的影響,對不同工作距離和工作角度都有很好的識別效果,滿足充電操作機器人的在線充電要求。
圖10 不同實驗條件下的充電孔定位實驗
表3 模板匹配方法下充電孔識別結(jié)果
表4 SVM+模板匹配方法下充電孔識別結(jié)果
表3,4中序號4行數(shù)據(jù)為二次識別結(jié)果,該次識別在實驗中表現(xiàn)為異常識別狀況,報錯提示“Depth Error.Out of Range.”,表示機器人距充電口的距離超出機器人的工作空間范圍,此時觸發(fā)異常識別機制處理程序,先下發(fā)異常狀態(tài)碼到AGV控制器,再進行二次識別,分析得到新的識別定位結(jié)果,滿足識別要求。由表4實驗數(shù)據(jù)可以得到在識別成功情況下兩種方法的平均耗時及平均位姿誤差,結(jié)果如表5所示。筆者方法相對于模板匹配的方法,在平均識別耗時上減少了43.5%,在x,y,z方向的平移誤差分別減小了31.3%,34.6%和17%,在rx,ry,rz方向的旋轉(zhuǎn)誤差分別減小了49.8%,46.5%和6.7%。
表5 識別耗時及位姿誤差
針對電動汽車充電過程中的充電插座識別和充電孔定位問題,設(shè)計了基于雙目視覺、支持向量機和線性可變形模板匹配的充電操作機器人雙目視覺系統(tǒng)。實驗結(jié)果表明:該系統(tǒng)能夠有效區(qū)分快充和慢充插座、定位目標(biāo)插座中心充電孔,識別速度和定位精度滿足在線作業(yè)要求。下一步將繼續(xù)研究充電操作機器人和AGV相結(jié)合的多機協(xié)同在不同場景下的作業(yè),完整地實現(xiàn)真實場景中電動汽車無人化充電操作。