Conjunto Principal MINDSTORMS EV3

Faça um Carro Autônomo

Projete um veículo autônomo que siga comandos de direção definidos pelo usuário.

120+ min.
Intermediário
Ensino Médio
roaming-vehicles-gps

Plano de aula

Preparar

  • Leia o material do professor.
  • Se você sentir que é necessário, planeje uma aula usando o material do guia de introdução no Software EV3 ou aplicativo de programação. Isso ajudará seus alunos a se familiarizarem com o LEGO® MINDSTORMS® Education EV3.

Envolver (30 min.)

  • Use as ideias da seção Iniciar uma Discussão abaixo para envolver seus alunos em uma discussão relacionada a esta aula.
  • Explique o projeto.
  • Divida sua turma em equipes de 2 alunos.
  • Permita que seus alunos tenham um tempo para terem ideias.

Explorar (30 min.)

  • Faça com que seus alunos criem múltiplos protótipos.
  • Incentive-os a explorarem a montagem e programação.
  • Faça com que cada dupla de alunos monte e teste 2 soluções.

Explicar (60 min.)

  • Peça que seus alunos testem suas soluções e escolham a melhor.
  • Certifique-se de que eles conseguem criar suas próprias tabelas de teste.
  • Permita que cada equipe tenha tempo para finalizar seu projeto e coletar dados para documentar seus trabalhos.

Elaborar (60 Min.)

  • Dê a seus estudantes algum tempo para produzirem seus relatórios finais.
  • Facilite uma sessão de compartilhamento em que cada equipe apresente seu resultado.

Avaliar

  • Dê feedback sobre o desempenho de cada aluno.
  • Você pode utilizar as rubricas de avaliação fornecidas para simplificar o processo.

Iniciar uma Discussão

Hoje, há muitos sistemas de navegação usados em carros. Alguns desses sistemas estão assumindo a responsabilidade dos motoristas para levar passageiros em segurança aos seus destinos. Antes de descobrir a melhor rota entre os pontos A e B, carros autônomos devem ser capazes de executar uma série de movimentos baseados em informações inseridas pelo usuário.

roaming-vehicles-gps

Incentive um processo de geração de ideias ativo.
Peça que seus alunos reflitam sobre essas questões:

  • O que são carros autônomos e como eles funcionam?
  • Onde os carros autônomos obtêm suas rotas?
  • Que movimentos os carros precisam executar a fim de se moverem através de uma série de ruas de uma cidade em uma grade norte, sul, leste, oeste?

Dê aos seus alunos algum tempo para responderem essas perguntas:

Incentive seus alunos a documentarem suas ideias iniciais e explicarem porque eles escolheram a solução que irão usar em seus primeiros protótipos. Peça a eles que descrevam como eles irão avaliar suas ideias durante o projeto. Dessa forma, quando eles estiverem analisando e revisando, eles terão informações específicas que poderão usar para avaliar sua solução e decidir se foi eficaz ou não.

Pseudocódigo é uma excelente ferramenta para ajudar alunos a organizarem seus pensamentos antes de começarem a programar

Dicas de Montagem

Comece montando um veículo: Seus alunos podem usar qualquer modelo de base de direção LEGO® MINDSTORMS® EV3 sugerido ou projetar seu próprio modelo. Certifique-se de que há acesso fácil aos botões no topo do Bloco EV3. Eles serão usados para controlar a direção nessa atividade.

ev3-robot-driving-base

Dicas de Programação

Explique a seus alunos que eles vão programar seus robôs para se moverem de acordo com um conjunto gravado de instruções dadas a ele através de botões no bloco EV3. Use esses parâmetros:

  • Botão Superior pressionado: o robô move-se 30 cm para frente
  • Botão Inferior pressionado: o robô move-se 30 cm para trás
  • Botão Esquerdo pressionado: o robô vira-se 90 graus para esquerda
  • Botão Direito pressionado: o robô vira-se 90 graus para direita

Gravando Uma Ação para Fazer o Robô se Mover

coding-08-01

