Skip to main content

Controlador: Exploração de Tank Drive - Python

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - O objetivo desta secção

A utilização do projeto de exemplo Tank Control permite que os alunos controlem o Clawbot utilizando o Controller. Os alunos terão de ajustar os parâmetros em left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position() e right_motor_speed = controller_1. () instruções para controlar a velocidade de cada um dos motores do Clawbot e permitir que o controlador controle as funções do motor.

Para mais informações sobre qualquer uma das instruções, visite a secção de ajuda do Python no VEXcode V5.

A seguir, é apresentado um esboço do que os alunos farão nesta atividade:

  1. Explore o projeto de exemplo Tank Control.
  2. Compreender a utilização da estrutura while True de ciclo infinito .
  3. Completa o desafio Robo-Slalom!

Ícone de dicas para professores Dicas para professores

Se esta for a primeira vez que o aluno utiliza o VEXcode V5, poderá aceder a muitos artigos  úteis na Biblioteca VEX.

Materiais necessários:
Quantidade Materiais necessários
1

VEX V5 Classroom Starter Kit (com firmware atualizado)

1

VEXcode V5 (versão mais recente, Windows, macOS)

1

Caderno de Engenharia

1

Exemplo de projeto de controlo de tanque

2 ou mais

Objetos de sala de aula para serem utilizados como obstáculos

Ícone de dicas para professores Dicas para professores a utilizando o preenchimento automático

O preenchimento automático é uma funcionalidade do VEXcode V5 que prevê o resto do comando que está a escrever. À medida que os alunos trabalham no VEXcode V5, incentive-os a utilizar a funcionalidade Autocomplete para ajudar com a sintaxe do Python. Poderá notar uma função de preenchimento automático ao começar a digitar a instrução. Utilize as teclas “Para cima” e “Para baixo” para selecionar o nome pretendido e prima “Tab” ou (Enter/Return) no teclado para fazer a seleção. Para mais informações sobre esta funcionalidade, consulte o artigo Python

VEXcode V5 com o início de um comando Drivetrain digitado à esquerda e à direita, é mostrada uma lista de opções de preenchimento automático para este comando que pode ser percorrida.

Esta atividade dar-lhe-á as ferramentas para programar o seu Controlador. 

  • Instruções VEXcode V5 Python que serão utilizadas nesta exploração:
    • motor_esquerdo.set_velocity()
    • motor_direito.set_velocity()
    • motor_esquerdo. spin()
    • motor_direito. spin()
    • controlador_1. eixo2. posição()
    • controlador_1. eixo3. posição()
    • enquanto Verdadeiro: 
    • esperar(5, SEGUNDOS)

Para mais informações sobre qualquer uma das instruções, visite as secções Python help  no VEXcode V5. 

O VEXcode V5 é apresentado com a caixa de ferramentas aberta na extremidade esquerda e a Ajuda para o comando Drive aberta na extremidade direita. A Ajuda mostra a definição do comando e informação sobre a forma como é utilizado.

Passo 1: Vamos começar a programar o Controlador.

  • Selecione Ficheiro e Abrir Exemplos.
  • Barra de ferramentas VEXcode V5 com o menu Ficheiro aberto e Abrir exemplos destacados numa caixa vermelha. Abrir Exemplos é o quarto item de menu abaixo de Novo Desenho de Blocos, Novo Desenho de Texto e Abrir.
  • Percorra os diferentes projetos Exemplo. Selecione o projeto de exemplo Tank Control.

Projetos de exemplo no VEXcode V5 com uma caixa vermelha à volta do filtro Sensing na parte superior e o ícone do projeto de exemplo Tank Control no canto inferior direito.

  • Abra o projeto de exemplo Tank Control. O projeto de exemplo configura o sistema de transmissão e o controlador. O código será semelhante ao seguinte excerto:
# Library imports
	from vex import *
	
	# Begin project code
	# Main Controller loop to set motors to controller axis postiions
	while True:
		left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
		right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
		left_motor.spin(FORWARD)
		right_motor.spin(FORWARD)
		wait(5, MSEC)

