예제 #1
0
    try:
        car = Car()
        pid = PID(kp=1, ki=0.0, kd=0.1)
        pid.SetExpectedOutput(15)

        dist_list = []
        min_speed = 30
        FORWARD = True

        while True:

            ##### perception ######
            # ultrasonic sensing
            dist_mov_ave = car.DistMeasureMovingAverage()

            motor_speed = -pid.UpdateOutput(dist_mov_ave)

            if motor_speed >= 0:
                FORWARD = True
            else:
                FORWARD = False

            motor_speed = min_speed + min(abs(motor_speed), 100 - min_speed)
            if motor_speed < min_speed + 1:
                motor_speed = 0

            if FORWARD:
                car.forward(motor_speed)
            else:
                car.back(motor_speed)