Controlador: Tank Drive Exploration - C++
Caja de herramientas para maestros
: el propósito de esta actividad
Usar el proyecto de ejemplo Tank Control permite a los estudiantes controlar el Clawbot usando el Controller. Los estudiantes deberán ajustar los parámetros en las instrucciones LeftMotor.setVelocity(), RightMotor.setVelocity(), LeftMotor.spin(), RightMotor.spin(), leftMotorSpeed = Controller1.Axis3.position() y rightMotorSpeed = Controller1.Axis2.position () para controlar la velocidad de cada uno de los motores del Clawbot y permitir que el controlador controle las funciones del motor.
Para obtener más información sobre cualquiera de las instrucciones, visite la ayuda en la sección C++ en VEXcode V5.
El siguiente es un resumen de lo que los estudiantes harán en esta actividad:
-
Explore el proyecto de ejemplo de Control de Tanques.
-
Comprender el uso de la estructura de bucle infinito while True.
-
¡Completa el desafío Robo-Slalom!
Consejos para profesores
Si esta es la primera vez que el estudiante usa VEXcode V5, puede acceder a muchos artículos útiles en la Base de conocimientos de VEX.
| Cantidad | Materiales necesarios |
|---|---|
| 1 |
Kit de inicio VEX V5 Classroom (con firmware actualizado) |
| 1 |
VEXcode V5 (última versión, Windows, macOS) |
| 1 |
Cuaderno de ingeniería |
| 1 |
Ejemplo de proyecto de control de tanques |
| 2 o más |
Elementos del aula que se utilizarán como obstáculos |
Consejos para maestros
-
Uso de autocompletar
Autocompletar es una función en VEXcode V5 que predice el resto del comando que está escribiendo. Mientras los estudiantes trabajan en VEXcode V5, anímelos a usar la función de autocompletar para ayudar con la sintaxis. El artículo de autocompletar cubre cómo usar la función de autocompletar.

Esta actividad te dará las herramientas para programar tu Controller.
Paso 1: Empecemos a programar el controlador.
- Abra el proyecto de ejemplo Tank Control.
-

Haga lo siguiente en su cuaderno de ingeniería:
prediga lo que hará el Clawbot en este proyecto. Explique más que el hecho de que el proyecto utiliza el controlador.
¿Cómo mueven los joysticks el robot? ¿Qué está haciendo el Clawbot?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; }
Caja de herramientas para maestros
-
Respuestas
- Este proyecto utilizará la estructura de bucle infinito while True para verificar continuamente dónde están las posiciones del joystick izquierdo y derecho. Cuando se empuja el joystick izquierdo (o derecho) hacia arriba, la velocidad se establece para la medida en que se empuja el joystick hacia adelante.
- Por lo tanto, cuanto más adelante se empuje el joystick, más rápido se establecerá la velocidad y más rápido se moverán los motores. La misma idea funciona para empujar el joystick hacia atrás. Cuanto más hacia atrás se empuje el joystick, más rápido se moverán los motores en reversa.
- Guarde, descargue y ejecute(C++) el proyecto de ejemplo de Tank Control.
-
Para obtener ayuda, consulta las secciones de la biblioteca VEX en C++ o consulta el tutorial en VEXcode V5 que explica cómo descargar y ejecutar un proyecto.

- Revise sus explicaciones del proyecto en su cuaderno de ingeniería y añada notas para corregirlas según sea necesario.
Paso 2: Controlador: Control del tanque
Teacher Toolbox
-
The while True Infinite Loop Structures
Este paso analiza la importancia de la estructura de bucle infinito while True. Debe revisar la información como clase. Puede modelar el comportamiento con su Clawbot y Controller, o si el tiempo lo permite, hacer que los estudiantes ejecuten el programa sin la estructura de bucle infinito while True.
¿Cuáles son los beneficios de usar la estructura de bucle infinito while True?
Aquí está nuestro proyecto sin la estructura de bucle 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);
}
¿Qué crees que pasaría si se ejecutara este programa? Discutan en grupo. Escribe tu predicción en el cuaderno de ingeniería.
Caja de herramientas para maestros
:
comprensión de la estructura
Sin el bucle while True infinito, el valor de la velocidad para cada motor se establece tan pronto como se ejecuta el proyecto, y ese valor permanece constante hasta que se detiene el proyecto. En otras palabras, si ejecuta el proyecto sin mover ninguno de los joysticks, porque la posición predeterminada del joystick en su eje es 0, la velocidad de ambos motores se mantendrá en 0, incluso si mueve el joystick.
Del mismo modo, digamos que mueves el joystick izquierdo hacia arriba hasta donde llegue a lo largo del eje 3 y lo mantienes allí. Si ejecuta el proyecto anterior, el motor izquierdo se moverá a toda velocidad y permanecerá a esa velocidad incluso si mueve el joystick hacia abajo a lo largo del eje 3. Esto se debe a que Clawbot recibe su instrucción inicial del controlador tan pronto como se ejecuta el proyecto; sin embargo, sin un bucle, ese valor inicial no se puede actualizar.
El bucle while True Infinite le dice al Clawbot que actualice constantemente la velocidad y corra durante la duración del proyecto. En otras palabras, el bucle infinito while True, en este proyecto, le permite cambiar la velocidad de cada motor moviendo el Joystick a lo largo del eje 2 o 3, y el Clawbot responderá en consecuencia hasta que detenga el proyecto o apague el Clawbot.
Paso 3: ¡Navega por un curso de slalom!
Caja de herramientas del maestro
-
Configurar la actividad
Organice a los estudiantes en grupos pequeños de 2 o 4 estudiantes. Un estudiante debe ser designado como el Conductor, la persona que utilizará el Controlador para maniobrar el Clawbot.
Haga que los estudiantes completen este slalom usando el controlador para mover el Clawbot a lo largo de la parte exterior de cada "bandera". La trayectoria del Clawbot debe evitar que toque cualquier bandera y permitirle cruzar la línea de meta. Las banderas pueden ser cualquier material/objeto del aula que tenga a mano (goma de borrar, rollo de cinta, caja de pañuelos) y se pueden colocar antes de operar el Clawbot.
Si el tiempo lo permite, haga que los estudiantes cambien de rol para dar a otros la oportunidad de conducir el Clawbot. Incluso podrías convertir esto en una competencia dentro de los grupos o entre grupos al ver lo rápido que cada conductor puede navegar por el slalom.

Los slaloms son cursos en los que el participante debe navegar alrededor de las banderas o marcadores establecidos. Los slaloms de esquí son un deporte de invierno popular y están incluidos en los Juegos Olímpicos de Invierno.
Ahora que el controlador está emparejado y el proyecto C++ está descargado, ¡está listo para mover su Clawbot usando el controlador!
- Recoge los cuatro elementos del aula que usarás como banderas en tu slalom del maestro.
- Colaborar para establecer las banderas en su lugar para que el conductor navegue por el Clawbot, de acuerdo con el diagrama de slalom.
- Descargue el proyecto de ejemplo de control de tanques. Si tiene alguna pregunta sobre cómo descargar un proyecto, consulte el tutorial Descargar y ejecutar un proyecto.
Paso 4: Robo-Slalom

Utilice el Controlador para mover su Clawbot a lo largo de la parte exterior de cada "bandera". La trayectoria del robot debe evitar que toque cualquier bandera y permitirle cruzar la línea de meta.
- Ejecute el proyecto e impulse el Clawbot hacia adelante y hacia atrás, y gire a la izquierda y a la derecha con ambos joysticks.
- Tiempo que tarda el Clawbot en completar el curso. Documente los tiempos en el cuaderno de ingeniería.
- ¿Qué tan rápido puedes hacer que Clawbot pase por el curso de Slalom?
Motivar la discusión
-
Reflexionar sobre la actividad
P: ¿El Clawbot respondió al controlador como esperaba?
R: Las respuestas variarán; sin embargo, el objetivo de esta pregunta es promover el pensamiento cognitivo. Los estudiantes comenzaron prediciendo comportamientos antes de ponerlos a prueba, documentando sus resultados y reflexionando.
P: ¿Cuál es el mayor desafío para mover el Clawbot hacia adelante o hacia atrás en línea recta?
R: Si bien las respuestas pueden variar, una respuesta común debe ser que ambos joysticks deben moverse en sincronía entre sí para garantizar que los motores del Clawbot se muevan en la misma dirección y a la misma velocidad
P: ¿Cómo el uso del bucle infinito while True le permite usar continuamente el Controller para mover el Clawbot?
R: Sin el bucle while True infinito, el Clawbot solo realizaría los comportamientos según lo determinado por las instrucciones en el proyecto una vez. El bucle while True Infinite le dice al Clawbot que actualice constantemente la velocidad y corra durante la duración del proyecto. En otras palabras, el bucle infinito while True le permite usar el Controller para mover el Clawbot indefinidamente, o hasta que la batería se agote.