Exemplo n.º 1
0
def main_loop():
    while True:
        if learning_stage():
            break

    cv.destroyAllWindows()
    jm.set_throttle(0)
    jm.set_angle(90)
    time.sleep(5)
    if not debug:
        jm.set_throttle(run_throttle)

    while True:
        real_action()
Exemplo n.º 2
0
def learning_stage() -> bool:
    global now_dir, run_throttle
    _, raw_img = img.read()
    input_tensor = cv2img2tensor(raw_img)
    inputs = Variable(input_tensor.cuda()).float()
    cv.imshow('judge', raw_img)
    in_char = cv.waitKey(1)  # getch()
    if in_char == ord('a'):
        now_dir = 0  # jm.MAX_STEER_DEV
        jm.set_angle(130)
    elif in_char == ord('s'):
        now_dir = 1  # straight
        jm.set_angle(90)
    elif in_char == ord('d'):
        now_dir = 2  # -jm.MAX_STEER_DEV
        jm.set_angle(50)
    elif in_char == ord('i'):
        run_throttle += 0.01
        if run_throttle > 1:
            run_throttle = 1
    elif in_char == ord('k'):
        run_throttle -= 0.01
        if run_throttle < 0:
            run_throttle = 0
    elif in_char == ord('w'):
        return True
    debug_print(f'\n\ninput: {in_char}')
    label = Variable(torch.tensor([now_dir]).cuda(),
                     requires_grad=False).long()
    debug_print(f'label: {label}')
    outputs = net(inputs)
    if not debug:
        jm.set_throttle(run_throttle)
    debug_print(f'output: {outputs}')
    optimizer.zero_grad()
    loss = criterion(outputs, label).cuda()
    loss.backward()
    optimizer.step()
    return False
Exemplo n.º 3
0
def finish_program(video_capture: cv.VideoCapture) -> None:
    video_capture.release()
    jm.set_throttle(0)
    cv.destroyAllWindows()
Exemplo n.º 4
0
    else:
        r = const / (640 - left_coord[0] - right_coord[0])

    print(r)
    jm.set_angle(steer_dampener(180 / m.pi * m.atan(car_len / r)))

    return r


def debug_img_show(image_in):
    if debug:
        cv.imshow('debug', image_in)


debug = True
jm.set_throttle(0)
time.sleep(1)
# camera init
img = jm.cap
prev_turn = m.inf

try:
    while True:
        _, image_raw = img.read()
        image_raw = cv.resize(image_raw, (640, 360),
                              interpolation=cv.INTER_AREA)

        image_bird = bird_eye.bird_eye_warp(image_raw)

        list_up_left, up_left_image = \
            search_lane_center(image_bird[:image_bird.shape[0] // 2, :image_bird.shape[1] // 2], 1)
Exemplo n.º 5
0
    if debug:
        print(a)


def cv2img2tensor(image):
    tensor_img = numpy.transpose(image, (2, 0, 1))
    tensor_img = torch.from_numpy(tensor_img)
    return tensor_img.unsqueeze_(0)


net: Net = Net()
net.cuda()
criterion = nn.CrossEntropyLoss().cuda()
optimizer = optim.SGD(net.parameters(), lr=0.0001, momentum=0.5)

jm.set_throttle(0)
run_throttle = 0.15
time.sleep(1)
# camera init
img = jm.cap

debug = False


def main_loop():
    while True:
        if learning_stage():
            break

    cv.destroyAllWindows()
    jm.set_throttle(0)