Explicação do Programa

  1. Iniciar o programa.

  2. Crie um Bloco de Variável chamado “Dirigir”.

  3. Espere por um botão de bloco ser pressionado.

  4. Reproduza o som “Click 2”.

  5. Registre o valor numérico do botão pressionado na variável “Dirigir”.

  6. Espere 2 segundos.

  7. Reproduza o som “G02”.

  8. Leia o número armazenado na variável “Dirigir” e envie o valor para uma Comutação.

  9. Comutação numérica:

    a. Se Dirigir = 0 (caso padrão), não faça nada.
    b. Se Dirigir = 1, faça o robô fazer uma curva para a esquerda.
    c. Se Dirigir = 3, faça o robô fazer uma curva para a direita.
    d. Se Dirigir = 4, mova o robô em linha reta para frente por 2 rotações da roda.
    e. Se Dirigir = 5, mova o robô em linha reta para trás por 2 rotações da roda.

  10. Reproduza o som “Game Over 2”.

Gravando Múltiplas Ações para Fazer o Robô se Mover

O Bloco de Operações de Matriz é usado para armazenar uma sequência de dados. É frequentemente descrito como uma tabela que consiste de uma única linha com múltiplas colunas.

coding-08-02

Explicação da Solução

  1. Iniciar o programa.
  2. Crie um Bloco de Variável chamado “Dirigir”. Escolha a opção “Escreva Matriz Numérica”.
  3. Crie um Ciclo. O código de exemplo está definido para executar 5 vezes.
  4. Espere por um botão de bloco ser pressionado.
  5. Reproduza o som “Click”.
  6. Leia o Bloco de Variável “Dirigir”. Escolha a opção “Leia Matriz Numérica”.
  7. Use o Bloco de Operações de Matriz. Escolha “Escrever no Índice - Numérico”.

a. Conecte o Bloco de Variável “Dirigir”.
b. Conecte o índice do Ciclo a partir da frente do Ciclo até o local do índice no Bloco de Operações de Matriz.
c. Conecte o valor do bloco Espere por Botão EV3 no local do valor no Bloco de Operações de Matriz.

  1. Escreva a saída do Bloco de Operações de Matriz no Bloco de Variável “Dirigir”.
  2. Espere 2 segundos.
  3. Reproduza o som “Go”.
  4. Crie um segundo Ciclo. O código de exemplo está definido para executar 5 vezes, o mesmo número de vezes que o primeiro Ciclo.
  5. Leia o Bloco de Variável “Dirigir”. Escolha a opção “Leia Matriz Numérica”.
  6. Use o Bloco de Operações de Matriz. Escolha a opção “Ler no Índice - Numérico”.
  7. Comutação numérica:

a. Se Dirigir = 0 (caso padrão), não faça nada.
b. Se Dirigir = 1, faça o robô fazer uma curva para a esquerda.
c. Se Dirigir = 3, faça o robô fazer uma curva para a direita.
d. Se Dirigir = 4, mova o robô em linha reta para frente por 2 rotações da roda.
e. Se Dirigir = 5, mova o robô em linha reta para trás por 2 rotações da roda.

  1. Reproduza o som “Game Over 2”.

Abas “1” e “2”

Soluções de Programa EV3 MicroPython

Gravando Uma Ação para Fazer o Robô se Mover

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Wait until one of the command buttons is pressed.
while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
    wait(10)

# Store the pressed button as the drive command.
drive_command = brick.buttons()[0]
brick.sound.file(SoundFile.CLICK)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the drive command.  Depending on which
# button was pressed, drive in a different way.

# The robot turns 90 degrees to the left.
if drive_command == Button.LEFT:
    robot.drive_time(100, -90, 1000) 

# The robot turns 90 degrees to the right.
elif drive_command == Button.RIGHT:
    robot.drive_time(100, 90, 1000)

# The robot drives straight forward 30 cm.
elif drive_command == Button.UP:
    robot.drive_time(100, 0, 3000) 

# The robot drives straight backward 30 cm.
elif drive_command == Button.DOWN:
    robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Gravando Múltiplas Ações para Fazer o Robô se Mover

#!/usr/bin/env pybricks-micropython

from pybricks import ev3brick as brick
from pybricks.ev3devices import Motor
from pybricks.parameters import Port, Stop, Button, SoundFile
from pybricks.tools import wait
from pybricks.robotics import DriveBase

