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



    • 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=0#机械臂移动的方式
      
              #用来记录已经抓取到标签
              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(families=image.TAG36H11 | image.TAG25H9): # 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
      


    • 我不知道你说的自己布局是什么意思。