手眼標定(二)


  1. 啟動kinnect驅動

 

roslaunch easy_handeye kinect2.launch

 

  1. 啟動對Marker標定板的檢測,並廣播轉換關系(/base->/camera_marker)

 

roslaunch aruco_gridboard detection_verp.launch

 

  1. 從話題中獲取轉換關系的信息(/base->/camera_marker)

 

rosrun tf_precision tf_listener

 

得到的信息里有:marker_to_camera pos:(0.411248,0.531724,-0.0522373)

 

后面的三個數字便是我們得到的maker在機器人坐標系下的pose.

 

上面三個其實可以放在一個package里,建議再復制創建一個aruco_gridboard的package。

 


 

tf_precision package 是我最開始寫的進行誤差測量的package。
 
在位置一 記錄 marker 和 gripper的相對與 機器人底座的位姿, 在位置二記錄maker 和 gripper的 相對於機器人底座的位姿, 計算在底座坐標系下,maker兩個位置的 R和T, gripper的R和T,比較這兩個R 和兩個T ,就能比較相機注冊的精確度,當時考慮的是剛體的位姿變化應該是相同的(marker和gripper的相對位置關系是不變的),但如果以gripper為中心轉動,其實marker和gripper的變化是不一樣的,誤差校驗程序寫出來誤差一直很大。
 
這里面包括,計算位置轉換的代碼,發布話題的代碼,計算旋轉的誤差都是可以重用的,值得看看。
 
 

 
  1. 獲取到pose后,讀入到pose_goto(參考pick_place package) package 的pick_and_place_pick.py

 

position=Point(x=0.385966, y=0.526913, -0.0845007+OFFSET)

 

注意:OFFSET在做精度測試的時候注意設置的大一些,防止針撞歪。

 

rosrun pose_goto pick_and_place_pick

 

這樣就可以直觀看精度大小了

 

 
 
 

1、相機獲取固定標定板(board_1)的頂點pose

 
2、將標定板(board_1)頂點坐標轉換為機器人基座坐標系下坐標,移動機器人手臂末端針到達該定點
 
3、獲取此時機械臂末端標定板(board_2)的坐標
 
4、將這個手臂端標定板(board_2)坐標P_test,與機器人手臂末端針准確指向標定板(board_1)定點時,手臂端標定板(board_2)坐標P_groudtruth,做比較,得出XYZ軸上的偏移,算出誤差。
 
 
X
Y
Z
P_groudtruth
0.198296
0.758359
-0.273707
P_test_1
0.192049
0.758319
-0.272161
P_test_2
0.194142
0.758159
-0.269117
P_test_3
0.193949
0.757703
-0.270348
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM