Skip to main content

Controlador: Tank Drive Exploration - Python

Icono de la caja de herramientas del profesor Caja de herramientas para maestros : el propósito de esta sección

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 left_motor.set_velocity(), right_motor.set_velocity(), left_motor.spin(), right_motor.spin(), left_motor_speed = controller_1.axis3.position () y right_motor_speed = controller_1.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 sección de ayuda de Python en VEXcode V5.

El siguiente es un resumen de lo que los estudiantes harán en esta actividad:

  1. Explore el proyecto de ejemplo de Control de Tanques.
  2. Comprender el uso de la estructura de bucle infinito while True.
  3. ¡Completa el desafío Robo-Slalom!

Icono de consejos del profesor Consejos para profesores

Si esta es la primera vez que el estudiante usa VEXcode V5, puede acceder a muchos artículos útiles en la Biblioteca VEX.

Materiales requeridos:
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

Objetos del aula que se utilizarán como obstáculos

Icono de consejos del profesor 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 Autocompletar para ayudar con la sintaxis de Python. Puede notar una función de autocompletar cuando comience a escribir la instrucción. Use las teclas "Arriba" y "Abajo" para seleccionar el nombre que desee, luego presione "Tab" o (Intro/Retorno) en su teclado para hacer la selección. Para obtener más información sobre esta función, consulta el artículo de Python

VEXcode V5 con el inicio de un comando Drivetrain escrito a la izquierda y a la derecha, se muestra una lista desplazable de opciones de autocompletar para ese comando.

Esta actividad te dará las herramientas para programar tu Controller. 

  • Instrucciones de Python VEXcode V5 que se utilizarán en esta exploración:
    • left_motor.set_velocity()
    • right_motor.set_velocity()
    • left_motor.spin()
    • right_motor.spin()
    • controller_1.axis2.position()
    • controlador_1.axis3.position()
    • mientras que Verdadero: 
    • espera(5, SEGUNDOS)

Para obtener más información sobre cualquiera de las instrucciones, visite las  secciones de ayuda de Python en VEXcode V5. 

VEXcode V5 se muestra con el cuadro de herramientas abierto en el extremo izquierdo y el comando Ayuda para la unidad abierto en el extremo derecho. La Ayuda muestra la definición del comando e información sobre cómo se usa.

Paso 1: Empecemos a programar el controlador.

  • Seleccione Archivo y Abrir ejemplos.
  • Barra de herramientas VEXcode V5 con el menú Archivo abierto y Abrir ejemplos resaltados en un cuadro rojo. Abrir ejemplos es el cuarto elemento del menú debajo de Nuevo proyecto de bloques, Nuevo proyecto de texto y Abrir.
  • Desplácese por los diferentes proyectos de ejemplo. Seleccione el proyecto de ejemplo de Control de Tanque.

Proyectos de ejemplo en VEXcode V5 con un cuadro rojo alrededor del filtro de detección en la parte superior y el icono de proyecto de ejemplo de control de tanque en la parte inferior derecha.

  • Abra el proyecto de ejemplo Tank Control. El proyecto de ejemplo configura la transmisión y el controlador. El código se verá como el siguiente fragmento:

	# 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)

Haga lo siguiente en su cuaderno de ingeniería:

  1. Predecir lo que el proyecto hará con el Clawbot. Explique más que el hecho de que el proyecto utiliza al Controlador.
  2. ¿Cómo mueven los joysticks el robot? ¿Qué está haciendo el Clawbot?

Icono de la caja de herramientas del profesor Caja de herramientas para maestros - Respuestas

  1. 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. 
  2. 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.
  • Nombra el proyecto TankControl. Guarde, descargue y ejecute el proyecto Python TankControl.

El cuadro de diálogo Nombre del proyecto en VEXcode V5 lee Control de tanque y muestra que la ranura 1 está seleccionada.

  • Para obtener más información de ayuda, vea el video tutorial en VEXcode V5 que explica cómo descargar y ejecutar un proyecto.

Barra de herramientas en VEXcode V5 con un cuadro rojo alrededor del icono de tutoriales. La barra de herramientas muestra, de izquierda a derecha, el logotipo de V5, un icono de globo terráqueo, Archivo y, a continuación, Tutoriales.

  • 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

Icono de la caja de herramientas del profesor 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.

Si los estudiantes necesitan más ayuda para comprender el bucle infinito de while True, haga clic aquí.

​¿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:


	# 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)


¿Qué crees que pasaría si se ejecutara este programa? Discutan en grupo. Escribe tu predicción en el cuaderno de ingeniería.

Icono de la caja de herramientas del profesor 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.


	# 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)

¡Navega por un curso de slalom!

Icono de la caja de herramientas del profesor 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.

Un snowboarder está corriendo cuesta abajo en una pendiente cubierta de nieve, navegando a través de una serie de puertas rojas y azules colocadas en un patrón en zigzag

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

Una ilustración de un curso de slalom sobre nieve, con una etiqueta de 'Inicio' en la parte superior y una línea de meta en la parte inferior. Entre, un camino punteado en zigzag se entrelaza entre banderas azules y rojas alternas.

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?
     

Icono Motivar discusión 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.