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