代码出现invalid syntax的错误该怎么办呢?
-
import sensor, image, time,math,pyb from pyb import UART,LED import json import ustruct import car from pid import PID LED_R = pyb.LED(1) LED_G = pyb.LED(2) LED_B = pyb.LED(3) LED_R.on() LED_G.on() LED_B.on() red_threshold_01 = ((0, 100, 127, 16, 127, -28)); sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_gain(False) sensor.set_auto_whitebal(False) clock = time.clock() uart=UART(3,115200) uart.init(115200,bits=8,parity=None,stop=1) green_threshold = (0, 100, 35, 11, 67, -13) size_threshold = 2000 x_pid = PID(p=0.5, i=1, imax=100) h_pid = PID(p=0.05, i=0.1, imax=50) K=510#the value should be measured 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 def sending_data(cx,cy,cw,ch): global uart; data = bytearray([0x2C,4,cx,cy,0x5B]) uart.write(data); def receive_data(): global uart if uart.any(): tmp_data=uart.readchar(); print(tmp_data) while(True): clock.tick() img = sensor.snapshot() blobs = img.find_blobs([red_threshold_01]) cx=0;cy=0; 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) img.draw_rectangle(max_blob[0:4]) img.draw_cross(max_blob[5], max_blob[6]) pixel_size=max_blob[4] cx=max_blob[5]; cy=max_blob[6]; cw=max_blob[2]; ch=max_blob[3]; focal_length=2.8 actual_size=3.4 th =(actual_size*focal_length)/pixel_size x_output=x_pid.get_pid(x_error,1) h_output=h_pid.get_pid(h_error,1) #print("h_output",h_output) print("cx",cx,"cy",cy,"cz",th) sending_data(cx,cy,cw,ch); receive_data(); car.run(-h_output-x_output,-h_output+x_output) #else: #car.run(18,-18)
-
你的代码文本和截图不匹配。
-
会不会应该
是b=blobs
-
@kidswong999 我改了一点,但是还是这个错误
-
LED_R = pyb.LED(1) LED_G = pyb.LED(2) LED_B = pyb.LED(3) LED_R.on() LED_G.on() LED_B.on() red_threshold_01 = ((2, 51, 11, 127, -128, 127)); sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.skip_frames(10) sensor.set_auto_gain(False) sensor.set_auto_whitebal(False) clock = time.clock() uart=UART(3,115200) uart.init(115200,bits=8,parity=None,stop=1) green_threshold = (0, 100, 35, 11, 67, -13) size_threshold = 2000 x_pid = PID(p=0.5, i=1, imax=100) h_pid = PID(p=0.05, 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 def sending_data(cx,cy,cw,ch): global uart; data = bytearray([0x2C,4,cx,cy,0x5B]) uart.write(data); def receive_data(): global uart if uart.any(): tmp_data=uart.readchar(); print(tmp_data) while(True): clock.tick() img = sensor.snapshot() blobs = img.find_blobs([red_threshold_01]) if len(blobs) == 1: # Draw a rect around the blob. b = blobs[0] img.draw_rectangle(b[0:4]) # rect img.draw_cross(b[5], b[6]) # cx, cy Lm = (b[2]+b[3])/2 length = K/Lm print(length) #print(Lm) cx=0;cy=0; 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) img.draw_rectangle(max_blob[0:4]) img.draw_cross(max_blob[5], max_blob[6]) cx=max_blob[5]; cy=max_blob[6]; cw=max_blob[2]; ch=max_blob[3]; x_output=x_pid.get_pid(x_error,1) h_output=h_pid.get_pid(h_error,1) print("h_output",h_output) sending_data(cx,cy,cw,ch); sending_data(ch1.pulse_width_percent(int(abs(left_speed)))) sending_data(ch2.pulse_width_percent(int(abs(right_speed)))) receive_data(); car.run(-h_output-x_output,-h_output+x_output) else: car.run(18,-18)
-
@kidswong999 这是原来的代码
-
@x6hc 改了之后还是这个错误
-
错误原因:tab和空格缩进混用。
解决办法:把所有tab缩进改为4个空格。