Как я могу решить лабиринт, используя стек или очередь?

Я использую робота писанины для навигации по самодельному лабиринту (который я улучшу, как только у меня заработает функциональность, та, что у меня есть в видео, предназначена только для тестирования).

Лабиринт

Сначала я пытался заставить робота двигаться влево и вправо исключительно на датчиках getObstacle. У меня были проблемы с этим.. Он не поворачивался ни налево, ни направо, как мне хотелось. Так что я думаю об использовании стека или очереди.

Я хотел бы просто сказать роботу

if(getObstacle(1) <=6000): # once sensor reaches 6000, it will stop doing the command
   forward(1,0) # will move forward as long as getObstacle(1) is less than 6000

Затем, как только он обнаружит первое препятствие, поверните налево и идите вперед

Затем, как только он обнаружит другое препятствие, поверните направо.

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

Поэтому, когда он впервые чувствует стену = поверните налево... затем идите вперед

Когда он во второй раз почувствует стену = поверните направо... затем идите вперед.

Как я могу реализовать этот код в стеке или очереди?

Код, который у меня сейчас есть, основан исключительно на датчиках и ненадежен.

Вот пример того, с чем я работаю:

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 <= 6000):
            forward(0.5, 0.3)       
        elif (center >= 6000 and right > left): #if right sensor detects value higher than left
            turnLeft(1, .55) #left turn
        else:
            turnRight(1, .55) #otherwise, turn right

Я работаю с различными вариантами кода выше. Я просто хотел бы реализовать повороты в очереди или стеке, и я не уверен, как это сделать.

Спасибо

0 ответов

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