紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
眼在手上输出应该是机械臂末端end_link与相机camera之间的位姿关系,为什么结果显示是end_link->marker
-
博主您好,非常感谢您发布的手眼标定功能包和教程,已按照您的教程将handeye-calib功能包配置成功,并用base_hand_on_eye_calib.launch完成标定,但有以下疑问想要请教一下,以下是经过17组数据标定的结果。
一、眼在手上输出应该是机械臂末端end_link与相机camera之间的位姿关系,为什么结果显示是end_link->marker?
二、为何算法之间结果差距如此之大?
三、相机中标定板位姿orientation(x,y,z,w)转RX,RY,RZ,下列代码正确吗?import math def quaternion_to_euler(x, y, z, w): # Roll (RX) roll = math.atan2(2*(w*x + y*z), 1 - 2*(x**2 + y**2)) # Pitch (RY) pitch = math.asin(2*(w*y - z*x)) # Yaw (RZ) yaw = math.atan2(2*(w*z + x*y), 1 - 2*(y**2 + z**2)) # Convert angles from radians to degrees roll_deg = math.degrees(roll) pitch_deg = math.degrees(pitch) yaw_deg = math.degrees(yaw) return roll_deg, pitch_deg, yaw_deg # Example usage x = 0.9771264496922119 y = 0.04967186030182394 z = 0.021577803717608448 w = -0.20564777166984738 roll, pitch, yaw = quaternion_to_euler(x, y, z, w) print("Roll (RX):", roll) print("Pitch (RY):", pitch) print("Yaw (RZ):", yaw)
-
- 结果是末端到相机,应该是本人写错了
- 数据不准确一般是输入数据误差较大引起,请确保前置步骤的精度
- 姿态转换建议使用python库transforms3d ,我的其他文章有介绍https://blog.csdn.net/qq_27865227/article/details/124296609
-
@小鱼 非常感谢您的回答!
我发现一个错误,我在单独运行博主的手眼标定算法Tsai-Lenz代码时,与功能包中执行出来的结果完全不一致,问题是否出在base_hand_on_eye_calib.py文件中的第61行eye_on_hand=False。我将其已改为True,结果一致。
如果发现错误请您谅解,万分感谢! -
@2471466786 需要注意的是,眼在手上和手外用的其实是同一套算法,只不过最后采用的数据不一样,原理相同。
-
@小鱼 非常感谢您的回答!
我依旧有疑问,两种安装方式采用同一套算法,只和采用的数据有关,那为何将功能包中base_hand_on_eye_calib.py文件的eye_on_hand=False改成True,结果会出现如此大的差异?
我是否可以认为如果采用功能包的话,依旧要注意eye_on_hand=False(True)的修改。 -
@2471466786 这里是需要注意的,因为最后喂数据的方式不太一样