导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. asfq
    A
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    asfq

    @asfq

    0
    声望
    1
    楼层
    251
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    asfq 关注

    asfq 发布的帖子

    • 插上数据线和拔下数据线后的程序运行结果不一样?

      ![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)
      
      发布在 OpenMV Cam
      A
      asfq