手眼標定的兩種方式

2021-08-15 00:27:20 字數 1811 閱讀 6682

最近在學習手眼標定,做下筆記,和大家分享下學習經歷:

首先講一下在工業應用中,手和眼(攝像機)的兩種位置關係,第一種是將攝像機(眼)固定在機械手(手)上面,眼隨手移動;第二種是攝像機(眼)和機械手(手)分離,眼的位置相對於手是固定的,下面用網上的兩張圖來說明下:

第一種情況:相機移動

第二種情況:相機固定

從上面兩副示意圖可以看出,第一種情況中我們要求的是相機座標系和機械手座標系的轉化關係;第二種情況中要求的是相機座標系和基礎座標系的關係;下面分別闡述其求解過程。

在推導過程中,我們會用到四個座標系,分別是基礎座標系,機械手座標系,相機座標系,以及標定物座標系,下面先給出示意圖:

座標系示意圖

其中basehcal表示基礎座標系到標定物座標系的轉化關係,包括旋轉矩陣和平移向量;camhtool表示相機座標系到機械手座標系的轉化關係;這兩個轉化關係在機械手移動過程中是不變的;camhcal可以由相機標定求出;basehtool可以由機械人系統中得出。

接下來控制機器手從位置 1 移動到位置 2:

base = basehtool (1)* tool(1)

tool(1) = inv(camhtool)*cam(1)

cam(1) = camhcal(1)*obj

聯合上面三個公式:

base = basehtool (1)* inv(camhtool)* camhcal(1)*obj

移動到機械手臂到位置2後:

base = basehtool (2)* inv(camhtool)* camhcal(2)*obj

因為base和obj是固定的所以:

basehtool (1)* inv(camhtool)* camhcal(1)=basehtool (2)* inv(camhtool)* camhcal(2)

其中只有camhtool是未知量,具體求解過程將放在下篇文章。

座標系示意圖

對於固定相機的情況,還是控制機械手從位置1移動到位置2:

obj(1) = inv(camhcal(1)) *cam

cam = camhbase *base

base = basehtool(1) * tool(1)

合併上面三個公式:

obj(1) = inv(camhcal(1))  * camhbase* basehtool(1) *tool(1)

移動到位置2後:

obj(2) = inv(camhcal(2))  * camhbase* basehtool(2) *tool(2)

因為obj和tool的相對位置是不變的,所以不管怎麼移動:

inv(camhcal(1))  * camhbase* basehtool(1)= inv(camhcal(2))  * camhbase* basehtool(2)

其中變數只有camhbase,也就是我們要求的。

**手眼標定的兩種方式

手眼標定的理解附9點標定

什麼是手眼標定?確定畫素座標系和空間機械手座標系的座標轉化關係 為什麼需要九點標定?為了得到機械和相機的關係,就好比人的手和眼的關係。我們用手將乙個物體放到空間的乙個位置,用眼看到這個物體,這也存在兩個座標系,乙個是手所在的運動空間的座標系,乙個是視網膜上成像的二維平面座標系。我們用眼看到乙個物體,...

C DLL匯出的兩種方式和鏈結的兩種方式

第一種 匯出方式 extern c declspec dllexport int plus int x,int y extern c declspec dllexport int sub int x,int y extern c declspec dllexport int mul int x,in...

兩種過載方式

過載的方式 用某次作業題中的實現complex類做例子 1 實現加法 1 complex complex operator const complex c 2 友元函式 complex operator const complex l,const complex r 2 實現 1 complex c...