sábado, febrero 13, 2016

Con ojos de robot

¿Pueden ver los robots? Si miramos a mBot no dudaremos un segundo en responder afirmativamente porque está diseñado de forma tal que sus sensores frontales parecen tiernos ojitos. Sin embargo, más allá de la humanización, la forma en que funcionan los sensores no es necesariamente igual a como lo harían nuestros ojos y por lo tanto, para progamar el robot, tenemos que tener en cuenta algunas cositas…


Un sensor es un dispositivo capaz de detectar magnitudes (físicas o químicas) y transformarlas en variables eléctricas… que a los efectos de un robot podemos entenderlas como la información que utilizaremos para que el programa pueda tomar ciertas decisiones dependiendo de cuál sea la información en cuestión. Por ejemplo, si la información es que hay una pared por delante, entonces el programa ordenará que hay que frenar… digamos, si no queremos que se choque.

Los ultrasónicos
¿Pero de que forma pueden "ver" los robots? Lo hacen a través de los sensores, por supuesto. Hay sensores de diversas clases (no solo por su calidad y características generales) sino por el tipo de magnitudes que pueden detectar. Los sensores frontales de mBot que se ven claramente en la fotografía y parecen los ojos de su "cara" son, en rigor, sensores ultrasónicos, que no perciben la luz sino que “ven” sonido exactamente de la misma forma en que lo haría el “radar” de un murciélago. El sensor ultrasónico emite un sonido (inaudible para los humanos) que rebota sobre el objeto detectado por lo que recibe un eco. A continuación, el sensor mide la distancia a partir del tiempo en que el eco demoró en volver y convierte ese dato en información.

Para ensayar esta funcionalidad del sensor ultrasónico, preparé un pequeño programa que hace lo siguiente:


  1. Crea la variable “Distancia” de modo tal que el robot pueda guardar la información medida por el sensor (e indica que este esta conectado al puerto 3)
  2. Ordena que si esa distancia es menor a 20 cm el motor se detenga…
  3. Pero si la distancia es superior, el robot debe avanzar hacia adelante

Este es el código en su versión en MakeBlock para Scratch:



Y he aquí el resultado ¡el mBot puede “ver” la pared!




Line follower
Pero mBot tiene otro sensor más. En este caso no se trata de un sensor ultrasónico sino de un “line follower” o “seguidor de línea”. El “line follower” tiene dos “ojitos” que pueden detectar la luz. Las opciones son son solo dos: o ven luz, o no la ven. Estos “ojitos” esta ubicados debajo del robot.


Pero al estar alineados horizontalmente permiten al robot seguir una línea oscura tomando desiciones a partir de lo que pueden “ver”. 

Como confirmaremos a continuación el sistema es muy simple: si se apartaron de la línea negra "ven" luz a la derecha... o a la izquierda y de esa forman tendrán información importante para volver a la posición de seguimiento de la línea.

Para verificar si el sensor de línea funciona correctamente preparé este programita que hace lo siguiente:


  1. Crea la variable “status” de modo tal que el robot pueda guardar la información medida por el sensor (e indica que este esta conectado al puerto
  2. Si el ojito derecho del sensor ve luz, el parlante toca dos veces la nota “Do”
  3. Si es el ojito izquierdo del sensor el que ve luz, el parlante toda dos veces la no nota “Si”
  4. Consecuentemente si ninguno de los dos ojitos ve luz, por defecto, el parlante se mantiende en silencio.


Aquí pueden ver el código de bloques en el cual se ven muy claramente los "loops" para generar la señal de sonido (la nota está indicada en sistema de notación musical americano).



Vamos a probarlo sobre una “pista de línea” para ver como funciona:





Esta función es muy importante porque nos permitirá programar al robot para que pueda seguir un camino a partir de una línea negra trazada en el suelo… desafío del que, seguramente, les contaré más adelante.





No hay comentarios.: