Lección 3: Adición del sensor ocular inferior
En la lección anterior, el sensor de distancia se utilizó para determinar si el robot VR detectó un objeto o no y, de ser así, se dirigió hacia el objeto. Sin embargo, no se utilizaron valores de sensor para determinar si el robot VR estaba cerca del borde del patio de recreo para detenerlo. Detener el robot de realidad virtual cuando estaba cerca del borde del patio de recreo evitaría que se saliera del lado.
Tal como está, el proyecto repite los comportamientos de conducir hacia adelante y girar, para siempre. Sin embargo, no hay ninguna condición para verificar el borde rojo alrededor del patio de recreo. Por lo tanto, el robot de realidad virtual puede caerse del patio de recreo cuando se conduce hacia adelante.

Adición del sensor ocular inferior
Se necesita otro sensor para que el robot VR pueda determinar si está cerca del borde del patio de recreo o no. El sensor Down Eye se puede utilizar para determinar si el robot VR está cerca del borde del patio de recreo detectando el borde rojo alrededor del patio de recreo.
Los comportamientos de conducir hacia adelante y girar solo deben repetirse hasta que el sensor Down Eye informe que se detecta el borde rojo. De esta forma, el bucle infinito while se puede sustituir por un bucle while con una condición not , para repetir los comportamientos de avanzar y girar hasta que se cumpla la condición de detectar el borde rojo.
-
Cargue el proyecto Unit9Lesson2 de la lección anterior.
def main(): while True: # ¿El sensor de distancia detecta un castillo? if front_distance.found_object(): # Crash castle detected by Distance Sensor drivetrain.drive(FORWARD) else: # Gira para encontrar un castillo usando el Distance Sensor drivetrain.turn(RIGHT) wait(5, MSEC)
- Cambie el nombre del proyecto Unit9Lesson3.
-
Agregue un comentario para indicar cómo se utilizará el bucle mientras que con el sensor de ojo hacia abajo. Tu proyecto ahora debería verse así:
def main(): # Busca un edificio mientras no se detecta el borde rojo mientras es Verdadero: # ¿El sensor de distancia detecta un castillo? if front_distance.found_object(): # Crash castle detected by Distance Sensor drivetrain.drive(FORWARD) else: # Gira para encontrar un castillo usando el Distance Sensor drivetrain.turn(RIGHT) wait(5, MSEC)
-
Se necesita un comando para comprobar continuamente el sensor ocular inferior. El robot VR deberá repetir estos comportamientos mientras el sensor Down Eye no detecte el color rojo. Cambie la condición del bucle while colocando la palabra clave not delante de la condición. Tu proyecto ahora debería verse así:
def main(): # Busca un edificio mientras el borde rojo no se detecta mientras no es Verdadero: # ¿El sensor de distancia detecta un castillo? if front_distance.found_object(): # Crash castle detected by Distance Sensor drivetrain.drive(FORWARD) else: # Gira para encontrar un castillo usando el Distance Sensor drivetrain.turn(RIGHT) wait(5, MSEC)
-
A continuación, cambie la condición de Verdadero al comando down_eye.detect. Establezca el parámetro en 'ROJO'. Tu proyecto ahora debería verse así:
def main(): # Busca edificios mientras el borde rojo no se detecta mientras no está abajo.detect_eye.detect (RED): # ¿El sensor de distancia detecta un castillo? if front_distance.found_object(): # Crash castle detected by Distance Sensor drivetrain.drive(FORWARD) else: # Gira para encontrar un castillo usando el Distance Sensor drivetrain.turn(RIGHT) wait(5, MSEC)
- Abra el Dynamic Castle Crasher Playground si aún no está abierto y ejecute el proyecto. ¿El robot VR se comporta como pretendías?
-
Cuando se ejecuta este proyecto, el robot VR se dirigirá hacia un objeto detectado y girará a la derecha en caso contrario. Sin embargo, a pesar de que el sensor Down Eye está buscando el borde rojo, al robot VR no se le dice qué hacer una vez que detecta el rojo, por lo que continúa conduciendo y finalmente se cae del patio de recreo.
Una vez que se cumple la condición del bucle while , el flujo del proyecto se ejecutará fuera del bucle while.
Seleccione el botón Siguiente para continuar con el resto de esta lección.