• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 为何修改一个方向的距离会导致另外两个方向上值错误



    • 修改Z方向的距离后,即向后拉动镜头,X方向不动,openmv测出的x方向距离会发生了改变,测量环境如下图:
      0_1542290065495_微信图片_20181115164816.jpg
      测试代码如下:

      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方向上测距误差增大



    • @ulf1 补充测试,在Z方向550mm处标定参数,然后在Z方向上移动镜头进行测试,测试数据如下
      0_1542332762755_68ab12ce-e1ad-47be-96be-a56195cd0696-image.png



    • xy轴的单位,和z轴的单位,是不相关的,因为AprilTag的尺寸不一样。

      你的测试数据,我没看懂。



    • @kidswong999 既然X,Y和Z方向是不相关的,为什么我移动Z方向,X测量的值会改变?没有在X方向上有位移啊



    • 我严重怀疑你的OpenMV固定的角度有问题。



    • @kidswong999 什么都怪到角度上就没法讨论了,我在X方向上进行了平移,Z方向上的距离是不会发生改变的,难道只有移动Z方向会产生角度问题?



    • 理论上不会出现这种情况,但是我们的实验环境不一样。我没办法得到你的数据,我没有办法帮助你。

      我建议你,在不同的距离,找到一系列tx = 0, ty = 0的点,标注出来,画出拟合直线。然后看是否与OpenMV垂直。注意OpenMV要固定。



    • @kidswong999 这个操作步骤是标定的过程,之后测距不需要对角度要求的这么高,还是说每次测距都要严格保证镜头和TAG之间的角度?如果要保证镜头的角度,那可接受的误差是多少?我现在就算角度有问题也不会超过2°。
      实际操作中,我不可能是定死镜头,用TAG去找镜头吧,如果要移动镜头,无法确保不出现误差



    • 如果是新的问题,请单独提问。

      这个问题,我认为就是安装精度的问题,否则不会出现这种情况。



    • @kidswong999 明白了,就是对角度有严格的要求,在实际测距上,不能移动openmv对吧