手在眼上出现问题,标定了很多次,结果都在roll和yaw两个角度上面出问题,同步相差角度,机械臂的角度旋转方式是ZYZ,已经验证过角度转换没有问题,使用的opencv的棋盘格标定,借鉴了https://github.com/ZiqiChai/simplified_eye_hand_calibration%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E5%A4%A7%E7%A5%9E%E4%BB%AC%EF%BC%8C%E6%9C%89%E8%A7%A3%E5%86%B3%E8%BF%99%E4%B8%AA%E9%97%AE%E9%A2%98%E7%9A%84%E6%80%9D%E8%B7%AF%E5%90%97%EF%BC%9F
关于#opencv#的问题:标定了很多次,结果都在roll和yaw两个角度上面出问题,机械臂的角度旋转方式是ZYZ,已经验证过角度转换没有问题,使用的opencv的棋盘格标定
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
阿里嘎多学长 2025-03-03 15:00关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
解答
你遇到的问题是,使用 OpenCV 的棋盘格标定,机械臂的角度旋转方式是 ZYZ,标定结果在 roll 和 yaw 两个角度上出现问题。
可能的原因是:
- 棋盘格标定时,棋盘格的角度不准确,导致标定结果不准确。
- 机械臂的角度旋转方式 ZYZ 可能会导致 roll 和 yaw 角度的偏移。
- OpenCV 的棋盘格标定算法可能存在一些误差。
解决方案:
- 验证棋盘格的角度是否准确,可以使用其他方法来测量棋盘格的角度。
- 尝试使用其他的角度旋转方式,例如 XYZ 或 YZX。
- 调整 OpenCV 的棋盘格标定算法的参数,例如使用
cv::aruco::Dictionary::MARKER_6X6等。 - 使用其他的计算机视觉库,例如 PCL 或 Open3D,来实现棋盘格标定。
核心代码:
#include <opencv2/aruco.hpp> // ... cv::aruco::Dictionary dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_6X6_250); cv::aruco::detectMarkers(img, dictionary, corners, ids); cv::aruco::estimatePoseSingleMarkers(corners, markerSize, cameraMatrix, distCoeffs);注意:上述代码只是一个示例,需要根据实际情况进行修改。
解决 无用评论 打赏 举报