把摄像头装上面能看到下面全部的图,标定每个交点的位置,然后…胡说的,仅供参考
pf5b
@pf5b
pf5b 发布的帖子
-
寻线小车,我把蓝色的线换成黑色的的了阈值改过了以后,小车原地转找不到线,求助
请在这里粘贴代码
THRESHOLD = (5, 70, -23, 15, -57, 0) # Grayscale threshold for dark things...
import sensor, image, time
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()
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
clock = time.clock() # to process a frame sometimes.while(True):
clock.tick()
img = sensor.snapshot().binary([THRESHOLD])
line = img.get_regression([(100,100,0,0,0,0)], robust = True)
if (line):
rho_err = abs(line.rho())-img.width()/2
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:
#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
car.run(50+output, 50-output)
else:
car.run(0,0)
else:
car.run(50,-50)
pass
#print(clock.fps()) -
RE: 亲,我只想询问一下代码方面的问题,小车巡线的功能实现不了,能否帮帮忙?小车一直在原地打转,直线拟合需要亲你的帮助?
@kidswong999
你好,用例程代码让小车寻线,我把阈值改成黑色的了小车也是原地转,看函数的使用方法是不是不能让小车寻黑色的线昂?想寻黑色的线应该怎么改代码呢?求教一下…
IDE里面的图是这样的…
感谢THRESHOLD = (5, 70, -23, 15, -57, 0) # Grayscale threshold for dark things... import sensor, image, time 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() 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 clock = time.clock() # to process a frame sometimes. while(True): clock.tick() img = sensor.snapshot().binary([THRESHOLD]) line = img.get_regression([(100,100,0,0,0,0)], robust = True) if (line): rho_err = abs(line.rho())-img.width()/2 if line.theta()>90: theta_err = line.theta()-180 else: theta_err = line.theta() img.draw_line(line.line(), color = 127)