• 星瞳AI VISION软件内测!可以离线标注,训练,并生成OpenMV的模型。可以替代edge impulse https://forum.singtown.com/topic/8206
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 插上数据线和拔下数据线后的程序运行结果不一样?



    • ![0_1665212515774_微信图片_20221008150111.jpg](正在上传 96%) 总述:正常弹出u盘。程序是识别Apriltag并有两个电机控制漂浮着的装置向Apriltag的方向移动。

      问题描述:连上数据线时程序运行结果正确,当视野中不存在Apriltag时电机按照程序正常停止转动。但烧录程序并拔出数据线,重新上电后,openmv识别出Apriltag后电机转动,当视野中没有Apriltag时电机却不会停止转动。

      补充:换过电机控制模块和电池,不是这两个元器件的问题。之前拔下数据线程序是能正常跑的,某一次开始突然出bug了。由于插上数据线时程序正常运行,所以应该也不是程序问题,实在不知道是哪里出错了。线路是按照追小球的小车那个教程接的。

      元器件:openmv4H7PLUS、TB6612电机驱动、3.7V锂电池、615空心杯电机、IDE版本2.9.0

      附程序:
      mecar模块:

      from pyb import Pin, Timer
      inverse_left=False
      inverse_front=False
      ain1 =  Pin('P0', Pin.OUT_PP)
      ain2 =  Pin('P1', Pin.OUT_PP)
      bin1 =  Pin('P2', Pin.OUT_PP)
      bin2 =  Pin('P3', Pin.OUT_PP)
      ain1.low()
      ain2.low()
      bin1.low()
      bin2.low()
      pwma = Pin('P7')
      pwmb = Pin('P8')
      tim = Timer(4, freq=1000)
      ch1 = tim.channel(1, Timer.PWM, pin=pwma)
      ch2 = tim.channel(2, Timer.PWM, pin=pwmb)
      ch1.pulse_width_percent(0)
      ch2.pulse_width_percent(0)
      def run(left_speed, front_speed):
          if inverse_left==True:
              left_speed=(-left_speed)
          if inverse_front==True:
              front_speed=(-front_speed)
          if left_speed < 0:
              ain1.low()
              ain2.high()
          elif left_speed > 0:
              ain1.high()
              ain2.low()
          else:
              ain1.low()
              ain2.low()
          ch1.pulse_width_percent(20)
          if front_speed < 0:
              bin1.low()
              bin2.high()
          elif front_speed > 0:
              bin1.high()
              bin2.low()
          else:
              bin1.low()
              bin2.low()
          ch2.pulse_width_percent(20)
      

      main模块:

      import sensor, image, time
      import mecar
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False)
      clock = time.clock()
      size_threshold = 2000
      def find_max(blobs):
      	max_size=0
      	for blob in blobs:
      		if blob[2]*blob[3] > max_size:
      			max_blob=blob
      			max_size = blob[2]*blob[3]
      	return max_blob
      while(True):
      	clock.tick()
      	img = sensor.snapshot()
      	blobs = img.find_apriltags()
      	if blobs:
      		max_blob = find_max(blobs)
      		x_error = max_blob[6]-80
      		y_error = max_blob[7]-60
      		print("x error: ", x_error)
      		print("y error: ", y_error)
      		img.draw_rectangle(max_blob[0:4])
      		img.draw_cross(int(max_blob[6]), int(max_blob[7]))
      		mecar.run(x_error,y_error)
      		time.sleep_ms(500)
      	else:
      		mecar.run(0,0)
      


    • 可能是你保存的步骤不对。先脱机运行闪灯测试:https://book.openmv.cc/example/02-Board-Control/led-control.html

      然后写一个程序,当找到apriltag就亮灯,找不到就灭灯的程序,脱机测试。