最近在學習手眼標定,做下筆記,和大家分享下學習經歷:
首先講一下在工業應用中,手和眼(攝像機)的兩種位置關係,第一種是將攝像機(眼)固定在機械手(手)上面,眼隨手移動;第二種是攝像機(眼)和機械手(手)分離,眼的位置相對於手是固定的,下面用網上的兩張圖來說明下:
第一種情況:相機移動
第二種情況:相機固定
從上面兩副示意圖可以看出,第一種情況中我們要求的是相機座標系和機械手座標系的轉化關係;第二種情況中要求的是相機座標系和基礎座標系的關係;下面分別闡述其求解過程。
在推導過程中,我們會用到四個座標系,分別是基礎座標系,機械手座標系,相機座標系,以及標定物座標系,下面先給出示意圖:
座標系示意圖
其中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...