摘要:在機(jī)器視覺(jué)中使用相機(jī)獲取物體的圖像信息時(shí),由于圖像信息與實(shí)際物體存在誤差,導(dǎo)致機(jī)器視覺(jué)系統(tǒng)不能準(zhǔn)確還原出物體的三維信息,進(jìn)而導(dǎo)致機(jī)器人目標(biāo)檢測(cè)、路徑規(guī)劃的失敗。通過(guò)建立圖像信息和實(shí)際物體間的參數(shù)模型,并使用相機(jī)標(biāo)定技術(shù)確定這些參數(shù),可以使機(jī)器視覺(jué)系統(tǒng)輸入準(zhǔn)確的結(jié)果。本文介紹了相機(jī)的成像模型,分析了不同相機(jī)標(biāo)定方法的優(yōu)缺點(diǎn),采用張氏標(biāo)定法,在ROS平臺(tái)下對(duì)相機(jī)進(jìn)行了標(biāo)定,獲得了相機(jī)的內(nèi)外參數(shù)。該方法簡(jiǎn)單、高效、對(duì)硬件要求低,便于在工業(yè)機(jī)器人系統(tǒng)中實(shí)施,提高了機(jī)器視覺(jué)系統(tǒng)的精度,具有重要的研究意義。
關(guān)鍵詞:ROS? 相機(jī)標(biāo)定? 機(jī)器視覺(jué)? 圖像處理
An Technical Analysis of Camera Calibration Based on ROS
HU Junli
(Department of Mechanical and Electrical Engineering Henan Industry and Trade Vocational College, Zhengzhou, Henna Province, 451191 China)
Abstract:When obtaining image through camera based on machine vision technology, the 3D information of an actual object cannot be reconstructed accurately. This often leads to the failure to implement target detection and path planning of a robot. The inputs of the machine vision system tend to be accurate by establishing a parameter model between image information and actual object, which can be determined by using camera calibration technology. This paper introduces the camera imaging model and analyzes the demerits of different camera calibration methods. Using Zhang 's calibration method, by calibrating the camera based on ROS platform, the external and internal parameters of the camera can be obtained. This method, which has important significance to improve the accuracy of an machine vision system , is simple, efficient and low hardware requirement。
Key Words:ROS; Camera calibration; Machine Vision; Image Processing
信息化、智能化和自主化是機(jī)器人技術(shù)的發(fā)展方向,工業(yè)機(jī)器人受現(xiàn)階段硬件性能、軟件算法技術(shù)水平的限制,完全自主化、智能化的工業(yè)機(jī)器人的出現(xiàn)還需時(shí)間[1]。目前,較為可行的辦法是將機(jī)器人技術(shù)與機(jī)器視覺(jué)技術(shù)結(jié)合起來(lái),給機(jī)器人增加“眼睛”,使工業(yè)機(jī)器人在一定程度上實(shí)現(xiàn)自主化、智能化。借助于RGB-D相機(jī)掃描的機(jī)器視覺(jué)信息,在機(jī)器人控制系統(tǒng)中重建環(huán)境信息,機(jī)器人可以根據(jù)視覺(jué)系統(tǒng)提供的位姿信息進(jìn)行姿態(tài)的調(diào)整以躲避障礙物或抓取物體。機(jī)器視覺(jué)系統(tǒng)的準(zhǔn)確輸出是工業(yè)機(jī)器人準(zhǔn)確抓取物體、避障路徑規(guī)劃的前提條件,而對(duì)視覺(jué)相機(jī)的標(biāo)定是機(jī)器視覺(jué)系統(tǒng)準(zhǔn)確輸出的必要條件。
1 相機(jī)標(biāo)定的原理
在使用相機(jī)獲取物體的圖像信息時(shí),理論上的成像模型會(huì)因圖像傳感器、鏡頭制造誤差和安裝誤差,導(dǎo)致成像模型與實(shí)際圖像信息之間產(chǎn)生誤差。因此,在機(jī)器視覺(jué)中使用相機(jī)時(shí),需要建立相機(jī)的成像幾何模型,以確定成像模型和實(shí)際圖像中對(duì)應(yīng)點(diǎn)之間的關(guān)系,將相機(jī)的成像幾何模型稱為相機(jī)參數(shù)。相機(jī)的標(biāo)定就是通過(guò)實(shí)驗(yàn)確定相機(jī)參數(shù)的過(guò)程,相機(jī)標(biāo)定是機(jī)器人視覺(jué)系統(tǒng)中一個(gè)關(guān)鍵步驟,標(biāo)定結(jié)果直接影響后續(xù)結(jié)果的準(zhǔn)確性[2]。
1.1 相機(jī)成像坐標(biāo)系
建立相機(jī)的成像幾何模型的前提是需要確定物理世界和相機(jī)成像平面之間的映射關(guān)系,因此,需要事先定義幾個(gè)重要的坐標(biāo)系[3],如圖1所示。
(1)世界坐標(biāo)系:表示真實(shí)物體的絕對(duì)坐標(biāo),一般以相機(jī)在三維空間的位置作為世界坐標(biāo)系的原點(diǎn)位置,其坐標(biāo)值即為物體在真實(shí)世界的物理位置(Xw,Yw,Zw)。
(2)相機(jī)坐標(biāo)系:以相機(jī)的視角出發(fā)建立的坐標(biāo)系,取相機(jī)的中心為坐標(biāo)原點(diǎn),相機(jī)與真實(shí)物體點(diǎn)的連線作為Z軸,由此組建的坐標(biāo)系,坐標(biāo)值用(Xc,Yc,Zc)表示,圖像坐標(biāo)系和世界坐標(biāo)系通過(guò)相機(jī)坐標(biāo)系關(guān)聯(lián)。
(3)圖像坐標(biāo)系:其原點(diǎn)為真實(shí)物理點(diǎn)與相機(jī)中心點(diǎn)的連線與成像平面的交點(diǎn),X軸和Y軸方向與成像平面的兩條邊平行,坐標(biāo)值為(x,y),用來(lái)連接像素坐標(biāo)系和圖像坐標(biāo)系,進(jìn)一步計(jì)算出真實(shí)物理點(diǎn)在像素坐標(biāo)系的中的值。
(4)像素坐標(biāo)系:表示實(shí)際圖像中像素點(diǎn)的實(shí)際位置,一般以圖像平面的左上角為坐標(biāo)原點(diǎn),將圖像坐標(biāo)系經(jīng)過(guò)平移之后可以得到像素坐標(biāo)系,用(u,v)表示坐標(biāo)值,u軸和v軸分別平行于圖像坐標(biāo)系的X軸和Y軸。
1.2 相機(jī)成像的幾何模型
世界坐標(biāo)系和相機(jī)坐標(biāo)系均為三維坐標(biāo)系,任意一個(gè)三維坐標(biāo)系經(jīng)過(guò)平移和旋轉(zhuǎn)即可得到另外一個(gè)三維坐標(biāo)系[4],定義3×3的旋轉(zhuǎn)矩陣R,平移向量T,則兩個(gè)坐標(biāo)系的關(guān)系為:
[■(X_c@Y_c@Z_c )]=R[■(X_w@Y_w@Z_w )]+T
定義0=[0,0,0]T,則上式以齊次坐標(biāo)表示為:
[■(X_c@Y_c@Z_c@1)]=[■(R&T@0^T&1)][■(X_w@Y_w@Z_w@1)]
取相機(jī)的中心為坐標(biāo)原點(diǎn),相機(jī)與真實(shí)物體點(diǎn)的連線作為Z軸,由此組建相機(jī)坐標(biāo)系,如圖2所示。圖像坐標(biāo)系和相機(jī)坐標(biāo)系之間的關(guān)系為投影變換,將相機(jī)坐標(biāo)系中的任一點(diǎn)(Xc,Yc,Zc)投影到圖像平面上得到二維的圖像坐標(biāo)系上一點(diǎn)(x,y)。
據(jù)相似三角形幾何知識(shí),假設(shè)圖像坐標(biāo)系和相機(jī)坐標(biāo)系原點(diǎn)重合,目標(biāo)點(diǎn)在相機(jī)坐標(biāo)系中的坐標(biāo)和圖像坐標(biāo)之間的關(guān)系為:
{█(x=f X_c/Z_c @y=f Y_c/Z_c )┤
其中,f是焦距,Xc、Yc、Zc是圖像點(diǎn)在相機(jī)坐標(biāo)系的坐標(biāo),x、y是圖像坐標(biāo)系中的坐標(biāo),將上式寫成齊次坐標(biāo)形式:
Z_c [■(x@y@1)]=[■(f&0&0&0@0&f&0&0@0&0&1&0)][■(X_C@Y_C@Z_C@1)]
圖像坐標(biāo)系與像素坐標(biāo)系均在同一個(gè)二維平面上,但二者的原點(diǎn)位置不同,且坐標(biāo)的單位不同。以(u,v)表示像素坐標(biāo),其單位為像素,與圖像坐標(biāo)(x,y)的關(guān)系為:
{█(u=x/dx+u_0@v=y/dy+v_0 )┤
其中,(u0,v0)為圖像坐標(biāo)系原點(diǎn)在像素坐標(biāo)系中的位置,dx,dy分別為X軸、Y軸方向上單位像素的寬度[5],將上式寫成齊次坐標(biāo)形式:
[■(u@v@1)]=[■(1/dx&0&u_0@0&1/dy&u_0@0&0&1)][■(x@y@1)]
綜上所述,像素坐標(biāo)(u,v)和世界坐標(biāo)(Xw,Yw,Zw)之間的關(guān)系為:
Z_c [■(u@v@1)]=[■(f/dx&0&u_0&0@0&f/dy&v_0&0@0&0&1&0)][■(R&T@0^T&1)][■(X_w@Y_w@Z_w@1)]
令K=[■(f/dx&0&u_0&0@0&f/dy&v_0&0@0&0&1&0)],E=[■(R&T@0^T&1)],則上式變?yōu)椋篫_c [■(u@v@1)]=KE[■(X_w@Y_w@Z_w@1)],其中K由參數(shù)f/dx 、 f/dy 、u_0 、v_0決定,僅僅與相機(jī)的內(nèi)部構(gòu)造相關(guān),稱為相機(jī)內(nèi)部參數(shù)。E稱為相機(jī)外部參數(shù)。相機(jī)標(biāo)定的過(guò)程即為確定K和E的過(guò)程。
2 相機(jī)標(biāo)定方法
相機(jī)標(biāo)定的目的是建立二維的圖像坐標(biāo)系與三維世界坐標(biāo)系之間的關(guān)系,只有正確完成相機(jī)的標(biāo)定,確定相機(jī)的內(nèi)外參數(shù),才能完成圖像坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換[6]。相機(jī)的標(biāo)定方法有很多,大體上分為3類,分別是自標(biāo)定方法、主動(dòng)視覺(jué)標(biāo)定法和傳統(tǒng)標(biāo)定法[7]。
2.1 張氏標(biāo)定法
在傳統(tǒng)標(biāo)定方法中,在相同的精度指標(biāo)條件下,以張正友教授在1998年提出的單平面棋格標(biāo)定法操作最為簡(jiǎn)便、硬件要求最低,在計(jì)算機(jī)視覺(jué)領(lǐng)域得到了廣泛的應(yīng)用。該方法在硬件方面僅需要一張二維平面棋盤格標(biāo)定板,算法需要采集不同位置的標(biāo)定板圖像數(shù)據(jù)。假定世界坐標(biāo)系在標(biāo)定板上,即標(biāo)定板上的任意一點(diǎn)Zw=0。同時(shí),標(biāo)定板上的格子尺寸已知,可以計(jì)算出標(biāo)定板上的角點(diǎn)在世界坐標(biāo)系中的位置(Xw,Yw,Zw=0)。相機(jī)拍攝圖像信息時(shí),每個(gè)角點(diǎn)的像素坐標(biāo)(u,v)也是已知的,通過(guò)以上已知信息來(lái)對(duì)相機(jī)進(jìn)行標(biāo)定。算法運(yùn)行時(shí),計(jì)算相機(jī)的內(nèi)、外參數(shù)時(shí)使用線性模型,通過(guò)單應(yīng)矩陣計(jì)算;計(jì)算相機(jī)的畸變參數(shù)時(shí)使用非線性模型,通過(guò)最小二乘法估計(jì)相機(jī)的畸變參數(shù)。最后,該算法用最大似然估計(jì)法優(yōu)化求得相機(jī)參數(shù)的最優(yōu)解,提升了相機(jī)參數(shù)的精度。
2.2 標(biāo)定步驟
張氏標(biāo)定法利用圖像之間的特定關(guān)系來(lái)對(duì)相機(jī)進(jìn)行初步估計(jì),通過(guò)構(gòu)造參數(shù)優(yōu)化函數(shù)對(duì)所求的參數(shù)不斷進(jìn)行迭代優(yōu)化處理,具體步驟如下。
(1)準(zhǔn)備一張棋盤格標(biāo)定板,棋盤格的大小已知,使用相機(jī)在不同角度(前后、左右、歪斜)拍攝圖片。
(2)對(duì)圖像中的角點(diǎn)進(jìn)行檢測(cè),得到標(biāo)定板角點(diǎn)的像素坐標(biāo)值;根據(jù)已知的棋盤格大小和世界坐標(biāo)系原點(diǎn),計(jì)算得到標(biāo)定板角點(diǎn)的物理坐標(biāo)值。
(3)計(jì)算內(nèi)、外參數(shù)矩陣
(4)計(jì)算畸變參數(shù)。
(5)使用最大似然估計(jì)法優(yōu)化參數(shù)
3 ROS平臺(tái)下相機(jī)標(biāo)定的實(shí)現(xiàn)
得益于ROS平臺(tái)完整的生態(tài),ROS平臺(tái)有豐富的驅(qū)動(dòng)和程序包對(duì)單目、深度相機(jī)進(jìn)行標(biāo)定,不需編寫一行代碼即可完成相機(jī)的標(biāo)定,本文在 Ubuntu16.04 在ROS-Kinetic平臺(tái)上完成了攝像機(jī)的標(biāo)定。首先確保正確安裝ROS,可在終端中正常啟動(dòng)roscore。調(diào)用usb_cam節(jié)點(diǎn)下usb_cam-test.launch文件測(cè)試相機(jī)是否可以正常打開(kāi),同時(shí)檢查“/usb_cam/image_raw”話題是否正常發(fā)布。然后運(yùn)行“rosrun camera_calibration cameracalibrator.py --size 6x8 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam”打開(kāi)矯正窗口,其中標(biāo)定板大小為6x8,棋盤格邊長(zhǎng)為24mm,標(biāo)定窗口如圖3所示。
在標(biāo)定時(shí),分別左右、上下移動(dòng)標(biāo)定板,當(dāng)界面中的X、Y變?yōu)榫G色時(shí),表示X、Y方向標(biāo)定完成;從遠(yuǎn)至近靠近相機(jī),使界面中的Size變成綠色;左右傾斜,使界面中的Skew變成綠色,CALIBRATE變?yōu)榭捎脿顟B(tài),標(biāo)定操作結(jié)束。最后點(diǎn)擊CALIBRATE,約1~2min之后可在命令窗口中看到生成的相機(jī)參數(shù),點(diǎn)擊COMMIT可將結(jié)果保存到y(tǒng)mal文件。
4 結(jié)語(yǔ)
相機(jī)標(biāo)定技術(shù)是應(yīng)用機(jī)器視覺(jué)實(shí)現(xiàn)工業(yè)機(jī)器人目標(biāo)跟蹤、路徑規(guī)劃的前提條件,但由于自標(biāo)定法和主動(dòng)標(biāo)定法分別需要物體精確的三維信息、復(fù)雜的硬件條件支持和靈活性不高的缺點(diǎn),無(wú)法在工業(yè)機(jī)器人系統(tǒng)中實(shí)現(xiàn)。經(jīng)過(guò)研究分析,通過(guò)對(duì)比不同的相機(jī)標(biāo)定方法,選取張氏標(biāo)定法作為工業(yè)機(jī)器人視覺(jué)系統(tǒng)中標(biāo)定的方法,并在ROS平臺(tái)下進(jìn)行了實(shí)現(xiàn),提升了工業(yè)機(jī)器人視覺(jué)系統(tǒng)的性能。
參考文獻(xiàn)
[1]魏溆桐.機(jī)械工程智能化的現(xiàn)狀及發(fā)展方向探討[J].汽車博覽,2020(4):27.
[2]曾勁松,薛文凱,徐博凡,等.雙目視覺(jué)引導(dǎo)機(jī)器人定位抓取技術(shù)的研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2019(1):131-133,137.
[3]張黎,陳軍,劉春玲,等.基于二維圖像的三維幾何參數(shù)測(cè)量研究[J].武漢紡織大學(xué)學(xué)報(bào),2019(4):66-71.
[4]李超偉.遙操作工程機(jī)器人的視覺(jué)定位技術(shù)研究[D].廣州:廣東工業(yè)大學(xué),2018.
[5]谷鳳偉,高宏偉,姜月秋.一種簡(jiǎn)易的單目視覺(jué)位姿測(cè)量方法研究[J].光電技術(shù)應(yīng)用,2018(4):64-70.
[6]景文博,黃炳坤,劉健,等.激光照射性能測(cè)量中異源相機(jī)的標(biāo)定方法[J].兵工學(xué)報(bào),2020(5):924-931.
[7]鐘佩思,夏強(qiáng),劉梅,等.基于雙目視覺(jué)的正交函數(shù)局部擬合的工件定位方法[J].科學(xué)技術(shù)與工程,2020(21):8696-8701.
基金項(xiàng)目:河南省高等學(xué)校重點(diǎn)科研項(xiàng)目計(jì)劃(項(xiàng)目名稱:基于ROS的六軸工業(yè)機(jī)器人運(yùn)動(dòng)規(guī)劃研究;項(xiàng)目編號(hào):22B413002)。
作者簡(jiǎn)介:胡俊立(1984—),男,碩士,講師,研究方向?yàn)橛?jì)算機(jī)科學(xué)與模式識(shí)別。