{% load static %} {% load i18n %}
{% trans "Tiempo de estudio" %} | {% trans "Dificultad" %} | 2 {% trans "horas" %} |
{% trans "Contenido" %}
{% trans "En este ejercicio deberás programar nuestro robot GoPiGo para que sea capaz de seguir una línea negra pintada sobre un suelo blanco. El GoPiGo debe ser programado de forma que utilice sus sensores para obtener información del entorno continuamente, y sus actuadores para ejecutar las acciones necesarias para poder ir siguiendo el trazado de la línea de acuerdo a la información obtenida por los sensores." %}
{% trans "Para lograr este objetivo vas a necesitar aprender:" %}
{% trans "En una primera fase programarás el GoPiGo simulado en un mundo 3D, para poder ensayar haciendo cambios a tu programa hasta que consigas que siga el trazado de la línea con facilidad. Tras completar con éxito la primera fase, estarás listo para probar tu programa en el robot GoPiGo real !!!" %}
{% trans "Los sensores de infrarrojos son unos de los sensores imprescindibles en robótica. Además también vamos a poder encontrarlos en nuestro día a día." %}
{% trans "Un sensor de infrarrojos es un detector de un tipo de luz que nuestro ojo no es capaz de ver que es la luz infrarroja. Como ya sabréis la luz del sol, en su espectro visible (es decir, lo que el ojo humano es capaz de ver), está compuesta de diferentes colores, los que vemos en el arcoiris. Cada color se caracteriza por una frecuencia diferente de la radiación solar." %}
{% trans "Sin embargo, el sol no sólo emite radiación en esas frecuencias que nosotros vemos. Un intervalo de esas frecuencias es el infrarrojo, que se llama así porque si la viésemos estaría antes del rojo en el arcoiris." %}
{% trans "Un sensor de infrarrojos del tipo de los que usamos en robótica suele estar formado por dos partes:" %}
{% trans 'El sensor funciona de la siguiente manera. El emisor está constamente emitiendo luz infrarroja. Si esa luz "rebota" contra alguna superfície el detector la recibe y envía una señal eléctrica. Así es cómo podemos detectar obstáculos.' %}
{% trans "Los sensores de infrarrojos son muy económicos y sencillos de usar. ¡Están por todas partes!:" %}
{% trans "Uno de los usos más típicos de los sensores infrarrojos en robótica es la detección del color negro. Vamos a entender por qué." %}
{% trans "Como decíamos anteriormente el detector de luz infrarroja detecta la luz infrarroja que emitió el emisor y que ha rebotado en un objeto. Cuando ese objeto es de color negro, esa luz infrarroja emitida es absorbida completamente por el objeto negro y por lo tanto no rebota nada y nuestro receptor no recibe luz. Para el sensor infrarrojo un objeto negro es equivalente a que no haya objeto." %}
{% trans "Puede parecernos un fenómeno extraño, sin embargo estamos acostumbrados a ello. Pensad en qué ocurre cuando en verano bajo el sol abrasador nos vestimos de negro, nuestra ropa absorbe todo el calor. No es una idea refrescante vestirse de negro en el calor del verano." %}
{% trans "Pues de la misma manera que nuestra ropa negra absorbe el calor del sol, la línea negra absorbe la radiación infrarroja y hace que el receptor de nuestro sensor no detecte nada." %}
{% trans "Vamos a usar los 2 sensores de Infrarrojos (abreviado IR) que tiene el GoPiGo en su parte frontal apuntando al suelo, uno en la parte izquierda y otro en la parte derecha. Estos sensores son capaces de detectar si el suelo es oscuro (negro) o claro (blanco) por medio de la emisión/detección de rayos infrarrojos. Para ello, en el programa debes llamar a siguiente función:" %}
{% trans "Función" %} | {% trans "Descripción" %} |
{% trans "leer_ir()" %} | {% trans "Lee los dos sensores de IR y nos devuelve un valor entre 0 y 3" %} |
{% trans "El valor entre 0 y 3 que devuelve la función depende de las lecturas de los dos sensores de IR, de acuerdo a la siguiente tabla:" %}
{% trans "lectura IR izquierdo" %} | {% trans "lectura IR derecho" %} | {% trans "valor de leer_ir()" %} |
---|---|---|
{% trans "negro" %} | {% trans "negro" %} | 0 |
{% trans "negro" %} | {% trans "blanco" %} | 1 |
{% trans "blanco" %} | {% trans "negro" %} | 2 |
{% trans "blanco" %} | {% trans "blanco" %} | 3 |
{% trans "Estos cuatro valores que nos devuelve la función get_ir()
se corresponden con las siguientes situaciones del PiBot con respecto a la línea negra:" %}
{% trans "valor = 0" %} | {% trans "valor = 1" %} | {% trans "valor = 2" %} | {% trans "valor = 3" %} |
---|---|---|---|
{% trans "Vamos a usar los motores que incorpora el GoPiGo (uno en cada rueda motriz) para hacer que se mueva según nuestras necesidades. Para ello, en el programa debes llamar a las siguientes funciones:" %}
{% trans "Función" %} | {% trans "Descripción" %} |
---|---|
{% trans "avanzar" %}(v ) |
{% trans "Hace que el GoPiGo avance en línea recta con una velocidad lineal igual a v expresada en metros/segundo" %}
|
{% trans "retroceder" %}(v ) |
{% trans "Hace que el GoPiGo retroceda en línea recta con una velocidad lineal igual a v expresada en metros/segundo" %}
|
{% trans "girar_izquierda" %}(w ) |
{% trans "Hace que el GoPiGo gire a la izquierda sobre su eje (sin avanzar) con una velocidad angular igual aw expresada en radianes/segundo" %}
|
{% trans "girar_derecha" %}(w ) |
{% trans "Hace que el GoPiGo gire a la derecha sobre su eje (sin avanzar) con una velocidad angular igual aw expresada en radianes/segundo" %}
|
{% trans "NOTA:" %} {% trans "Recordamos que $2\pi$ radianes equivalen a 360 grados." %}
{% trans "Estas funciones se corresponden con los siguientes comportamientos del GoPiGo:" %}
{% trans "avanzar" %} | {% trans "retroceder" %} | {% trans "girar_izquierda" %} | {% trans "girar_derecha" %} |
---|---|---|---|
{% trans "Disponemos también de una última función, no por ello menos importante:" %}
{% trans "Función" %} | {% trans "Descripción" %} |
---|---|
{% trans "parar()" %} | {% trans "Hace que el GoPiGo se detenga (si estaba avanzando, retrocediendo o girando)" %} |
{% trans "Uno de los elementos básicos de cualquier lenguaje de programación es la posibilidad de tomar una decisión en función de un valor que se calcula. En python podemos hacerlo con la instrucción if" %}
{% trans "instrucción" %}
if {% trans "condición:" %}
{% trans "instrucción si se cumple la condición (True)" %}
else:
{% trans "instrucción si no se cumple la condición (False)" %}
{% trans "instrucción" %}
{% trans "Al terminar esta unidad ¡¡habrás programado uno de los comportamientos básicos de un robot: un siguelíneas!! Y habrás aprendido a trabajar con los sensores de infrarrojos y a programar tomas de decisiones en python." %}
{% trans "Nuestro ojo no puede percibir la luz infrarroja. Sin embargo las cámaras de los móviles sí suelen ser sensibles al espectro infrarrojo. Si enfocamos con la cámara del móvil un sensor de infrarrojo (que tenga emisor, claro) podemos ver en la imagen que se ve el emisor y la luz infrarroja, que la cámara del móvil pinta en color morado habitualmente." %}
{% trans "Haz la prueba y verás." %}