导航

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

    qohd 发布的帖子

    • 追小球的小车,car.py中的问题。

      def run(left_speed, right_speed):
      if inverse_left==True: #如果电机不是正转,减速度
      left_speed=(-left_speed)
      if inverse_right==True:
      right_speed=(-right_speed)

      if left_speed < 0:      #当速度减到负,让电机反转
          ain1.low()
          ain2.high()
      else:
          ain1.high()
          ain2.low()
      ch1.pulse_width_percent(abs(left_speed))
      
      if right_speed < 0:
          bin1.low()
          bin2.high()
      else:
          bin1.high()
          bin2.low()
      ch2.pulse_width_percent(abs(right_speed))
      

      按照真值表,if left_speed < 0的时候电机反转,为什么是ain1.low() ain2.high();而不是 ain1.high(),ain2.low()
      ;0_1555658846411_222.png

      发布在 OpenMV Cam
      Q
      qohd
    • RE: 如何让小车沿着双颜色巡线?

      我是这么干。但是视野中就返回不了直线了。这是为什么。
      0_1554698143563_QQ图片1.png ;

      0_1554698170114_QQ图片2.png ;

      0_1554698178846_QQ图片3.png ;

      发布在 OpenMV Cam
      Q
      qohd
    • 如何让小车沿着双颜色巡线?

      如果想让小车巡完红色直线后返回, 再自动巡着黄线行驶,应该怎么修改小车巡线的例程呢?

      发布在 OpenMV Cam
      Q
      qohd
    • 小车巡直线,想让小车停下后,延时3秒原地转,再自己开回来。

      这句错误要怎么改?
      0_1554533544887_QQ图片22.png 0_1554533552008_QQ图片111.png

      发布在 OpenMV Cam
      Q
      qohd
    • 为什么我这段代码没有输出距离?

      #openmv利用超声波测距
      import time,utime,pyb
      from pyb import Pin

      wave_echo_pin = Pin('P4', Pin.IN, Pin.PULL_NONE) #P4输入,等待IO口的高电平
      wave_trig_pin = Pin('P5', Pin.OUT_PP, Pin.PULL_DOWN) #P5输出,触发trig

      wave_distance = 0
      tim_counter = 0
      flag_wave = 0

      #超声波启动,trig触发15us
      def wave_start():
      wave_trig_pin.value(1)
      utime.sleep_us(15)
      wave_trig_pin.value(0)

      #配置定时器。定时器(1)用于摄像头。定时器(5)控制servo驱动,定时器(6)用于ADC/DAC读取/写入。
      #period [0-0xffff] 用于定时器1、3、4、6-15。[0-0x3fffffff]用于定时器2和5
      #定时器2-7和12-14的时钟源为84Hz(pyb.freq()[2] * 2),
      #定时器1和8-11的时钟源为168Hz(pyb.freq()[3] * 2)。

      #配置定时器,freq不是很懂。定时器2时钟源假设为84Mhz
      tim =pyb.Timer(2, prescaler=420, period=0x3fffffff) #分频数,周期(arr=65535)。相当于freq=02Mhz

      #超声波距离计算
      def wave_distance_calculation():
      #全局变量声明
      global tim_counter
      #频率f为 高电平时间t=计数值1/f
      wave_distance = tim_counter
      5*0.017
      #输出最终的测量距离(单位cm)
      print('wave_distance',wave_distance)

      #超声波数据处理
      def wave_distance_process():
      global flag_wave
      if(flag_wave == 0):
      wave_start()
      if(flag_wave == 2):
      wave_distance_calculation()
      flag_wave = 0

      #外部中断配置
      def callback(line):
      global flag_wave,tim_counter
      #上升沿触发处理
      if(wave_echo_pin.value()):
      tim.init(prescaler=420, period=0x3fffffff) #启用定时器
      flag_wave = 1 #触发标志
      #下降沿
      else:
      tim.deinit() #停用定时器,并禁用定时器外围设备
      tim_counter = tim.counter() #计数器清0
      tim.counter(0)
      extint.disable() #中断禁止
      flag_wave = 2 #求距离
      #中断配置,配置IO引脚
      extint = pyb.ExtInt(wave_echo_pin, pyb.ExtInt.IRQ_RISING_FALLING, pyb.Pin.PULL_DOWN, callback)

      while(True):
      wave_distance_process()
      time.sleep(100)

      终端没有输出是怎么回事

      发布在 OpenMV Cam
      Q
      qohd
    • 定时器2的时钟源到底是多少?

      定时器2的时钟源到底是84Mhz,还是84hz啊。中文手册里是84hz。但是有个博主的代码,配置定时器1(时钟源168hz)
      它的工作频率是0.2Mhz。
      0_1554384981063_222.png

      发布在 OpenMV Cam
      Q
      qohd
    • callback(line),这定义的是啥意思啊?

      这一段文字解释没看懂。
      0_1554366904006_QQ图片20190404163452.png

      发布在 OpenMV Cam
      Q
      qohd
    • 超声波传感器与openmv连接方式。急

      在巡线小车的基础上,加一个超声波传感器hc-sr04,连线方式可不可以超声波trip、echo引脚接openmv的P4、P5,超声波的vcc、gnd接openmv的vin、gnd?

      发布在 OpenMV Cam
      Q
      qohd
    • 为什么巡线小车,两边的轮子速度不一样大。用了原程序还是会跑偏?

      为什么巡线小车,两边的轮子速度不一样大。用了原程序还是会跑偏

      发布在 OpenMV Cam
      Q
      qohd
    • 能帮忙看看为什么小车无法巡直线吗?老是跑偏。(轨道只是直线,没有弯道)

      THRESHOLD = (12, 100, -14, 117, -116, 78) # 红色阈值
      import sensor, image, time, math
      from pyb import LED
      import car
      from pid import PID
      rho_pid = PID(p=0.4, i=0)
      theta_pid = PID(p=0.001, i=0)

      #LED(1).on() #打开openmv的RGB灯用来补光,为了避免颜色受环境的影响
      #LED(2).on()
      #LED(3).on()

      sensor.reset()
      sensor.set_vflip(True)
      sensor.set_hmirror(True)
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQQVGA) # 80x60 (4,800 pixels) - O(N^2) max = 2,3040,000.
      #sensor.set_windowing([0,20,80,40])
      sensor.skip_frames(time = 2000) # WARNING: If you use QQVGA it may take seconds
      sensor.set_auto_gain(False) #关闭自动增益
      sensor.set_auto_whitebal(False) # 在对颜色识别时,关闭白平衡
      clock = time.clock() # to process a frame sometimes.

      #补充find_apriltags()函数参数
      #由Tx、Ty、Tz三个方向确定镜头与tag标签的实际距离
      #比例系数k =实际/根号(TxTx +TyTy +Tz*Tz)
      #经过多次实距测量与虚距计算,求得平均比例系数K=24.5

      while(True):
      clock.tick()
      img = sensor.snapshot().binary([THRESHOLD]) #img.binary进行图像的阈值分割。黑白。
      line = img.get_regression([(100,100,0,0,0,0)], robust = True)
      if (line): #此函数还会返回一个line对象,即视野中一条直线
      rho_err = abs(line.rho())-img.width()/2 #利用line对象的theta返回值和rho,(theta代表返回线段的角度, rho代表偏移的距离),利用theta和rho来控制小车角度
      if line.theta()>90:
      theta_err = line.theta()-180
      else:
      theta_err = line.theta()
      img.draw_line(line.line(), color = 127) #在图像中画出视野的中央线
      print(rho_err,line.magnitude(),rho_err)
      if line.magnitude()>8: #magnitude越大,说明线性回归效果好。再进行下面的pid运算
      #if -40<b_err<40 and -30<t_err<30:
      rho_output = rho_pid.get_pid(rho_err,1)
      theta_output = theta_pid.get_pid(theta_err,1)
      output = rho_output+theta_output #将两个pid参数相加,output输出的参数是什么?
      car.run(30+output, 30-output)
      else:
      car.run(0,0)
      else:
      car.run(0,-0) #~~~~这个位置感觉不应该原地转,当小车向前行驶,停下run(0,0)时要识别tag,而且不能再车位中转
      #pass
      #补充,现在的问题是,小车以黑白巡线了,但巡线后不能识别tag(tag是彩图),下面两行代码是我的处理。
      sensor.set_pixformat(sensor.RGB565) #更改相机像素模式
      img = sensor.snapshot() #截取图像
      for tag in img.find_apriltags(fx=f_x, fy=f_y, cx=c_x, cy=c_y): # for循环,tag相当于变量i;不说默认为寻找TAG36H11
      img.draw_rectangle(tag.rect(), color = (255, 0, 0))
      img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))
      print_args = (tag.x_translation(), tag.y_translation(), tag.z_translation())
      #遇到tag时电机启停
      Tx=tag.x_translation()
      Ty=tag.y_translation()
      Tz=tag.z_translation()
      d=24.5math.sqrt(TxTx+TyTy+TzTz)
      if d>9: #当实距大于9,小车开
      car.run(30,30)
      elif d > 6 and d <9: #实距6~9范围内,小车停
      car.run(0,0)
      else: #其他距离,小车停
      car.run(0,0)
      print("Tx: %f, Ty %f, Tz %f" % print_args)
      #print(clock.fps())

      发布在 OpenMV Cam
      Q
      qohd
    • 摄像头倾斜45度角来识别tag的话,那么镜头与tag间的实际距离应该怎么确定呢?

      视频里头是垂直关系,可以用直尺来测量,但我这种情况该怎么办,在线等,急

      发布在 OpenMV Cam
      Q
      qohd
    • RE: OPENMV小车怎么巡线根据颜色巡线而不是转换灰度图,求代码

      我也想问这个问题,程序中使用了image.binary,二值化处理成只识别黑白,那我如果巡线完想要识别比如tag,由于只能识别黑白,那就识别不了tag了。这该怎么处理呢?

      发布在 OpenMV Cam
      Q
      qohd
    • 用摄像头识别Apriltag标识测距精准还是用超声波传感器测距精准啊?

      用摄像头识别Apriltag标识测距精准还是用超声波传感器测距精准啊?

      发布在 OpenMV Cam
      Q
      qohd
    • pid.py那段代码的注解有吗?

      有没有对pid.py那段代码的注解啊,看不太懂,视频里也没有讲解过啊。

      发布在 OpenMV Cam
      Q
      qohd
    • RE: 在小车巡线main.py视频中讲到,line.theta一段代码,怎么就实现了直线角度的调整了。

      但是,line.theta()返回的角度是0~179度呀,为什么会有360度。。还想咨询一下,是不是不变换之前,偏移量是α,变换之后才变成theta,如图。有点不太理解,麻烦您解答一下。。0_1554116385783_QQ图片.jpg

      发布在 OpenMV Cam
      Q
      qohd
    • 在小车巡线main.py视频中讲到,line.theta一段代码,怎么就实现了直线角度的调整了。

      0_1554106448443_QQ图片20190401161350.png 0_1554106455599_QQ图片20190401161357.png

      发布在 OpenMV Cam
      Q
      qohd