Faça o seguinte no seu caderno de engenharia:

  1. Preveja o que o projeto fará com que o Clawbot faça. Explique mais do que o facto de o projeto utilizar o Controlador.
  2. Como é que os joysticks movem o robô? O que está o Clawbot a fazer?

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - respostas

  1. Este projeto utilizará a estrutura de ciclo infinito while True para verificar continuamente onde estão as posições esquerda e direita do joystick. Quando o joystick esquerdo (ou direito) é empurrado para cima, a velocidade é definida de acordo com o avanço do joystick. 
  2. Assim, quanto mais para a frente o Joystick for empurrado, mais rápida será a velocidade definida e mais rápidos se moverão os motores. A mesma ideia funciona para empurrar o Joystick para trás. Quanto mais para trás o Joystick for empurrado, mais rapidamente os motores se moverão para trás.
  • Nomeie o projeto TankControl. Guarde, descarregue e execute o projeto Python TankControl.

A caixa de diálogo do nome do projeto no VEXcode V5 mostra Tank Control e mostra que o slot 1 está selecionado.

  • Para obter mais informações de ajuda, veja o vídeo tutorial no VEXcode V5 a explicar como descarregar e executar um projeto.

Barra de ferramentas no VEXcode V5 com uma caixa vermelha à volta do ícone Tutoriais. A barra de ferramentas mostra, da esquerda para a direita, o logótipo V5, um ícone de um globo, Ficheiro e Tutoriais.

  • Verifique as suas explicações do projeto no seu caderno de engenharia e adicione notas para as corrigir conforme necessário.

Passo 2: Controlador:  Controlo do Tanque

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - As estruturas de ciclos infinitos verdadeiros

Esta etapa discute a importância da estrutura de ciclo infinito while True . Deve rever as informações em classe. Pode modelar o comportamento com o seu Clawbot e Controller ou, se o tempo o permitir, fazer com que os alunos executem o programa sem a estrutura de ciclo infinito while True .

Se os alunos precisarem de mais ajuda para compreender o ciclo infinito while True , cliquem em.

Quais os benefícios da utilização da estrutura de ciclo infinito while True?

Eis o nosso projeto sem a estrutura de ciclo infinito while True:

# Library imports
	from vex import *
	
	# Begin project code
	# Main Controller loop to set motors to controller axis postiions
	
	left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
	right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
	left_motor.spin(FORWARD)
	right_motor.spin(FORWARD)


O que acha que aconteceria se este programa fosse executado? Discuta em grupo. Anote a sua previsão no caderno de engenharia.

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - Compreender a estrutura

Sem o ciclo infinito while True , o valor da velocidade para cada motor é definido assim que o projeto é executado e este valor permanece constante até que o projeto seja interrompido. Por outras palavras, se executar o projeto sem mover nenhum dos Joysticks, uma vez que a posição padrão do Joystick no seu eixo é 0, a velocidade de ambos os motores permanecerá em 0, mesmo que mova o Joystick.

Da mesma forma, digamos que move o joystick esquerdo para cima ao longo do eixo 3 e o mantém nessa posição. Se executar o projeto acima, o motor esquerdo move-se a toda a velocidade e permanece a essa velocidade mesmo que mova o joystick para baixo ao longo do eixo 3. Isto acontece porque o Clawbot recebe as suas instruções iniciais do Controlador assim que o projeto é executado; no entanto, sem um Loop, este valor inicial não pode ser atualizado.

O ciclo infinito while True indica ao Clawbot para atualizar constantemente a velocidade e executar durante o projeto. Por outras palavras, o loop infinito enquanto True , neste projeto, permite alterar a velocidade de cada motor movendo o Joystick ao longo do eixo 2 ou 3, e o Clawbot responderá em conformidade até que pare o projeto ou rodar fora do Clawbot.

