导航

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

    hxcb 创建的帖子

    • H

      追小球小车关于识别问题
      OpenMV Cam • • hxcb

      4
      0
      赞同
      4
      楼层
      1823
      浏览

      H

      @kidswong999 import sensor, image, time import car from pid import PID sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_whitebal(False) clock = time.clock() # Tracks FPS. green_threshold = (76, 96, -110, -30, 8, 66) size_threshold = 2000 x_pid = PID(p=0.5, i=1, imax=100) h_pid = PID(p=0.005, i=0.1, imax=50) 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_blobs([green_threshold]) if blobs: max_blob = find_max(blobs) x_error = max_blob[5]-img.width()/2 h_error = max_blob[2]*max_blob[3]-size_threshold print("x error: ", x_error) ''' for b in blobs: # Draw a rect around the blob. img.draw_rectangle(b[0:4]) # rect img.draw_cross(b[5], b[6]) # cx, cy ''' img.draw_rectangle(max_blob[0:4]) img.draw_cross(max_blob[5], max_blob[6]) x_output=x_pid.get_pid(x_error,1) h_output=h_pid.get_pid(h_error,1) print("h_output",h_output) car.run(-h_output-x_output,-h_output+x_output) else: car.run(10,-10) 这是main.py from pyb import Pin, Timer inverse_left=False inverse_right=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, 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(int(abs(left_speed))) if right_speed < 0: bin1.low() bin2.high() else: bin1.high() bin2.low() ch2.pulse_width_percent(int(abs(right_speed))) 这是car.py from pyb import millis from math import pi, isnan class PID: _kp = _ki = _kd = _integrator = _imax = 0 _last_error = _last_derivative = _last_t = 0 _RC = 1/(2 * pi * 20) def __init__(self, p=0, i=0, d=0, imax=0): self._kp = float(p) self._ki = float(i) self._kd = float(d) self._imax = abs(imax) self._last_derivative = float('nan') def get_pid(self, error, scaler): tnow = millis() dt = tnow - self._last_t output = 0 if self._last_t == 0 or dt > 1000: dt = 0 self.reset_I() self._last_t = tnow delta_time = float(dt) / float(1000) output += error * self._kp if abs(self._kd) > 0 and dt > 0: if isnan(self._last_derivative): derivative = 0 self._last_derivative = 0 else: derivative = (error - self._last_error) / delta_time derivative = self._last_derivative + \ ((delta_time / (self._RC + delta_time)) * \ (derivative - self._last_derivative)) self._last_error = error self._last_derivative = derivative output += self._kd * derivative output *= scaler if abs(self._ki) > 0 and dt > 0: self._integrator += (error * self._ki) * scaler * delta_time if self._integrator < -self._imax: self._integrator = -self._imax elif self._integrator > self._imax: self._integrator = self._imax output += self._integrator return output def reset_I(self): self._integrator = 0 self._last_derivative = float('nan') 这是pid.py 感觉都是用的原来的 不知道为啥,前进还有原地旋转都没有问题 就是这个左右反了 小球在左边向右转,小球在右边向左转
    • H

      关于电机驱动板的问题
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1026
      浏览

      如果电流不大就可以。
    • H

      关于openmv和arduino串口通信
      OpenMV Cam • • hxcb

      7
      0
      赞同
      7
      楼层
      2489
      浏览

      H

      @kidswong999 两个板子是共地的,摄像头也检测到了
    • H

      关于openmv分屏使用问题
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1304
      浏览

      一般的算法,都支持ROI参数,只要把区域roi传进去就行。
    • H

      关于串口通信问题???大佬帮忙解决一下
      OpenMV Cam • • hxcb

      4
      0
      赞同
      4
      楼层
      2122
      浏览

      Arduino的Serial 是0和1,你用10和11错了。 参考: https://book.openmv.cc/MCU/serial1.html
    • H

      关于数据接收问题?arduino给openmv发送数据 没有反应
      OpenMV Cam • • hxcb

      4
      0
      赞同
      4
      楼层
      2296
      浏览

      H

      删掉了还是一样 没反应啊
    • H

      关于openmv接收字符的问题,请问一下如何接收arduino发送的单个字符?
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1281
      浏览

      用uart.readchar()就行了 https://docs.singtown.com/micropython/zh/latest/openmvcam/library/pyb.UART.html
    • H

      关于openmv跳出循环的问题?
      OpenMV Cam • • hxcb

      11
      0
      赞同
      11
      楼层
      5308
      浏览

      https://www.zhihu.com/question/37076998 参考这个
    • H

      Frame capture has timed out. 帧捕获超时了。什么意思?
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1875
      浏览

      如果涉及代码,需要报错提示与全部代码文本,请注意不要贴代码图片
    • H

      如何让arduino接收多次数据,我得arduino只是执行接收的第一个命令的步骤
      OpenMV Cam • • hxcb

      3
      0
      赞同
      3
      楼层
      1598
      浏览

      这个逻辑你得自己写。我帮不了你。
    • H

      为什么一传输数据就会出错呀?
      OpenMV Cam • • hxcb

      4
      0
      赞同
      4
      楼层
      1961
      浏览

      https://singtown.com/learn/50539/ 先按照视频步骤测试测距扩展板
    • H

      关于openmv循环工作问题?
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1377
      浏览

      那你要串口接受数据。 while True: if uart.any(): data = uart.read() print(data) blobs = img.find_blobs() uart.write(xxx)
    • H

      关于摄像头开关问题,?
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1501
      浏览

      https://book.openmv.cc/example/19-Low-Power/sensor-sleep.html
    • H

      步进电机问题?关于电机正反转
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1390
      浏览

      如果你用的是 电机扩展板,那么stepper.set_speed(-30)就是反转。 但是我看你之前的问题,并不是用的电机扩展板 https://singtown.com/product/50202/openmv-motor-shield/
    • H

      opwenmv循环工作问题?
      OpenMV Cam • • hxcb

      1
      0
      赞同
      1
      楼层
      1077
      浏览

      尚无回复

    • H

      openmv工作储存数据问题
      OpenMV Cam • • hxcb

      2
      0
      赞同
      2
      楼层
      1333
      浏览

      你要编程啊,用一个全局变量表示状态,然后死循环里判断这个状态。