0

我正在尝试使用 ARUCO 板来协助室内机器人导航,并且当板最正对相机时,我在姿态估计 Z 轴闪烁方面遇到了问题。请在此处查看问题 - 观察蓝轴在面对相机时如何来回闪烁,但在其他角度更稳定:

https://drive.google.com/file/d/1l8uqKLbA9R4ij_kjPcYeGPUObR_sHkGn/view?usp=sharing

在我的导航范例中,我假设板上最好的位置锁定是从死前开始,但在我目前的设置下这似乎是最差的。

  • 该视频已开启亚像素角细化。
  • 各个标记的姿势与棋盘分开估计,因此我们可以看到问题出现在各个标记上,而不仅仅是棋盘本身。
  • 蓝轴不稳定性始终是水平的,即使我将标记旋转 90 度,在水平方向上仍然会发生抖动 - 在 0 上下倾斜时不会发生这种抖动,只有左右倾斜。
  • 我将 rvec 和 tvec 直接从检测传递到 opencv 以绘制标记,如下所示:

认为我增加了不稳定性还是已经存在?

这只是... aruco 代码/板的外观如何?还是我的电路板设计有问题,还是其他什么?很想听听那些对自己的抖动(或稳定性)有一定经验的人的意见,谢谢!

4

2 回答 2

0

它更多的是 CV 领域特定的问题,而不是编码问题。不过,为了您的兴趣,我会回答这个问题。

为了使结果更精确,您需要通过以下方式增强系统:

1.相机校准

我认为您的相机焦距很小,因此会有些失真。该算法使用形状失真来计算标记的姿势,因此您的相机失真会极大地影响精度。

2.刚性标记

记号笔印在非常柔软的 A4 纸上。出于同样的原因,这会影响姿势推断的精度。将记号笔打印在硬纸板上,或将打印好的记号笔贴在硬纸板上,也可以将记号笔放在桌子上,移动相机进行测试。

3. 更高的分辨率和更好的光照条件

我不确定上传时视频是否被压缩,但显然更高的分辨率会导致更高的精度。上传的视频光线和分辨率都很差。

您的计算机和算法似乎运行良好,因为帧速率非常好。我认为主要问题是您的实验设置。

The blue axis instability is always horizontal, even if I turn the marker 90 degrees, the jitter still happens accross the horizontal - no such jitter occurs when tilting across 0 going up and down, only left and right.

抖动来自标记的细微变形,当标记垂直于相机主轴时,标记的投影更接近方形,当标记为'90度时,'蓝轴'对形状失真的导数更大'。因此,它对那些扭曲更敏感。这就是为什么蓝轴在定位时抖动更严重的原因90 degree

这里有一些可用的成功测试。 一个一个

于 2021-02-20T07:11:29.730 回答
0

问题很可能应该是坏的相机参数。你校准过它并检查过它的质量吗?如果校准不准确,亚像素稳定性和高质量目标对您没有多大帮助。

只是为了完整起见(我知道您已经通过它们)OpenCV 在其文档和教程中描述了如何以视觉和数字方式检查您的校准

https://docs.opencv.org/3.4/d4/d94/tutorial_camera_calibration.html https://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html

于 2021-02-21T08:52:53.357 回答