Skip to main content

Lição 3: Adicionando Comandos de Trem de Força para Resolver o Labirinto da Parede

Resolvendo o Problema do Labirinto da Parede

Agora que o robô VR dirigiu para a letra ‘A’, bem como para o número ‘2’ no Maze Wall Playground, como você criaria um projeto onde o robô VR dirige para outros locais, como para a letra ‘B’? Até agora, usamos dados do Sensor de Para-choques para dirigir até uma parede e, em seguida, girar para passar para a próxima parede. Para navegar até a letra 'B', precisamos ser capazes de mover o Robô VR para um ponto no meio da superfície do labirinto, para que ele possa seguir um caminho diferente em direção ao nosso destino.

Se o código contivesse apenas drive e turn_for comandos, o Robô VR poderia ficar “preso” na secção número ‘2’ do Labirinto de Parede, porque continuaria a virar à esquerda ou à direita sem nunca recuar.Uma vista de cima para baixo do playground Wall Maze com o robô VR posicionado sobre o marcador 2. Está inclinado para cima e para a esquerda, aproximadamente voltado para o marcador B.

Em vez disso, podemos estimar a distância da última parede que o robô VR tocou até onde precisa de virar. Podemos então usar comandos Drivetrain, como drive_for e turn_for, com os while loops e dados do Sensor de pára-choques no nosso projecto para resolver o labirinto !

  • Comece por modificar o seu projeto anterior, crie um novo projeto ou selecione "Copiar" e cole este código no VEXcode VR para corresponder a este projeto base.

    def main():
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (LEFT, 90, DEGREES)
    	
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.stop ()
  • O projeto acima começa a conduzir o Robô VR à letra ‘B’, no entanto, para que o Robô VR o faça, ele primeiro precisaria fazer backup e depois virar à esquerda.Uma vista de cima para baixo do parque infantil Wall Maze com o robô VR posicionado acima do marcador 2. O robô VR é pressionado contra e voltado para a parede esquerda, com setas verdes apontando para a direita e depois para baixo, mostrando o caminho que precisará seguir.
  • Edite o código removendo o comando stop e substituindo-o pelos comandos drive_for e turn_for .
    • Podemos estimar que o Robô VR precisa dirigir em marcha à ré por aproximadamente 300 milímetros (mm). Em primeiro lugar, defina os parâmetros do comando drive_for para “reverter” por 300 milímetros (mm).
    • De seguida, defina os parâmetros do comando turn_for para virar 90 graus para a esquerda. O seu projeto deve agora ter este aspeto:

      def main():
      	enquanto não left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (LEFT, 90, DEGREES)
      
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (RIGHT, 90, DEGREES)
      
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.turn_for (LEFT, 90, DEGREES)
      	
      	while not left_bumper.pressed ():
      		drivetrain.drive (FORWARD)
      		wait(5, MSEC)
      		
      	drivetrain.drive_for (REVERSE, 300, MM)
      	drivetrain.turn_for (LEFT, 90, DEGREES)
  • Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • Adicionar esses comandos orientará o Robô VR na direção certa para conduzir a letra ‘B.’À esquerda, o projeto de código Python que foi mostrado antes, terminando com o drivetrain.turn_for(ESQUERDA, 90, GRAUS). À direita, uma vista de cima para baixo do playground do Labirinto da Parede mostrando o Robô VR se moveu de acordo com o novo código, posicionado no corredor entre os marcadores A e 2 e agora está voltado para a parede inferior do playground.

     

  • Selecione o botão "Reset" para reiniciar o Playground e mover o Robô VR de volta para a posição inicial.
  • Agora que o Robô VR está orientado na direção correta, adicione os seguintes comandos abaixo do comando final turn_for , para conduzir o Robô VR até à letra 'B' no Wall Maze Playground. Certifique-se de que os comandos estão recuados corretamente no seu projeto.

    	while not left_bumper.pressed():
    		drivetrain.drive(FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.turn_for (RIGHT, 90, DEGREES)
    
    	while not left_bumper.pressed ():
    		drivetrain.drive (FORWARD)
    		wait(5, MSEC)
    		
    	drivetrain.stop()
  • Inicie o Wall Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • O robô VR agora dirigirá com a letra ‘B’ no Wall Maze Playground.

    Uma vista de cima para baixo do playground do Labirinto da Parede com o Robô VR posicionado sobre a letra B, no centro da parede esquerda do Playground. É pressionado contra uma parede, de frente para o topo do playground.

Mini Desafio

Neste desafio, o robô VR deve navegar até ao número '3' no Wall Maze Playground utilizando vários loops enquanto , comandos do grupo motopropulsor e o sensor de pára-choques.

Uma vista de cima para baixo do playground do Labirinto da Parede com o robô VR posicionado sobre o número 3. O número 3 está localizado no quadrante superior esquerdo do labirinto, acima de B e à direita, dentro de um canto criado por 3 paredes circundantes. O Robô VR é pressionado contra a parede abaixo do marcador 3, de frente para a parte inferior do playground.

Siga estas etapas para concluir o mini desafio:

  • Assista ao vídeo da solução abaixo e analise como o robô VR deve dirigir para concluir o mini desafio. No videoclipe abaixo, o Robô VR começa no local de partida e segue o mesmo padrão de dirigir até uma parede até que o para-choque seja pressionado e depois gire. O robô percorre o mesmo caminho para começar, que percorreu para dirigir até a letra B. No ponto de viragem para longe da parede, o robô vira à direita para continuar até o número 3. A partir desse ponto, ele avança e vira à esquerda duas vezes para contornar o próximo conjunto de paredes, passando pela letra B. Finalmente, o robô avança e vira à direita duas vezes para contornar as paredes finais para alcançar o número 3.

  • Crie um projeto adicionando ou removendo os comandos necessários ao projeto Unit4Lesson3 para levar o robô VR ao número ‘3’ no Wall Maze Playground.
  • Inicie o projeto para testar se funciona.
  • Se o projeto não for bem-sucedido, edite e tente novamente. Continue este processo até que o desafio seja concluído.
  • Assim que o robô de RV chegar com sucesso ao número ‘3’ no Wall Maze Playground, salve o projeto.

Parabéns! Você concluiu com sucesso o Desafio Labirinto da Parede!

Perguntas

Selecione uma ligação abaixo para aceder ao questionário da aula.

Google Doc / .docx / .pdf