# The Left, Right, Up, and Down Buttons are used to command the robot.
COMMAND_BUTTONS = (Button.LEFT, Button.RIGHT, Button.UP, Button.DOWN)

# Configure 2 motors with default settings on Ports B and C.  These
# will be the left and right motors of the Driving Base.
left_motor = Motor(Port.B)
right_motor = Motor(Port.C)

# The wheel diameter of the Robot Educator Driving Base is 56 mm.
wheel_diameter = 56

# The axle track is the distance between the centers of each of the
# wheels.  This is 118 mm for the Robot Educator Driving Base.
axle_track = 118

# The Driving Base is comprised of 2 motors.  There is a wheel on each
# motor.  The wheel diameter and axle track values are used to make the
# motors move at the correct speed when you give a drive command.
robot = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)

# Pressing a button stores the command in a list.  The list is empty to
# start.  It will grow as commands are added to it.
drive_command_list = []

# This loop records the commands in the list.  It repeats until 5
# buttons have been pressed.  This is done by repeating the loop while
# the list contains less than 5 commands. 
while len(drive_command_list) < 5:
    # Wait until one of the command buttons is pressed.
    while not any(b in brick.buttons() for b in COMMAND_BUTTONS):
        wait(10)

    # Add the pressed button to the command list.
    drive_command_list.append(brick.buttons()[0])
    brick.sound.file(SoundFile.CLICK)

    # To avoid registering the same command again, wait until the Brick
    # Button is released before continuing.
    while any(brick.buttons()):
        wait(10)

# Wait 2 seconds and then play a sound to indicate that the robot is
# about to drive.
wait(2000)
brick.sound.file(SoundFile.GO)
wait(1000)

# Now drive the robot using the list of stored commands.  This is done
# by going over each command in the list in a loop.
for drive_command in drive_command_list:
    # The robot turns 90 degrees to the left.
    if drive_command == Button.LEFT:
        robot.drive_time(100, -90, 1000) 

    # The robot turns 90 degrees to the right.
    elif drive_command == Button.RIGHT:
        robot.drive_time(100, 90, 1000)

    # The robot drives straight forward 30 cm.
    elif drive_command == Button.UP:
        robot.drive_time(100, 0, 3000) 

    # The robot drives straight backward 30 cm.
    elif drive_command == Button.DOWN:
        robot.drive_time(-100, 0, 3000)

# Play a sound to indicate that it is finished.
brick.sound.file(SoundFile.GAME_OVER)
wait(2000)

Extensões

Extensão de Linguagem e Literatura

Opção 1
Usando Programação Baseada em Texto:

  • Faça seus alunos explorarem soluções de programação baseadas em texto para que eles possam comparar diferentes linguagens de programação.

Opção 2
Nessa aula, seus alunos criaram um carro sem motorista que opera de acordo com as instruções dadas a ele em uma matriz. E se os carros sem motorista do futuro pudessem ser programados para anular as entradas de seus motoristas humanos?
Para incorporar habilidades de desenvolvimento de linguagem, faça com que seus alunos:

  • Escrevam uma argumentação sustentando a afirmação de que os carros sem motorista não devem ser capazes de controlar autonomamente sua velocidade, apesar da entrada de passageiros
  • Incluam evidências específicas para sustentar a validade desse argumento, citando exemplos de situações em que isso poderia deixar o passageiro em desvantagem
  • Certifiquem-se de abordar o contra-argumento de que o controle de velocidade autônomo por carros sem motorista pode ser uma estratégia eficaz para aumentar a segurança do motorista ou do trânsito

Extensão de Matemática

Nessa aula, seus alunos criaram uma sequência de instruções curva-a-curva (“turn-by-turn”) para um carro sem motorista. Usando sensores e machine learning, os carros sem motorista podem seguir instruções e modificar a execução dessas instruções com base em novas condições.
Para incorporar o desenvolvimento de habilidades matemáticas e explorar as aplicações do machine learning para carros sem motorista, dê aos seus alunos um "orçamento" de um certo número de curvas. Depois, faça com que eles:

  • Criem uma grade representando ruas da cidade (p.ex., cinco ruas que vão de leste a oeste e cinco ruas de norte a sul)
  • Escolham um ponto de partida e destino · Tendo em mente que o percurso com menos curvas representa o melhor caminho, analisem três cruzamentos entre o ponto de partida e o destino
  • Determinem a probabilidade de o veículo chegar ao destino "abaixo do orçamento" em um sentido aleatório