# Library imports
	from vex import *
	
	# Begin project code
	# Main Controller loop to set motors to controller axis postiions
	while True:
		left_motor.set_velocity(controller_1.axis3.position(), PERCENT)
		right_motor.set_velocity(controller_1.axis2.position(), PERCENT)
		left_motor.spin(FORWARD)
		right_motor.spin(FORWARD)
		wait(5, MSEC)

Navegue num percurso de slalom!

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - Configurar a atividade

Organize os alunos em pequenos grupos de 2 ou 4 alunos. Um aluno deve ser designado como Condutor – a pessoa que utilizará o Controlador para manobrar o Clawbot.

Peça aos alunos que completem este slalom utilizando o Controlador para mover o Clawbot ao longo da parte exterior de cada “bandeira”. O caminho do Clawbot deve evitar que toque em qualquer bandeira e permitir-lhe cruzar a linha de chegada. As bandeiras podem ser qualquer material/objeto de sala de aula que tenha à mão (borracha, rolo de fita adesiva, caixa de lenços de papel) e podem ser colocadas antes de operar o Clawbot.

Se o tempo permitir, peça aos alunos que troquem de função para dar aos outros a oportunidade de conduzir o Clawbot. Pode até transformar isto numa competição dentro de grupos ou entre grupos, observando a rapidez com que cada piloto consegue navegar no slalom.

Um snowboarder está a descer uma colina coberta de neve, navegando por uma série de portões vermelhos e azuis posicionados em ziguezague

Os slaloms são percursos nos quais o participante deve navegar em torno das bandeiras ou marcadores definidos. Os slaloms de esqui são um desporto de inverno popular e estão incluídos nos Jogos Olímpicos de Inverno.
Agora que o Controller está emparelhado e o projeto Python foi descarregado, está pronto para mover o seu Clawbot utilizando o Controller!

  • Recolha junto do professor os quatro itens da sala de aula que irá utilizar como bandeiras no seu slalom.
  • Colabore para definir as bandeiras para o condutor navegar com o Clawbot, de acordo com o diagrama de slalom.
  • Descarregue o projeto Exemplo de controlo de tanque. Se houver alguma dúvida sobre como descarregar um projeto, consulte o tutorial Descarregar e executar um projeto.

Uma ilustração de uma pista de slalom na neve, com uma etiqueta 'Início' na parte superior e uma linha de chegada na parte inferior. No meio, um caminho pontilhado em ziguezague serpenteia entre bandeiras azuis e vermelhas alternadas.

Utiliza o controlador para mover o teu Clawbot ao longo da parte exterior de cada “bandeira”. A trajetória do robô deve evitar que este toque em qualquer bandeira e permitir-lhe cruzar a linha de chegada.

  • Executa o projeto e conduz o Clawbot para a frente e para trás, e vira à esquerda e à direita utilizando os dois Joysticks.
  • Cronometre quanto tempo demora o Clawbot a completar o curso. Documente os tempos no caderno de engenharia.
  • Quão rápido consegues fazer o Clawbot passar pelo percurso de Slalom?
     

Ícone Motivar Discussão Motivar a Discussão - Refletir sobre a Atividade

P: O Clawbot respondeu ao Controlador como esperava?

A: As respostas variam; no entanto, o objetivo desta questão é promover o pensamento cognitivo. Os alunos começaram por prever os comportamentos antes de os testar, documentando os seus resultados e refletindo.

P: Qual é o maior desafio em mover o Clawbot para a frente ou para trás em linha reta?

R: Embora as respostas possam variar, uma resposta comum deve ser que ambos os Joysticks devem mover-se em sincronia um com o outro para garantir que os motores do Clawbot se movem na mesma direção e à mesma velocidade

P: Como utilizar o ciclo infinito while True permite utilizar continuamente o Controlador para mover o Clawbot?

A: Sem o ciclo infinito while True , o Clawbot executaria apenas uma vez os comportamentos determinados pelas instruções do projeto. O ciclo infinito while True indica ao Clawbot para atualizar constantemente a velocidade e executar durante o projeto. Por outras palavras, o ciclo infinito while True permite utilizar o controlador para mover o Clawbot indefinidamente ou até que a bateria se esgote.