Skip to main content
Portal do Professor

Ligação com a competição: ponto de viragem - Python

Turning Point Campo de Competição de Robótica VEX com elementos de jogo e áreas de pontuação nas posições iniciais para o início da partida. Ao longo da parede traseira existe uma rede com uma série de bandeiras invertíveis à sua frente.
VRC 2018-2019 Ponto de Viragem Campo

Capacidades do Robô

O jogo Turning Point da VEX Robotics Competition 2018-2019 exigia que os jogadores alternassem as bandeiras entre outros elementos do jogo. Havia nove bandeiras no total: três bandeiras inferiores que podiam ser acionadas pelo robô e as seis bandeiras altas que só podiam ser acionadas atingindo-as com peças de jogo de bola de competição. As equipas de competição precisavam de encontrar uma forma de acertar nas bandeiras mais altas utilizando um lançador de bola. Se conseguir imaginar, programar o robô para acertar nas bandeiras usando peças do jogo da bola por medição pode nem sempre ser preciso. Se o robô fizer uma curva errada durante o período autónomo, existe a possibilidade de nenhuma das bandeiras ser atingida porque os cálculos estariam errados. Da mesma forma, para o desafio Driving Skills, pode ser difícil para as equipas alinhar manualmente o robô o suficiente para lançar a bola corretamente. Assim, as equipas qualificadas programariam o robô utilizando o Sensor de Visão para detetar bandeiras e depois alinhariam o robô adequadamente para fazer disparos precisos.

Ícone Amplie a sua aprendizagem Amplie o seu aprendizado

Para expandir esta atividade, peça aos seus alunos que elaborem e esbocem um projeto que fará com que o robô se mova em direção a objetos amarelos detetados que poderiam utilizar neste jogo de competição!
Peça aos seus alunos para fazerem o seguinte:

  • Abra o projeto de modelo Clawbot (transmissão, 2 motores, sem giroscópio).

    VEXcode V5 Exemplo de seleção de projeto com o filtro de modelo selecionado na parte superior e o ícone do projeto Clawbot Drivetrain 2 sem giroscópio destacado numa caixa vermelha.

  • Utilize o projeto de exemplo Detecting Objects (Vision) como referência ao programar o Vision Sensor. Utilize o projeto de exemplo Detecting Objects (Vision) como referência ao programar o Vision Sensor (Google Doc / .v5python).
  • Adicione o sensor de visão à configuração do Clawbot (transmissão, 2 motores, sem giroscópio) e, em seguida, configure o sensor de visão para detetar objetos vermelhos e azuis. Consulte o artigo Configurar o sensor de visãoe para obter mais informações.

    Janela de dispositivos VEXcode V5 aberta com as opções para adicionar um dispositivo mostradas. A janela indica Selecione um dispositivo e a opção Visão é realçada com uma caixa vermelha. Outras opções incluem controlador, transmissão, motor e 3 fios.

  • Programe o Clawbot para se mover em direção ao objeto detetado. O Clawbot pode até ser programado para levantar o braço como se fosse agitar uma bandeira!
  • Transfira e execute o para observar se o Sensor de Visão consegue detetar objetos amarelos, como as bolas amarelas do jogo VRC Turning Point. Se o Sensor de Visão conseguir detetar objetos, o robô move-se com base nesses objetos detetados? Para obter ajuda para descarregar e executar um projeto, consulte este artigo.
  • Se o tempo permitir, configure um campo de jogo semelhante ao campo Turning Point. Pratique a utilização do Sensor de Visão para permitir que o robô se mova para marcar pontos!

Veja o exemplo de solução abaixo:

# Biblioteca importa
da importação vex *

# Inicia código do projecto

check_yellow = Event()

def check_yellow_callback():
    brain.screen.set_font(FontType.MONO40)
    brain.screen.clear_row(3)
    brain.screen . set_cursor (3, 1)
    vision_5_objects = vision_5.take_snapshot (vision_5__YELLOWBOX)

    if (vision_5_objects):
        arm_motor.spin_for (FORWARD, 300, DEGREES)
        grab_motor.spin_for (FORWARD, 100, DEGREES)
        drivetrain.drive_for (FORWARD , 12, POLEGADAS)
        arm_motor.spin_for(REVERSE, 300, DEGREES)
        Claw_motor.spin_for(REVERSE, 100, DEGREES)
    
    else:
        brain.screen.print("No Yellow Object")

# event handlers do sistema
check_yellow (check_yellow_callback)

# pequeno atraso para garantir que os manipuladores de eventos estão prontos para serem utilizados
wait(15, MSEC)

# executa constantemente para verificar novos dados do sensor
while True:
    check_blue.broadcast_and_wait( )
    wait(105, MSEC)