Как заставить робота ориентироваться в лабиринте?

Я использую библиотеку Myro с языком Python. У меня были странные результаты.

Моя идея состояла в том, чтобы вызвать датчики getObstacle.

left = getObstacle(0)
center = getObstacle(1)
right = getObstacle(2)

Я хочу, чтобы робот двигался вперед, пока центральный датчик препятствий меньше или равен 4500.

Если правый датчик препятствий на роботе имеет более высокое значение, чем левый датчик препятствий, я хочу, чтобы он повернул налево.

В противном случае поверните направо.

Вот мои попытки на YouTube

Попытка 1

Попытка 2

Я собираюсь представить 3 разных варианта моего кода

def main():
    setIRPower(135)
    while True:
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        # 2 feet per 1 second at 1 speed
        if (center <= 4500):
            forward(0.5, 0.2)   
            wait(0.4)   
        elif (right > left):
            turnLeft(1, .45) 
        else:
            turnRight(1, .45)



def main():
    setIRPower(135)
    while True:
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        # 2 feet per 1 second at 1 speed
        if (center <= 4500):
            forward(0.5, 0.2)   
            wait(0.3)   

        elif(right > center and left):
            turnLeft(1, .45) 
        elif(left > center and right):
            turnRight(1, .45)

Последний, с которым я работаю

def main():
    setForwardness(1)
    setIRPower(135)
    while True: 
        left = getObstacle(0)
        center = getObstacle(1)
        right = getObstacle(2)
        if (center <= 5000 and left <= 5000 and right <= 5000):
            forward(0.5, 0.2)
            wait(.3)
        elif(right>left):
            turnLeft(1, 0.45)
        else:
            turnRight(1, 0.45)

Есть ли способ улучшить мой код? Я хочу повернуть налево и направо в правильное время.

Должен ли я использовать другую логику в целом? Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам