• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 如果我想识别比赛方提供的标签怎么办,有什么方法录入?



    • import sensor, image, time,math,pyb
      from pyb import Pin,Timer,UART
      import kinematics,robotMoveCmd

      class Apriltag():

      uart = UART(3,115200)   #设置串口波特率,与stm32一致
      uart.init(115200, bits=8, parity=None, stop=1 )
      
      tim = Timer(4, freq=1000) # Frequency in Hz
      led_dac = tim.channel(1, Timer.PWM, pin=Pin("P7"), pulse_width_percent=50)
      led_dac.pulse_width_percent(50)
      
      
      
      #机器人运动
      robot_move_cmd = robotMoveCmd.RobotMoveCmd()
      kinematic = kinematics.Kinematics()
      
      def init(self,cx=80.5,cy=60.5):#初始化巡线配置,传入两个参数调整中位值
          sensor.reset() #初始化摄像头
          sensor.set_pixformat(sensor.RGB565) #图像格式为 RGB565 灰度 GRAYSCALE
          sensor.set_framesize(sensor.QQVGA) #QQVGA: 160x120
          sensor.skip_frames(n=2000) #在更改设置后,跳过n张照片,等待感光元件变稳定
          sensor.set_auto_gain(True) #使用颜色识别时需要关闭自动自动增益
          sensor.set_auto_whitebal(True)#使用颜色识别时需要关闭自动自动白平衡
      
          self.uart.init(115200, bits=8, parity=None, stop=1 )
          self.led_dac.pulse_width_percent(50)
      
          self.place_block_ID=0#二维码ID
      
      
      
          self.mid_block_cx=cx
          self.mid_block_cy=cy
      
          self.mid_block_cnt=0#用来记录机械臂已对准物块计数,防止误差
      
          self.move_status=1#机械臂移动的方式
      
          #用来记录已经抓取到标签
          self.apriltag_succeed_flag=0
      
          self.place_succeed_flag=0
      
      
      
          self.block_degress=0#机械爪旋转角度
          #机械臂移动位置
          self.move_x=0
          self.move_y=160
      
      
      
          robot_move_cmd = robotMoveCmd.RobotMoveCmd()
          kinematic = kinematics.Kinematics()
      
          self.kinematic.send_str("{#000P1460T1500!}")
          time.sleep_ms(100)
          self.kinematic.send_str("{#001P1750T1500!}")
          time.sleep_ms(100)
          self.kinematic.send_str("{#002P1800T1500!}")
          time.sleep_ms(100)
          self.kinematic.send_str("{#003P500T1500!}")
      
          self.kinematic.send_str("{#005P500T1500!}")
          time.sleep_ms(100)
          self.kinematic.send_str("{#004P1500T1500!}")
          time.sleep_ms(2000)
      
      def flag_def(self):
          self.oled_show_flag1=1
          self.oled_show_flag2=1
          self.oled_show_flag3=1
          self.oled_show_flag4=1
      
      
      
      def run_sort(self):#分拣
          self.mid_cx=80.5
          self.mid_cy=60.5
      
          #物块中心点
          self.block_cx=0
          self.block_cy=0
          color_read_succed=0#是否识别到颜色
          # 获取图像
          img = sensor.snapshot()
      
          if self.apriltag_succeed_flag==0:#识别抓取标签
              for tag in img.find_apriltags(): # defaults to TAG36H11 without "families".
                  img.draw_rectangle(tag.rect(), color = (255, 0, 0))     #画框
                  img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0)) #画十字
                  img.draw_string(tag[0], (tag[1]-10), "{}".format(tag.id()), color=(255,0,0))
                  self.block_cx=tag.cx()
                  self.block_cy=tag.cy()
      
                  print("block_cx",self.block_cx)
                  print("block_cy",self.block_cy)
      
                  self.block_degress = 180 * tag.rotation() / math.pi#求April Tags旋转的角度
                  self.place_block_ID=tag.id()
                  print("self.place_block_ID", self.place_block_ID)
      
      
      
      
      
      
      
              print("self.move_status",self.move_status)
          #************************************************ 运动机械臂*************************************************************************************
              color_read_succed=1


    • 比赛方提供的标签是什么?