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



    • 0_1534487265541_1.png
      程序错误代码为list index out of range
      但是输出的tag列表没有超范围,求助



    • 请把报错提示和代码一起截图



    • 一个提问,一个帖子,标题为问题的介绍
      请贴出具体的代码,与报错提示。
      代码一定要让别人可以运行的文本,不要贴图片



    • @yuan

      
      

      Blob Detection Example

      This example shows off how to use the find_blobs function to find color

      blobs in the image. This example in particular looks for dark green objects.

      import sensor, image, time
      import car
      from pid import PID

      You may need to tweak the above settings for tracking green things...

      Select an area in the Framebuffer to copy the color settings.

      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA) # we run out of memory if the resolution is much bigger...
      sensor.skip_frames(30)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      sensor.set_auto_whitebal(False) # turn this off.
      clock = time.clock() # Tracks FPS.

      For color tracking to work really well you should ideally be in a very, very,

      very, controlled enviroment where the lighting is constant...

      f_x = (2.8 / 3.984) * 160 # 默认值
      f_y = (2.8 / 2.952) * 120 # 默认值
      c_x = 160 * 0.5 # 默认值(image.w * 0.5)
      c_y = 120 * 0.5 # 默认值(image.h * 0.5)

      translation=-6
      x_pid = PID(p=0.005, i=1, imax=100)
      h_pid = PID(p=0.005, i=0.1, imax=50)

      def find_tag(tags):
      size=0
      for apriltag in tags:
      print(apriltag)
      if apriltag[2]*apriltag[3] > size:
      tag=apriltag
      size = apriltag[2]*apriltag[3]
      return tag

      while(True):
      clock.tick() # Track elapsed milliseconds between snapshots().
      img = sensor.snapshot() # Take a picture and return the image.

      tags = img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y) # 默认为TAG36H11
      #print(tags)
      
      if tags:
          tag = find_tag(tags)
          #print(tag)        
          tag_id=tag[4]
          if (tag_id==2):
              print(tag[6])
              x_error = tag[6]-img.width()/2
              h_error = (tag[14]-translation)*200
              #print(tag[14])
              #print(h_error)
              #print("x error: ", x_error)
              '''
              for b in blobs:
                  # Draw a rect around the blob.
                  img.draw_rectangle(b[0:4]) # rect
                  img.draw_cross(b[5], b[6]) # cx, cy
              '''
              img.draw_rectangle(tag[0:4], color = (255, 0, 0))
              img.draw_cross(tag[6], tag[7], color = (0, 255, 0))
              x_output=x_pid.get_pid(x_error,1)
              h_output=h_pid.get_pid(h_error,1)
              print("x_output",x_output)
              print("h_output",h_output)
              car.run(-h_output-x_output,-h_output+x_output)
      
      else:
          car.run(0,0)
      
      
      


    • 请截报错的图。因为报错是提示你具体哪行错的。



    • 这个算是基本能实现跟踪apriltag标签了,但是我想要的是通过云台来搜索标签在来控制小车的运动,请问这个可以实现吗



    • 可以实现,但云台和小车不能直接都接到同一个OpenMV上,引脚冲突。你要考虑自己加主控串口通信。