Skip to main content

Lección 3: Uso de sensores y el electroimán para colocar un disco en el objetivo

Adición del sensor de distancia al proyecto

En la Lección 2, el robot de realidad virtual retrocedió hasta el punto de partida para dejar el disco. Esto requería que el usuario calculara la distancia exacta que debía recorrer el robot de realidad virtual. Esto no siempre es posible. En cambio, el VR Robot puede usar los valores del sensor informados para recoger y soltar discos con una precisión constante. 

En esta lección, el sensor de distancia se utilizará para determinar dónde debe dejar de conducir el robot de realidad virtual cuando regrese a la meta. Este sensor informa la distancia desde el frente del robot VR hasta el objeto más cercano usando el comando get_distance Para usar el sensor de distancia para conducir el robot VR de regreso al objetivo, debe suceder lo siguiente: 

  • El robot VR deberá girar 180 grados para que el sensor de distancia quede orientado el objetivo. El comando turn_to_heading puede utilizar para garantizar que el robot VR gire hacia la dirección correcta.
  • El robot VR utilizará el sensor de distancia con la pared posterior del patio de recreo para determinar dónde dejar caer el disco. 
  • El robot VR conducirá a la meta. 
Una vista en perspectiva del robot de realidad virtual en el patio de juegos del desplazador de discos en la ubicación del primer disco azul, con el disco conectado al electroimán. La portería azul está detrás del robot.

Para su información

El comando turn_to_heading gira el robot VR hacia un rumbo específico utilizando el sensor giroscópico. La dirección en la que girará el robot VR (izquierda o derecha) se determina en función del rumbo actual del sensor giroscópico. Vaya al comando de encabezado VEXcode VR Python, lee el guión bajo del punto de la transmisión para subrayar el encabezado, con 90, y los grados entre paréntesis.

El comando turn_to_heading se utiliza para dirigir el robot VR a un rumbo específico independientemente de la posición del robot VR. A medida que levanta o deja caer un disco, el robot de realidad virtual puede desviarse de su curso. El uso del comando turn_to_heading garantiza que el robot VR girará a la posición absoluta en lugar de a una posición relativa al rumbo anterior.

Una vista de arriba hacia abajo del robot de realidad virtual en el centro de un círculo que ilustra los encabezados del robot. En la posición de las 12 en punto, alineada con la parte delantera del robot, está a 0 grados. El rumbo corre en el sentido de las agujas del reloj alrededor del círculo, con 90 grados en la posición de las 3 en punto, 180 grados en la posición de las 6 en punto y 270 grados en la posición de las 9 en punto.

