标定学习笔记(四)-- 手眼标定详解
? ? ? ? 本文主要介紹了機(jī)器人手眼標(biāo)定的相關(guān)原理與思路,介紹了兩種不同安裝條件下如何通過(guò)同組固定點(diǎn)進(jìn)行手眼標(biāo)定,及通過(guò)解決 ?問(wèn)題進(jìn)行手眼標(biāo)定,最后給出了手眼標(biāo)定的相關(guān)評(píng)價(jià)方式。文章重在進(jìn)行標(biāo)定過(guò)程的梳理以及相關(guān)公式的推導(dǎo),主要目的還是為了厘清什么是手眼標(biāo)定,以及如何進(jìn)行手眼標(biāo)定。
????????本文依舊作為自己學(xué)習(xí)的一些記錄,如有謬誤,歡迎斧正!
? ? ? ? 文章參考資料:
????????相機(jī)標(biāo)定(一):機(jī)器人手眼標(biāo)定 - 知乎 (zhihu.com)
????????手眼標(biāo)定_全面細(xì)致的推導(dǎo)過(guò)程 (360doc.com)
????????手眼標(biāo)定傳統(tǒng)方法 - 研究僧小陳 - 博客園 (cnblogs.com)
????????手眼標(biāo)定之基本原理_3D視覺工坊-CSDN博客_手眼標(biāo)定
????????手眼標(biāo)定(Hand in Eye) - 簡(jiǎn)書 (jianshu.com)
1? 如何理解手眼標(biāo)定
? ? ? ? 我們不妨想象,在生活中,我們需要用手移動(dòng)某一物體時(shí),需要經(jīng)過(guò)哪些步驟?
? ? ? ? 第一步:通過(guò)眼睛去觀察三維世界,將三維世界的信息傳遞至視網(wǎng)膜,轉(zhuǎn)換成二維平面的信息傳遞給我們的大腦;
? ? ? ? 第二步:假設(shè),當(dāng)我們需要移動(dòng)三維空間下的物體時(shí),對(duì)我們的大腦而言,是將一個(gè)物體從二維平面的 A' 點(diǎn)移動(dòng)至 B' 點(diǎn),因此大腦需要計(jì)算從二維坐標(biāo)轉(zhuǎn)換到三維坐標(biāo) A 點(diǎn)和 B 點(diǎn)。
? ? ? ? 第三步:當(dāng)大腦獲得了 A 點(diǎn)和 B 點(diǎn)的坐標(biāo),就可以用手將物體進(jìn)行相應(yīng)的移動(dòng)。
? ? ? ? 其中,第二步就是進(jìn)行手眼標(biāo)定,即得到二維坐標(biāo)(像素坐標(biāo)系)到三維坐標(biāo)(世界坐標(biāo)系)的轉(zhuǎn)換矩陣。
? ? ? ? 在實(shí)際的控制過(guò)程中,相機(jī)在檢測(cè)到目標(biāo)在圖像中的像素位置后,通過(guò)標(biāo)定好的坐標(biāo)轉(zhuǎn)換矩陣將相機(jī)的像素坐標(biāo)變換到機(jī)械手的空間坐標(biāo)系中,然后根據(jù)機(jī)械手坐標(biāo)系計(jì)算出各個(gè)電機(jī)該如何運(yùn)動(dòng),從而控制機(jī)械手到達(dá)指定位置。
2? 坐標(biāo)系與轉(zhuǎn)換關(guān)系
2.1? 基礎(chǔ)坐標(biāo)系
? ? ? ? 對(duì)于上面的講解我們將其推及一個(gè)簡(jiǎn)單的機(jī)械手系統(tǒng),我們不難得知其中涉及的坐標(biāo)系包括:
? ? ? ? 1)機(jī)械手基礎(chǔ)坐標(biāo)系:
? ? ? ? 2)機(jī)械手末端夾具坐標(biāo)系:
? ? ? ? 3)相機(jī)坐標(biāo)系:
? ? ? ? 由之前介紹的相機(jī)標(biāo)定相關(guān)知識(shí),我們也可以知道,這里說(shuō)的相機(jī)坐標(biāo)系不僅包括相機(jī)本身的坐標(biāo)系,還包括像素坐標(biāo)系。
? ? ? ? 4)工件坐標(biāo)系(標(biāo)定板坐標(biāo)系):
2.2? 坐標(biāo)系轉(zhuǎn)換關(guān)系
? ? ? ? 坐標(biāo)系之間的轉(zhuǎn)換關(guān)系可以記為:
? ? ? ? 1)機(jī)械手末端夾具坐標(biāo)系到機(jī)械手基礎(chǔ)坐標(biāo)系的轉(zhuǎn)換關(guān)系:
? ? ? ? 該轉(zhuǎn)換關(guān)系可以通過(guò)機(jī)器人系統(tǒng)得出,在手眼標(biāo)定過(guò)程中我們認(rèn)為其是已知的,其轉(zhuǎn)換關(guān)系用矩陣進(jìn)行表示可以記為:?。
? ? ? ? 2)相機(jī)坐標(biāo)系到機(jī)械手末端夾具坐標(biāo)系的轉(zhuǎn)換關(guān)系:
? ? ? ? 盡管該轉(zhuǎn)換關(guān)系視相機(jī)的裝載方式有所區(qū)別,但相同點(diǎn)是我們認(rèn)為其是未知的,也正是我們需要去進(jìn)行求解的,其轉(zhuǎn)換關(guān)系用矩陣進(jìn)行表示可以記為:?。
? ? ? ? 3)相機(jī)坐標(biāo)系到標(biāo)定板坐標(biāo)系的轉(zhuǎn)換關(guān)系:
? ? ? ? 該轉(zhuǎn)換關(guān)系我們可以通過(guò)相機(jī)標(biāo)定進(jìn)行獲得,因此我們也認(rèn)為其是已知的,其轉(zhuǎn)換關(guān)系用矩陣進(jìn)行表示可以記為:?。
? ? ? ? 4)標(biāo)定板坐標(biāo)系到機(jī)械手基礎(chǔ)坐標(biāo)系的轉(zhuǎn)換關(guān)系:
? ? ? ? 該轉(zhuǎn)換關(guān)系也正是我們最終希望求解的,只要機(jī)械手整體與標(biāo)定板的相對(duì)位置不發(fā)生變化,這個(gè)變換矩陣也就不發(fā)生變化。
3? 利用同組固定點(diǎn)進(jìn)行標(biāo)定
3.1? 通用思路
? ? ? ? 機(jī)器人的手眼標(biāo)定其實(shí)就是兩個(gè)坐標(biāo)系之間的轉(zhuǎn)換關(guān)系的標(biāo)定。我們希望計(jì)算出相機(jī)坐標(biāo)系到機(jī)械手坐標(biāo)系的轉(zhuǎn)換關(guān)系,并且我們已知對(duì)應(yīng)的幾個(gè)固定點(diǎn) 在這兩個(gè)坐標(biāo)系的坐標(biāo)?和??。根據(jù)坐標(biāo)轉(zhuǎn)換公式,可以得出:
? ? ? ? 上式中的??表示我們希望計(jì)算出的相機(jī)到機(jī)械手的轉(zhuǎn)換矩陣。
3.2? 相機(jī)不在機(jī)械手上(eye to hand)
3.2.1? 待求量
? ? ? ? 相機(jī)固定在一個(gè)地方,機(jī)械手的運(yùn)動(dòng)不會(huì)帶著相機(jī)一起移動(dòng)。對(duì)于 Eye-to-Hand 而言,相機(jī)坐標(biāo)系相對(duì)于機(jī)械手基礎(chǔ)坐標(biāo)系是固定的,而對(duì)于機(jī)械手末端夾具坐標(biāo)系是變化的。
? ? ? ? 在 Eye-to-Hand 的問(wèn)題下,待求量為相機(jī)到機(jī)械手基座坐標(biāo)系的固定轉(zhuǎn)換矩陣? 。考慮到相機(jī)是固定在一個(gè)位置,因此相機(jī)只有相對(duì)于基座坐標(biāo)系才是固定不變的,這樣我們的待求量?是一個(gè)固定的參數(shù),這樣的標(biāo)定才是有意義的。
3.2.2? 標(biāo)定思路
? ? ? ? 根據(jù)?第3.1節(jié)?中所介紹的通用求解思路,下一步需要通過(guò)棋盤格圖像上的固定點(diǎn) ?來(lái)獲得機(jī)械手基座坐標(biāo)系下的固定點(diǎn)坐標(biāo)??和相機(jī)坐標(biāo)系下的坐標(biāo)?。
? ? ? ? 通過(guò)識(shí)別棋盤格,我們可以得到棋盤格中的角點(diǎn)在相機(jī)坐標(biāo)系下的坐標(biāo)?,但是這是二維坐標(biāo),通過(guò)相機(jī)內(nèi)參和物體的深度信息我們可以計(jì)算出?。接下來(lái)我們只要測(cè)量出來(lái)對(duì)應(yīng)的棋盤格點(diǎn)在機(jī)械手基座坐標(biāo)系下的坐標(biāo)?,便可以標(biāo)定出機(jī)械手和相機(jī)之間的轉(zhuǎn)換矩陣?。
3.2.3? 轉(zhuǎn)換關(guān)系推導(dǎo)
? ? ? ? 在 Eye-to-Hand 問(wèn)題下,棋盤格在標(biāo)定的時(shí)候,會(huì)固定在機(jī)械手的末端夾具上,而機(jī)械手的末端夾具坐標(biāo)系到基座坐標(biāo)系的轉(zhuǎn)換矩陣,可以通過(guò)機(jī)器人正向運(yùn)動(dòng)學(xué)計(jì)算得到。因此我們可以通過(guò)如下關(guān)系測(cè)量出棋盤格點(diǎn)在機(jī)器人基座坐標(biāo)系下的坐標(biāo)??:
? ? ? ? 在上述公式中,?和??分別代表機(jī)械手末端夾具坐標(biāo)系(tool)到基座坐標(biāo)系(base)的轉(zhuǎn)換矩陣和棋盤格坐標(biāo)系(board)到機(jī)械手末端夾具坐標(biāo)系(tool)的轉(zhuǎn)換矩陣。
????????其中,?可以實(shí)時(shí)根據(jù)機(jī)器人正向運(yùn)動(dòng)學(xué)得到,而??可以通過(guò)設(shè)計(jì)一個(gè)固定尺寸的棋盤格得到。當(dāng)棋盤格尺寸以及安裝固定后,我們可以設(shè)棋盤格的左上角點(diǎn)為原點(diǎn),然后通過(guò)測(cè)量或者設(shè)計(jì)尺寸計(jì)算棋盤格原點(diǎn)到機(jī)器人末端坐標(biāo)原點(diǎn)的平移坐標(biāo),而棋盤格平面一般與機(jī)械手末端載具平面平行,因此該原點(diǎn)的法向量也可以獲得,接下來(lái)就可以計(jì)算出??。
?????????代表棋盤格角點(diǎn)再棋盤格坐標(biāo)系下的坐標(biāo),這個(gè)同樣可以根據(jù)設(shè)計(jì)棋盤格的尺寸得到。需要注意的是棋盤格的角點(diǎn)在機(jī)器人坐標(biāo)系和圖像坐標(biāo)系的順序需要一一對(duì)應(yīng),但是一般的方形棋盤格會(huì)存在旋轉(zhuǎn)對(duì)稱的問(wèn)題,即我們無(wú)法區(qū)分棋盤格的原點(diǎn)是在左上角還是右下角,因此在進(jìn)行手眼標(biāo)定時(shí)可以使用非對(duì)稱的棋盤格。
? ? ? ? 通過(guò)上面的推導(dǎo),我們已經(jīng)可以計(jì)算出棋盤格角點(diǎn)在機(jī)器人基座坐標(biāo)系中的坐標(biāo)?,然后根據(jù)張正友標(biāo)定法得到棋盤格在相機(jī)坐標(biāo)系中的坐標(biāo)?。那么根據(jù) 第3.1節(jié)?中介紹的計(jì)算方法就可以得到相機(jī)到機(jī)器人的轉(zhuǎn)換矩陣:
3.3? 相機(jī)在機(jī)械手上(eye in hand)
3.3.1? 待求量
? ? ? ? 相機(jī)安裝在機(jī)械手上,隨著機(jī)械手一起移動(dòng)。對(duì)于 Eye-in-Hand 而言,相機(jī)坐標(biāo)系相對(duì)于機(jī)械手末端夾具坐標(biāo)系是固定的,而對(duì)于機(jī)械手基礎(chǔ)坐標(biāo)系是變化的。
? ? ? ? 當(dāng)相機(jī)固定于機(jī)械手末端夾具時(shí),此時(shí)相機(jī)坐標(biāo)系與機(jī)械手末端夾具坐標(biāo)系的變換關(guān)系固定,而與基座坐標(biāo)系的變換關(guān)系會(huì)時(shí)刻變化,因此此時(shí)的待求量變成了相機(jī)坐標(biāo)系(camera)到機(jī)械手末端載具坐標(biāo)系(tool)的變換矩陣?。
3.3.2? 轉(zhuǎn)換關(guān)系推導(dǎo)
????????根據(jù)各個(gè)坐標(biāo)系的關(guān)系,我們可以給出下述的坐標(biāo)變換方程:
? ? ? ? 上式中??代表固定在某個(gè)位置上的棋盤格中的角點(diǎn),在機(jī)器人基座坐標(biāo)系下的坐標(biāo)。可以通過(guò)兩種方式計(jì)算這個(gè)坐標(biāo):
? ? ? ? 1)在機(jī)械手末端的夾具上加上探針,直接由末端去觸碰棋盤格上的點(diǎn),根據(jù)機(jī)器人正向運(yùn)動(dòng)學(xué)得到的末端夾具到基座坐標(biāo)系的轉(zhuǎn)換矩陣??及棋盤格角點(diǎn)到末端坐標(biāo)系的坐標(biāo)?,我們可以得到固定的棋盤格角點(diǎn)在機(jī)器人基座坐標(biāo)系下的坐標(biāo)??。
? ? ? ? 2)在機(jī)械手末端的夾具上安裝相機(jī),由相機(jī)去直接測(cè)量棋盤格角點(diǎn)機(jī)器對(duì)應(yīng)的坐標(biāo)?,通過(guò)計(jì)算機(jī)器手末端夾具到基座坐標(biāo)系的轉(zhuǎn)換矩陣??和相機(jī)坐標(biāo)系到機(jī)器人末端坐標(biāo)系的轉(zhuǎn)換矩陣?,便可以求出棋盤格在機(jī)器人基座坐標(biāo)系下的坐標(biāo)?。
? ? ? ? 在第二種方式中,相機(jī)坐標(biāo)系到機(jī)器人末端坐標(biāo)系的轉(zhuǎn)換矩陣??是我們的待求量,因此我們需要對(duì)開始時(shí)描述的坐標(biāo)變換方程進(jìn)行簡(jiǎn)單的變換:
? ? ? ? 在上式中,坐標(biāo)的三個(gè)變量都是已知量,由此我們可以計(jì)算出相機(jī)到機(jī)器人末端坐標(biāo)系的轉(zhuǎn)換矩陣?。
3.4? 小結(jié)
? ? ? ? 本部分所探討的標(biāo)定方法其實(shí)是最直接的方式,即盡量測(cè)量出同一組點(diǎn)在不同坐標(biāo)系下的坐標(biāo),從而直接可以通過(guò)偽逆矩陣的方式計(jì)算出坐標(biāo)變換矩陣。當(dāng)然,還有更加具有普適性的方法,在不滿足上述條件下的情況也可以標(biāo)定出矩陣,也就是經(jīng)典的??問(wèn)題的求解,其中?,已知,為待求量。這種方法將在下章進(jìn)行討論。
4???問(wèn)題推導(dǎo)
4.1? 轉(zhuǎn)換關(guān)系推導(dǎo)(以Eye-in-Hand為例)
? ? ? ? 首先,我們控制機(jī)械手從初始位置移動(dòng)至位置 1 ,我們可以獲取此時(shí)的機(jī)械臂基座坐標(biāo),夾具坐標(biāo),相機(jī)坐標(biāo)以及標(biāo)定板坐標(biāo):
? ? ? ? 對(duì)上面的三個(gè)公式進(jìn)行聯(lián)立,我們可以得出:
? ? ? ? 同理,將機(jī)械手移動(dòng)到位置 2 時(shí),可以得出:
? ? ? ? 在 Eye-in-Hand 問(wèn)題中,機(jī)械臂基座與標(biāo)定板之間的關(guān)系是固定的,所以可得:
? ? ? ? 在 Eye-in-Hand 問(wèn)題中,待求量為機(jī)械臂末端夾具坐標(biāo)系到相機(jī)坐標(biāo)系的轉(zhuǎn)換關(guān)系,我們不妨記:
? ? ? ? 因此,上面的推導(dǎo)公式可以寫做:
? ? ? ? 令
? ? ? ? 則上面的推導(dǎo)公式又可以簡(jiǎn)寫為:
? ? ? ? 至此,我們可以將手眼標(biāo)定問(wèn)題歸結(jié)為對(duì)上述公式中??的求解問(wèn)題。其中,?可以通過(guò)機(jī)器人正向運(yùn)動(dòng)學(xué)獲得,?可以通過(guò)相機(jī)標(biāo)定獲得。
4.2? 求解?
? ? ? ? 求解??問(wèn)題的方式有很多種,包括但不限于:利用李群理論,轉(zhuǎn)化為最小二乘問(wèn)題和采用時(shí)對(duì)偶四元數(shù)的知識(shí),進(jìn)行統(tǒng)一計(jì)算。下面主要介紹使用李群李代數(shù)求解的方法。
? ? ? ? 李代數(shù)到李群的轉(zhuǎn)換滿足指數(shù)映射關(guān)系,假設(shè)??,而??,則其指數(shù)映射滿足羅德里格斯公式:
? ? ? ? 其中??,需要注意的是,正常的指數(shù)映射不是這種形式。
? ? ? ? 將??寫成矩陣形式為:
? ? ? ? 展開上述矩陣可得:
? ? ? ? 對(duì)于上述方程我們可以采用兩步法進(jìn)行求解,即先解算旋轉(zhuǎn)矩陣,再求解平移向量。
4.2.1? 求解旋轉(zhuǎn)矩陣
? ? ? ? 假設(shè)?,這里的矩陣都是旋轉(zhuǎn)矩陣(SO(3)),而非變換矩陣(SE(3))。
? ? ? ? 通過(guò)變換可得:
? ? ? ? 方程兩邊取對(duì)數(shù)可得:
? ? ? ? 令:
? ? ? ? 則上式可化為:
? ? ? ? 從而可化為:
? ? ? ? 當(dāng)存在多組觀測(cè)值時(shí),求解該方程可以轉(zhuǎn)化為下面最小二乘擬合問(wèn)題:
? ? ? ? 顯然,上述問(wèn)題是典型的絕對(duì)定向問(wèn)題,因而求解上式與絕對(duì)定向相同,其解為:
? ? ? ? 其中,
? ? ? ? 上式僅在??不奇異時(shí)可以進(jìn)行求解,當(dāng)只有兩組?,?時(shí),不能使用上述方法進(jìn)行求解。
? ? ? ? 當(dāng)只有兩組?,?時(shí),即存在? 時(shí):
? ? ? ? 其中:
? ? ? ? 綜上所述,可以計(jì)算出旋轉(zhuǎn)矩陣。
4.2.2? 求解平移向量
? ? ? ? 已知:
? ? ? ? 通過(guò)移項(xiàng)化簡(jiǎn)可得:
? ? ? ? 不妨寫作:
? ? ? ? 又因?yàn)??不一定可逆,因此在等式兩邊同時(shí)乘以?,即:
? ? ? ? 由此可知:
? ? ? ? 當(dāng)存在多組數(shù)據(jù)時(shí):
? ? ? ? 即可求得??。
4.3? 小結(jié)
? ? ? ? 通過(guò)解決??問(wèn)題進(jìn)行手眼標(biāo)定的方法,其步驟大致如下:
? ? ? ? 1)當(dāng)機(jī)器人靜止在 位置1 時(shí),進(jìn)行攝像機(jī)標(biāo)定,獲得此時(shí)的外參矩陣?;
? ? ? ? 2)控制機(jī)器人移動(dòng)至 位置2 ,獲取此時(shí)的機(jī)器人正向運(yùn)動(dòng)矩陣?;
? ? ? ? 3)當(dāng)機(jī)器人靜止在 位置2?時(shí),進(jìn)行攝像機(jī)標(biāo)定,獲得此時(shí)的外參矩陣?;
? ? ? ? 4)控制機(jī)器人移動(dòng)至 位置3?,獲取此時(shí)的機(jī)器人正向運(yùn)動(dòng)矩陣?;
? ? ? ? 5)當(dāng)機(jī)器人靜止在 位置3?時(shí),進(jìn)行攝像機(jī)標(biāo)定,獲得此時(shí)的外參矩陣?;
……測(cè)量多組數(shù)據(jù)……
? ? ? ? n)根據(jù)測(cè)量得到的數(shù)據(jù),求解?。
5? 評(píng)價(jià)手眼標(biāo)定效果
? ? ? ? 通過(guò)測(cè)量幾組不同位置的目標(biāo)點(diǎn),我們可以比較:
????????測(cè)量值:
? ? ? ? 和預(yù)測(cè)值:?
? ? ? ? 之間的距離誤差:
? ? ? ? 通過(guò)計(jì)算各個(gè)點(diǎn)的誤差的均值和標(biāo)準(zhǔn)差,最終我們可以計(jì)算出標(biāo)定結(jié)果的系統(tǒng)誤差(均值)和隨機(jī)誤差(標(biāo)準(zhǔn)差)。
總結(jié)
以上是生活随笔為你收集整理的标定学习笔记(四)-- 手眼标定详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 音频编辑软件有哪些?推荐几款简单的音频编
- 下一篇: html学习