Oportunidades de Avaliação

Lista de Observações do Professor
Crie uma escala que corresponda com suas necessidades, por exemplo:

  1. Concluído parcialmente
  2. Concluído completamente
  3. Além do esperado

Use os seguintes critérios de sucesso para avaliar o progresso dos seus alunos:

  • Os alunos conseguem identificar os elementos fundamentais de um problema.
  • Os alunos são autônomos ao desenvolverem uma solução que funciona e é criativa.
  • Os alunos conseguem comunicar com clareza suas ideias.

Autoavaliação
Uma vez que seus alunos tenham coletado alguns dados de desempenho, dê a eles tempo para refletirem nas soluções. Ajude-os fazendo perguntas como:

  • Sua solução está obedecendo os critérios do Resumo do Projeto?
  • Os movimentos do seu robô podem ser mais precisos?
  • Quais foram as formas com as quais os outros solucionaram esse problema?

Peça que seus alunos tenham ideias e documentem duas maneiras através das quais eles poderiam melhorar suas soluções.

Feedback por Pares
Incentive um processo de “Feedback por Pares” no qual cada grupo seja responsável por avaliar seu próprio projeto e os dos outros. Esse processo de revisão pode ajudar os alunos a desenvolver habilidades em dar feedback construtivo, assim como aprimorar suas habilidades de análise e a habilidade de usar dados objetivos para dar suporte a um argumento.

Conexões de Carreira

Os alunos que gostaram dessa aula podem ter interesse em explorar essas carreiras:

  • Negócios e Finanças (Empreendedorismo)
  • Manufatura e Engenharia (Pré-engenharia)

Suporte ao Professor

Os alunos irão:
Usar o processo de projeto para resolver um problema do mundo real

BNCC
(EM13LP34) Produzir textos para a divulgação do conhecimento e de resultados de levantamentos e pesquisas – texto monográfico, ensaio, artigo de divulgação científica, verbete de enciclopédia (colaborativa ou não), infográfico (estático ou animado), relato de experimento, relatório, relatório multimidiático de campo, reportagem científica, podcast ou vlogcientífico, apresentações orais, seminários, comunicações em mesas redondas, mapas dinâmicos etc. –, considerando o contexto de produção e utilizando os conhecimentos sobre os gêneros de divulgação científica, de forma a engajar-se em processos significativos de socialização e divulgação do conhecimento.
(EM13LP35) Utilizar adequadamente ferramentas de apoio a apresentações orais, escolhendo e usando tipos e tamanhos de fontes que permitam boa visualização, topicalizando e/ou organizando o conteúdo em itens, inserindo de forma adequada imagens, gráficos, tabelas, formas e elementos gráficos, dimensionando a quantidade de texto e imagem por slide e usando, de forma harmônica, recursos (efeitos de transição, slides mestres, layouts personalizados, gravação de áudios em slides etc.).
(EM13CNT301) Construir questões, elaborar hipóteses, previsões e estimativas, empregar instrumentos de medição e representar e interpretar modelos explicativos, dados e/ou resultados experimentais para construir, avaliar e justificar conclusões no enfrentamento de situações-problema sob uma perspectiva científica.
(EM13MAT405) Utilizar conceitos iniciais de uma linguagem de programação na implementação de algoritmos escritos em linguagem corrente e/ou matemática.
(EM13MAT406) Construir e interpretar tabelas e gráficos de frequências com base em dados obtidos em pesquisas por amostras estatísticas, incluindo ou não o uso de softwares que interrelacionem estatística, geometria e álgebra.

Material do aluno

Planilha do Aluno

Download to view and share the student worksheet.

Download, view or share the student worksheet, either as an online HTML page or a printable PDF

Compartilhar com:

Google ClassroomGoogle Classroom
LEGO, the LEGO logo, the Minifigure, DUPLO, the SPIKE logo, MINDSTORMS and the MINDSTORMS logo are trademarks and/or copyrights of the LEGO Group. ©2020 The LEGO Group. All rights reserved. Use of this site signifies your agreement to the terms of use.