def color_follow():
    global pan_angle_color, tilt_angle_color
    Vilib.color_detect_switch(True)
    status = [Vilib.color_detect_object('x'), Vilib.color_detect_object('y')]
    size = [
        Vilib.color_detect_object('width'),
        Vilib.color_detect_object('height')
    ]
    time.sleep(0.005)
    #on left -1 on right 1
    if status[0] == -1:
        pan_angle_color = pan_angle_color + 1
        set_camera_servo1_angle(min(90, pan_angle_color))
        set_dir_servo_angle(max(-45, -pan_angle_color))
    elif status[0] == 1:
        pan_angle_color = pan_angle_color - 1
        set_camera_servo1_angle(max(-90, pan_angle_color))
        set_dir_servo_angle(min(45, -pan_angle_color))
    if status[1] == -1:
        tilt_angle_color = tilt_angle_color + 1
        set_camera_servo2_angle(min(45, tilt_angle_color))
    elif status[1] == 1:
        tilt_angle_color = tilt_angle_color - 1
        set_camera_servo2_angle(max(-45, tilt_angle_color))
    elif 0 < size[0] < 100 or 0 < size[1] < 100:
        forward(50)
    else:
        stop()
Exemple #2
0
def forever():
    global x_axis, width, pan_angle
    x_axis = Vilib.color_detect_object('x')
    width = Vilib.color_detect_object('width')
    delay(5)
    if x_axis == -1:
        pan_angle = pan_angle - 1
        pan_angle = constrain(pan_angle, -90, 90)
        set_camera_servo1_angle(pan_angle)
        pan_angle = constrain(pan_angle, -45, 45)
        set_dir_servo_angle(pan_angle)
    elif x_axis == 1:
        pan_angle = pan_angle + 1
        pan_angle = constrain(pan_angle, -90, 90)
        set_camera_servo1_angle(pan_angle)
        pan_angle = constrain(pan_angle, -45, 45)
        set_dir_servo_angle(pan_angle)
    if width > 50:
        forward(50)
    else:
        stop()