Skip to main content

Lição 2: Dirija para os Próximos Discos

Dirija para os discos azuis

O projeto anterior tem o Robô VR virando à direita quando o Sensor de Olho Frontal detecta um disco verde, que levou o Robô VR através do primeiro passo no labirinto. Agora, continuaremos a desenvolver o projeto para que o robô VR seja direcionado para os quatro primeiros discos no Disk Maze Playground.

Olhando para onde o robô VR está voltado depois de virar à direita no disco verde, podemos ver que, para navegar para os próximos três discos azuis, o robô VR deve avançar e virar à esquerda em cada disco azul. Podemos usar a mesma lógica do loop enquanto com a condição e não para que o robô VR continue a conduzir pelo labirinto e vire à esquerda quando deteta um disco azul.Vista de cima para baixo do playground do labirinto de discos. O robô no primeiro disco verde voltado para a direita em direção ao primeiro disco azul. Setas pretas são mostradas para saber como o robô precisará se mover. Isso indica que o robô estará dirigindo para o disco azul, virando à esquerda, dirigindo para um segundo disco azul, virando à esquerda e parando em um terceiro disco azul.

  • Adicione outro comentário abaixo de turn_for no projeto existente para descrever os próximos comportamentos do robô de RV. O seu projeto deve ter este aspeto:
def main():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect(GREEN):
        drivetrain.drive(FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for(RIGHT, 90, DEGREES)

    # Drive to 2nd disk (blue), turn left
  • Abaixo do novo comentário, adicione outro ciclo while com uma condição not. Defina a condição para o comando detect e defina os parâmetros para "AZUL", uma vez que o próximo disco que o Robô VR irá encontrar é azul.
    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect(BLUE):
        wait(5, MSEC)
  • Dentro do ciclo while , arraste ou digite o comando drive sem espera. 
    # Dirija para o 2º disco (azul), vire à esquerda
    enquanto não estiver no FRONT_EYE.DETECT (AZUL)
        :drivetrain.drive (FORWARD)
        aguarde(5, MS)
  • Arraste ou digite um comando turn_for e defina os parâmetros para virarem 90 graus para a esquerda.
    # Dirija para o 2º disco (azul), vire à esquerda
    enquanto não estiver na FRENTE_EYE.DETECT (AZUL
        ): DRIVETRAIN.DRIVE (FORWARD)
        wait(5, MSEC

    )drivetrain.turn_for (LEFT, 90, DEGREES)
  • Execute o projeto para ver como o robô VR se move através do Disk Maze Playground.Vista de cima para baixo do robô VR no Disk Maze Playground com uma seta preta indicando que o robô irá dirigir para o disco verde diretamente em frente ao local de partida, vire à direita, avance para o disco azul, vire à esquerda e pare de dirigir.
    • Observe que o Robô VR vira à direita quando o Sensor de Olho Frontal detecta um disco verde e vira à esquerda quando o Sensor de Olho Frontal detecta um disco azul.
  • Continue a construir este projeto para conduzir o Robô VR para mais dois discos azuis no Disk Maze Playground usando o Sensor de Olho Frontal. Adicione comandos ao projeto, navegue pelo Robô VR para os próximos dois discos e pare. O seu projeto completo deve agora ter este aspeto:
def main():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect (GREEN):
        drivetrain.drive (FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for (RIGHT, 90, DEGREES)

    # Drive to 2nd disk (blue), turn left
    while not front_eye.detect (BLUE):
        drivetrain.drive (FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for (LEFT, 90, DEGREES)

    # Drive to 3rd disk (blue), turn left
    while not front_eye.detect (BLUE):
        drivetrain.drive (FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for (LEFT, 90, DEGREES)

    # Drive to 4th disk (blue), turn left
    while not front_eye.detect (BLUE):
        drivetrain.drive (FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for (LEFT, 90, DEGREES)

Identificando um padrão nos movimentos do robô de RV

O objetivo de navegar com sucesso no Labirinto de Disco com o Sensor de Olho Frontal é criar um padrão consistente em que o Robô VR vire à direita quando o Sensor de Olho Frontal detecta um disco verde e à esquerda quando o Sensor de Olho Frontal detecta um disco azul. Identificar padrões como este pode ajudá-lo a simplificar os seus projetos à medida que crescem em complexidade.

Vista de cima para baixo do playground do labirinto de discos. O robô está no local de partida. As setas indicam o caminho que o robô Vr seguirá, mostrando o avanço para o primeiro disco verde, virando à direita, dirigindo para o disco azul, virando à esquerda, dirigindo para um segundo disco azul, virando à esquerda e parando em um terceiro disco azul.

Para sua informação

Observe que também há um padrão na sequência de comandos no projeto. Há uma série de comandos (para os discos azuis) que são repetidos três vezes no projeto. Esta secção do código pode ser condensada utilizando um ciclo para . O projeto aqui mostrado combina estes três ciclos while relacionados com os discos azuis num único ciclo for.

def main():
    # Drive to 1st disk (green), turn right
    while not front_eye.detect (GREEN):
        drivetrain.drive (FORWARD)
        wait(5, MSEC)

    drivetrain.turn_for (RIGHT, 90, DEGREES)

    # Drive to the next 3 disks (blue), turn left
    for value in range(3): 
        while not front_eye.detect (BLUE):
            drivetrain.drive (FORWARD)
            wait(5, MSEC)

        drivetrain.turn_for (LEFT, 90, DEGREES)

A utilização de um ciclo para pode tornar o seu projeto mais simples e mais facilmente legível, mas contendo os comandos repetitivos dentro de um ciclo.

  • Abra o Disk Maze Playground, se ainda não estiver aberto, e execute o projeto.
  • Assista ao robô VR navegar para quatro discos no Disk Maze Playground.

    Vista de cima para baixo do playground do labirinto de discos. O robô está no local de partida. As setas indicam o caminho que o robô VR seguirá, mostrando a unidade para frente até o primeiro disco verde, virando à direita, dirigindo para o disco azul, virando à esquerda, dirigindo para um segundo disco azul, virando à esquerda e parando em um terceiro disco azul. Uma caixa vermelha está no disco azul final indicando o local final.
  • Neste projeto, o Robô VR avança até que o Sensor do Olho Frontal detecte a cor verde.
    • O robô VR gira para a direita 90 graus e avança novamente até que a cor azul seja detectada.
    • O Robô VR então vira à esquerda e avança até que o Sensor do Olho Frontal detecte o azul. Assim que a cor azul for detectada, o robô VR vira à esquerda novamente.
    • Finalmente, o Robô VR avança até que o Sensor do Olho Frontal detecte o azul e pare.
  • Observe o padrão que quando o Sensor de Olho Frontal detecta verde, o Robô VR vira à direita. Quando o Sensor de Olho Frontal detecta azul, o Robô VR vira à esquerda neste projeto.

Selecione o botão Seguinte para continuar com o resto desta lição.