• 手眼标定(二)


    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
     
     
     
     
  • 相关阅读:
    CodeForces 834C
    HDU 6048
    HDU 6052
    HDU 6036
    HDU 6042
    HDU 2614 Beat(DFS)
    UESTC 1272 Final Pan's prime numbers(乱搞)
    HDU 2064 汉诺塔III(递归)
    HDU 2102 A计划(DFS)
    HDU 1069 I Think I Need a Houseboat(模拟)
  • 原文地址:https://www.cnblogs.com/BambooEatPanda/p/9774156.html
Copyright © 2020-2023  润新知