Controlador: Exploração de Tank Drive - Python
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:
- Explore o projeto de exemplo Tank Control.
- Compreender a utilização da estrutura while True de ciclo infinito .
- Completa o desafio Robo-Slalom!
| 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 |
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.

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.

Passo 1: Vamos começar a programar o Controlador.
- Selecione Ficheiro e Abrir Exemplos.

- Percorra os diferentes projetos Exemplo. Selecione o projeto de exemplo Tank Control.
- 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:
- Preveja o que o projeto fará com que o Clawbot faça. 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?
Caixa de ferramentas do professor
-
respostas
- 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.
- 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.
- Para obter mais informações de ajuda, veja o vídeo tutorial no VEXcode V5 a explicar como descarregar e executar um projeto.
- 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
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.
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!
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.
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.
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?
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.