技術文章
如何練好手眼協(xié)調(diào)能力
閱讀:1912 發(fā)布時間:2019-6-3嬰幼兒在幾個月到1周歲之間,,會通過玩一些簡單的玩具,,逐漸鍛煉出手眼協(xié)調(diào)能力,。在機器人領域,,則需要我們賦予其手眼協(xié)調(diào)能力,這個過程,,一般稱為“手眼標定”,。機器人只有擁有手眼協(xié)調(diào)能力,才能完成復雜的工作,,真正稱之為“智能”,。
當嬰幼兒看到物體時,首先通過眼睛獲取信息,,傳輸?shù)酱竽X進行理解,,終通過手來操作完成玩具的抓取,、放置。手,、眼,、腦協(xié)同是人類和少數(shù)動物的一項特殊技能,通過經(jīng)常玩一些簡單的益智玩具,,可以逐漸鍛煉增強孩子的手眼協(xié)調(diào)能力,,同時可以作用到大腦,促進孩子的智力發(fā)育,。
商家們也看到了這塊領域,,設計出很多益智玩具和游戲,如圖1中所示,。孩子需要把玩具抓起并放入車里,。孩子的空間思維能力、協(xié)調(diào)能力在游戲中得到了鍛煉,。
圖1
在智能機器人領域,,機器人需要完成、復雜的工作,,否則無法稱之為“智能”,。然而,機器人要想獲得同人類一樣的協(xié)調(diào)能力并不容易,。如何才能實現(xiàn)像人一樣的手眼協(xié)同能力呢,?
再回到這個游戲。孩子在玩玩具時,,大腦中有一個坐標系,,可看做是基礎坐標系;靈活的手在運動中形成一個軌跡,,稱之為手的坐標系,;玩具要放置的點又有一個目標坐標系。三個坐標系協(xié)同,,游戲才能順利地玩下去,。如果為此游戲場景加入坐標,會是這個樣子,,如圖2所示,。
圖2
智能機器人領域,四軸,、六軸,、并聯(lián)等機械臂可認為是機器人的手臂(雖然自由度較高、速度快,但相比人手的靈活性還遠遠不如),。機器人的眼睛,,一般指攝像機(包括2D和3D)。目前智能機器人的主流是使用3D視覺相機,。機器人的大腦一般指進行核心控制和計算的工控機或嵌入式芯片,。
一般而言,機器人的“手眼協(xié)調(diào)”需要一個“手眼標定”(Hand-eye calibration)的過程,。手眼標定是機器人領域的一個經(jīng)典的問題,,其核心是計算出相機坐標系在機器人坐標系下的轉(zhuǎn)移矩陣。轉(zhuǎn)移矩陣是4×4的矩陣,,一般用齊次坐標表示,。其中重要的兩個分量是旋轉(zhuǎn)矩陣R和平移矢量t,分別表示旋轉(zhuǎn)分量和平移分量,。得到轉(zhuǎn)移矩陣后,,可將相機下的坐標轉(zhuǎn)換到機械臂坐標系下,從而完成工作,。如圖3所示,。
圖3
兩個坐標系,如何建立關系,?這是手眼標定要解決的核心問題,。
手眼標定和核心是解決一個AX=XB的矩陣。解此矩陣的算法就是手眼標定算法,。
小藍( 杭州藍芯科技有限公司簡稱)公司依賴Eigen庫實現(xiàn)了經(jīng)典Tsai的方法并且開源,。
如何進行手眼標定
注意:以下涉及公式推導,,不想推數(shù)學公式的可跳過,。
理解手眼標定的核心是如何將機器人的手眼關系代入AX=XB的公式中。
首先要理解A,,B,,X分別代表什么含義。
X,,表示未知量,,即手眼標定的轉(zhuǎn)移矩陣。
A和B呢,?
先看機器人手眼分離的示意圖,。
圖4
圖4中,機器人底座一般認為是世界坐標系的原點,。攝像機(眼睛)識別的位置通過轉(zhuǎn)移矩陣,,可以轉(zhuǎn)換到機器人坐標系(同時也是世界坐標系)下。在手眼標定的過程中,需要連續(xù)移動機械臂終端,,采集一組末端執(zhí)行器的位姿,;與此同時,相機采集掛在末端執(zhí)行器的標記(例如,,棋盤格)的位姿,,組成另一組數(shù)據(jù)。
預警:下面是一些真正的數(shù)學推導,。
假設采集的數(shù)據(jù)有N對,,根據(jù)圖中的幾何關系,未知量有兩個,,分別是標記在末端執(zhí)行器下的位姿和相機在世界坐標系下的坐標
,。
其中是我們手眼標定的目標,
是多少我們并不關心,。
根據(jù)標記是空間中的位姿,,我們可以得到(兩邊都是標記的位姿)
觀察上面公式,未知,,是目標矩陣,,不變量;
已知,,是可以通過相機讀到的數(shù)據(jù),,變量;
已知,,是機械臂末端讀數(shù),,變量;
未知,,我們很不喜歡它,,不變量。
故此方程有兩個已知量,,兩個未知量,,一組數(shù)據(jù)不可解!
一組數(shù)據(jù)不行,,那就多來幾組吧,!
假設我們有兩組數(shù)據(jù),分別是第i組合第j組,,兩組坐標在公式里的括號內(nèi)表示,。
回想初中代數(shù),我們可以通過類似方程組的解法,,消去我們不喜歡的,。
有如下兩組方程,
聯(lián)立方程,消去,,終我們得到,,
至此,回想矩陣乘法的結(jié)合律,,我們驚喜的發(fā)現(xiàn),,方程的形式正是AX=XB!
其中A和B分別已知,,什么,?A和B是什么?自己觀察一下,!
數(shù)學推導結(jié)束,。
小朋友們,不對,,工程師們,,可以用此數(shù)據(jù)帶入標準算法計算了!
一般來說,,采集的數(shù)據(jù)越多,,標定的結(jié)果越準確。采集時,,為防止陷入局部陷阱,,需盡可能多的采集機器人姿態(tài),同時,,要保證標記在機械臂末端位姿固定,,相機和機械臂的相對位姿也要保持固定。
有人說,,不對,,我用的相機不是這樣裝的。我把相機裝在了機械臂上,,同其一起移動,,可以用這種方法嗎,?
答案當然是可以,。
這涉及到手眼協(xié)同機器人的兩種模式,分別是eye-in-hand和eye-to-hand,。剛剛我們一直研究的是eye-to-hand的模式,。對于eye-in-hand模式,可以采用類似方法,,消去我們不喜歡的中間變量,,終歸結(jié)到AX=XB的形式,就可以解了。
兩種模式在公開的源碼中都可以找到,。
總結(jié)
1,、孩子的手眼協(xié)調(diào)能力會在游戲中得到鍛煉,只要給玩具讓她/他玩,,基因會逐漸教會她/他靈活的手眼協(xié)同能力,。
2、智能機器人的手眼協(xié)調(diào),,需要工程師們的認真調(diào)教,!一般來說,數(shù)據(jù)越多,,誤差越小,。手眼協(xié)調(diào)能力,是機器人完成分揀,、抓取,、放貨工作的前提。
圖5 手眼協(xié)調(diào)揀貨
本文屬于純原創(chuàng)文章,,轉(zhuǎn)載請注明杭州藍芯科技有限公司