我是
靠谱客的博主
迅速树叶,最近开发中收集的这篇文章主要介绍
手眼标定(二),觉得挺不错的,现在分享给大家,希望可以做个参考。
- 启动kinnect驱动
roslaunch easy_handeye kinect2.launch
- 启动对Marker标定板的检测,并广播转换关系(/base->/camera_marker)
roslaunch aruco_gridboard detection_verp.launch
- 从话题中获取转换关系的信息(/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的变化是不一样的,误差校验程序写出来误差一直很大。
这里面包括,计算位置转换的代码,发布话题的代码,计算旋转的误差都是可以重用的,值得看看。
- 获取到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轴上的偏移,算出误差。
发表评论 取消回复