@kidswong999 怎么安装保证安装精度呢?
ulf1 发布的帖子
-
在实际应用中使用Apriltag测距是移动openmv还是移动tag?哪一种的误差小一些?
在实际应用中使用Apriltag测距是移动openmv还是移动tag?哪一种的误差小一些?
-
OPENMV测距镜头不能移动吗?
使用APRILTAG测距,openmv不能移动吗?如何保证正确的安装openmv,使其测量精确,还是说在测量的时候,其实移动的是apriltag
-
RE: AprilTag数据有误差
@kidswong999 上面的图是通过移动TAG标签找到的,还是通过测量确定镜头所在平面垂直方向确定的呢?如果是通过移动TAG找到的,那我也可以找到中心位置啊
-
RE: 为何修改一个方向的距离会导致另外两个方向上值错误
@kidswong999 这个操作步骤是标定的过程,之后测距不需要对角度要求的这么高,还是说每次测距都要严格保证镜头和TAG之间的角度?如果要保证镜头的角度,那可接受的误差是多少?我现在就算角度有问题也不会超过2°。
实际操作中,我不可能是定死镜头,用TAG去找镜头吧,如果要移动镜头,无法确保不出现误差 -
RE: AprilTag数据有误差
@kidswong999 是啊,tag的物理地址和图像的中点不匹配,OpenMV固定的没有角度,你的意思是偏差不是由openmv自身的误差引起的?它的呈像的中点就是与镜头平面垂直的正前方?
-
RE: 为何修改一个方向的距离会导致另外两个方向上值错误
@kidswong999 什么都怪到角度上就没法讨论了,我在X方向上进行了平移,Z方向上的距离是不会发生改变的,难道只有移动Z方向会产生角度问题?
-
RE: 为何修改一个方向的距离会导致另外两个方向上值错误
@kidswong999 既然X,Y和Z方向是不相关的,为什么我移动Z方向,X测量的值会改变?没有在X方向上有位移啊
-
RE: AprilTag数据有误差
@kidswong999
上图为实际中点和物理中点的距离,43.39mm
上图为在实际中点看到的图像,输出为Tx: 0.023331, Ty 2.183013, Tz -7.473572, Rx 179.000053, Ry 1.866622, Rz 270.264244 -
为何修改一个方向的距离会导致另外两个方向上值错误
修改Z方向的距离后,即向后拉动镜头,X方向不动,openmv测出的x方向距离会发生了改变,测量环境如下图:
测试代码如下:import sensor, image, time, math sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.VGA) # we run out of memory if the resolution is much bigger... sensor.set_windowing((160, 120)) # Look at center 160x120 pixels of the VGA resolution. sensor.skip_frames(time = 2000) sensor.set_auto_gain(False) # must turn this off to prevent image washout... sensor.set_auto_whitebal(False) # must turn this off to prevent image washout... clock = time.clock() # 注意!与find_qrcodes不同,find_apriltags方法不需要对镜像进行镜头校正。 #标签系列有什么区别? 那么,例如,TAG16H5家族实际上是一个4x4的方形标签。 #所以,这意味着可以看到比6x6的TAG36H11标签更长的距离。 然而,较低的H值(H5对H11) #意味着4x4标签的假阳性率远高于6x6标签。 所以,除非你有理由使用其他标签系列, #否则使用默认族TAG36H11。 def degrees(radians): return (180 * radians) / math.pi while(True): clock.tick() img = sensor.snapshot() for tag in img.find_apriltags(): # defaults to TAG36H11 img.draw_rectangle(tag.rect(), color = (255, 0, 0)) img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) print_args = (tag.x_translation(), tag.y_translation(), tag.z_translation(), \ degrees(tag.x_rotation()), degrees(tag.y_rotation()), degrees(tag.z_rotation())) # 位置的单位是未知的,旋转的单位是角度 print("Tx: %f, Ty %f, Tz %f, Rx %f, Ry %f, Rz %f" % print_args) print(clock.fps())
向后拉动镜头,会导致X方向上测距误差增大
-
RE: AprilTag数据有误差
@kidswong999 好的,我明天补发一下照片,还有一个问题,为何改变Z方向的距离,如拉远镜头,X方向的K值会发生改变?通过之前确定的Kx计算的距离不再准确
-
RE: AprilTag数据有误差
@kidswong999 使用了仪器绘制的平行线,角度上的误差不会超过1°,镜头和TAG中点在一条直线只需要用一个够长的直角尺就可以保证了
-
RE: AprilTag数据有误差
@kidswong999 移动一下位置是可以的,主要问题是为什么会出现和物理位置不匹配的问题?我已经确认镜头和图像水平中点在一条直线上,镜头和TAG也是平行的,图像结果和物理位置不统一是什么原因呢?