Continuar construyendo el proyecto 

  • Seguir trabajando en el  proyecto Unit8Lesson3.
  • Agregue un comando turn_to_heading después del tercer comentario. Establezca el parámetro en 180 grados, para que el proyecto ahora se vea así: 

    def main():
        #1. Conduzca hasta el primer disco
        sin down_eye.near_object (): drivetrain.drive
            (FORWARD)
            wait(5, MSEC)
        drivetrain.stop()
    
        # 2. Recoge el primer disco
        magnet.energize(BOOST)
    
        # 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
    
        # 4. Suelta el disco en la meta
  • Ahora que el Robot VR está orientado hacia la meta, el Robot VR tendrá que conducir de vuelta a la meta. Agregue un bucle while debajo del comando turn_to_heading , para que la tercera sección del proyecto se vea así: 

    	# 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
        mientras la condición:
            espera(5, MSEC)
  • Para volver a la meta, el robot VR utilizará los datos del sensor de distancia para determinar cuándo el robot VR está dentro de la meta. Como se discutió en la lección anterior, cada cuadrado de cuadrícula en el Disk Mover Playground mide 200 milímetros (mm) por 200 milímetros (mm).Una vista cercana de la esquina inferior izquierda del patio de recreo, que muestra que cada cuadrado de la cuadrícula de 10 por 10 en el piso del patio de recreo mide 200 mm por 200 mm.
  • Usando esas medidas, se puede determinar que el centro de la meta está aproximadamente a 200 milímetros (mm) de la pared del patio de recreo.

    Una vista de cerca de la esquina inferior izquierda de Disk Mover Playground. El robot VR tiene un disco azul conectado al electroimán y está frente a la portería azul. Una medida desde la pared trasera del patio de recreo hasta el centro de la portería azul está etiquetada como 200 milímetros.
  • El robot VR debe conducir mientras el sensor de distancia informa que el robot VR está a más de 200 milímetros (mm) de la pared del patio de recreo. Establezca la condición del bucle while en el comando get_distance con el parámetro milímetros (mm). A continuación, añada el operador de comparación a más de (>) 200. La tercera sección del proyecto ahora debería verse así: 

    	# 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
        mientras front_distance.get_distance(MM) > 200:
            espere(5, MSEC)
  • Agregue un comando drive en este bucle while , para que la tercera sección del proyecto se vea así. Esto indicará al robot VR que avance mientras el sensor de distancia informa una distancia superior a 200 milímetros (mm).

    	# 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
        mientras front_distance.get_distance(MM) > 200:
            drivetrain.drive(ADELANTE)
            espere(5, MSEC)
  • Una vez que el robot VR haya alcanzado la meta (a 200 mm de la pared), el robot VR deberá dejar de conducir. Agregue un comando stop fuera del bucle  while , de modo que la tercera sección del proyecto se vea así:

    	# 3. Conduzca hasta la meta
        drivetrain.turn_to_heading(180, GRADOS)
        mientras quefront_distance.get_distance (MM) > 200:
            drivetrain.drive(FORWARD)
            espere(5, MSEC)
        drivetrain.stop()
  • Ahora que el robot VR está detenido en la portería, puede soltar el disco. Agregue un comando energizar debajo del cuarto comentario y configure el parámetro en 'DROP'. La cuarta sección del proyecto ahora debería verse así:

    	# 4. Suelte el disco en la meta
        magnet.energize(DROP)
  • El robot VR tendrá que conducir en reversa una corta distancia para evitar que se caiga o colisione con cualquier disco. Colisionar con un disco podría desviar al robot de realidad virtual de su curso. El robot VR tendrá que girar para que quede de cara a los discos una vez más. Agregue los siguientes comandos después del comando final energizar como se muestra, para indicarle al robot VR que conduzca en reversa durante 100 milímetros (mm) y regrese a un rumbo de 0 grados. Asegúrese de que los comandos tengan sangría correctamente en su proyecto.

    	# 4. Deje caer el disco en el imán
        demeta.energize (DROP
    
    	) 	drivetrain.drive_for (REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, GRADOS)
  • Abra Disk Mover Playground si aún no está abierto y ejecute el proyecto.
  • El robot VR avanza, recoge el primer disco y luego gira a un rumbo de 180 grados para enfrentar la meta. El robot VR utiliza los valores del sensor de distancia para determinar cuándo dejar de conducir y soltar el disco.

    Una vista lateral de la portería azul del Disk Mover Playground, con el primer disco azul caído en la portería, y el VR Robot girado y posicionado en la parte delantera de la portería, listo para recoger el siguiente disco.

Flujo del proyecto para soltar el primer disco en el objetivo

Observe cómo funciona el bucle mientras con el sensor de distancia en esta parte del proyecto.

  • El robot VR avanzará mientras el sensor de distancia esté a más de 200 milímetros de la pared.
  • Cuando el sensor de distancia detecta que la pared del patio de juegos está a menos de 200 milímetros (mm) de distancia, el proyecto pasará al siguiente comando fuera del bucle mientras y el robot VR dejará de moverse.
  • El proyecto continuará, para energizar el electroimán para colocar el disco en la meta.
  • Luego, el robot VR retrocederá y girará 180 grados para estar listo para enfrentar el siguiente disco.

Seleccione el botón Siguiente para continuar con el resto de esta lección.