Skip to main content

Controlador: Exploração de Tank Drive - C++

Ícone da caixa de ferramentas do professor Caixa de ferramentas do professor - O objetivo desta atividade

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 LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed=Controller1.Axis3.position(), e rightMotorSpeed = Instruções do Controller1.Axis2.position() para controlar a velocidade de cada um dos motores do Clawbot e permitir que o controlador controle as funções do motor.

Para obter mais informações sobre qualquer uma das instruções, visite a ajuda na secção C++  no VEXcode V5.

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

  • Explore o projeto de exemplo Tank Control.

  • Compreender a utilização da estrutura while True de ciclo infinito .

  • 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 Base de Conhecimentos 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

Projeto de exemplo de controlo de tanque

2 ou mais

Itens 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 . O artigo Autocomplete aborda a utilização da funcionalidade Autocomplete.

VEXcode V5 com a parte Drivetrain de um comando introduzido à esquerda e à direita, é mostrada uma lista de opções de preenchimento automático para esse comando que pode ser percorrida.

 

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

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

  • Abra o projeto de exemplo Tank Control .
  • Exemplo de ícone de projeto de um tanque posicionado acima de um comando de jogo, com o rótulo 'Tank Control' por baixo.

    Faça o seguinte no seu caderno de engenharia:

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

    
    	int main() {
    		// Initializing Robot Configuration. DO NOT REMOVE!
    		vexcodeInit();
    		// Begin project code.
    		
    		// Main Controller loop to set motors to controller axis positions
    		while (true) {
    		  LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
    		  RightMotor.setVelocity(Controller1.Axis2.position(), percent);
    		  LeftMotor.spin(forward);
    		  RightMotor.spin(forward);
    	  
    		  wait(5, msec);
    		}
    	  
    		return 0;
    	}
    

 

Í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.
  • Guarde, descarregue e (C++) o projeto de exemplo Tank Control .
  • Para ajuda, consulte as secções da Biblioteca VEX em C++ ou consulte o tutorial em VEXcode V5 que explica como descarregar e executar um projeto.

    Barra de ferramentas no VEXcode V5 com Tutoriais, à direita, destacada com uma caixa vermelha. À esquerda, a barra de ferramentas mostra um logótipo V5, um ícone de um globo, depois Ficheiro, Editar 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 Controlador ou, se o tempo o permitir, fazer com que os alunos executem o programa sem a estrutura de ciclo infinito while True .

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:


	int main() {
		// Initializing Robot Configuration. DO NOT REMOVE!
		vexcodeInit();
		// Begin project code.
		// Main Controller loop to set motors to controller axis postiions
		
		LeftMotor.setVelocity(Controller1.Axis3.position(), percent);
		RightMotor.setVelocity(Controller1.Axis2.position(), percent);
		LeftMotor.spin(forward);
		RightMotor.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.

Passo 3: 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 controlador está emparelhado e o projecto C++  foi , está pronto para mover o seu Clawbot utilizando o controlador!

  • 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.

Passo 4: Robo-Slalom

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 enquanto o 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 loop infinito enquanto True permite utilizar o Controlador para mover o Clawbot indefinidamente ou até que a bateria se esgote.