我正在使用(新发布的)ArUco 2.0.7来跟踪一些标记。我正在使用的相机面朝下安装在天花板上,所以我只需要 x 和 y 坐标。它可以看到2.6米乘1.5米的区域。如果我正确理解了文档,我以任意单位提供我正在使用的标记的边长,姿势的输出将在同一单位中。因此,标记的边长为19.5厘米。由于我希望的结果以米为单位,因此将该值设置为 0.195。
但是,我得到的结果不正确。如果我将标记放在相机视野的角落,它们不在相应的预期 x 和 y 坐标处。
我将全局原点放在视野的一个角上,例如 (0,0) 是左下角。这是通过使用getRTMatrix()获得的矩阵变换将所有传入位置转换为该标记坐标系来完成的。一切似乎都在工作,除了 x 和 y 坐标的单位错误或缩放。旋转效果很好。
我错过了什么吗?或者我不能指望一个好的准确性?误差很大,例如当它应该是(2.6,1.5)时,它显示为(1.8,1),大约是33%的误差。
经过一番思考,我发现我的相机只是使用比我的用例所需的更小的距离来校准我的相机。这导致失真系数错误,从而给了我一个虚假的尺度。我使用aruco_calibration工具重新校准,现在精确到大约 3 或 4 厘米,这对我来说已经足够了。