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