Resolution basica butiá 2016

De Proyecto Butiá
Saltar a: navegación, buscar

Integrante

  • Federico Kauffman

Resolución del problema

Por cuestiones de tiempo solamente se implementó un seguidor de línea y se comenzó con la implementación para evitar obstáculos, sin embargo la solución se realizó de tal forma que el código fuera muy legible y amigable, aplicando mi experiencia laboral en Ruby, intenté lograr algo similar utilizando Python.

Butiá

El robot Butiá se ensamblo de tal forma que se pudiera implementar un seguidor de linea, para el mismo se utilizaron 4 sensores de grises y 2 sensores de distancia. Los sensores de gris se colocan de a pares uno a cada lado de la línea negra, esta disposición permite detectar ángulos rectos (o muy cerrados) con facilidad, ya que cuando ambos sensores de un mismo lado ven negro se detecta esta condición, además permite obtener un grado mas de seguridad ya que si los sensores más cercanos a la línea fallan los más lejanos podría detectar la misma y corregir.

Además se utilizan dos sensores para detectar objetos, uno en el frente del robot y otro al costado. Con esta disposición se logra ver un obstáculo frente al robot y luego con el sensor lateral rodear el mismo manteniendo una distancia predeterminada. También ya que no se se depende de tiempo se logra rodear obstáculos de tamaños variados.

Fk1.jpg Fk2.jpg Fk3.jpg Fk4.jpg

Código

La idea general es generar una API sobre sobre las primitivas que ya provee el Butiá, lo mismo se logró encapsulando las mayor cantidad de detalles de implementación en distintas clases, por ejemplo el comportamiento del robot se pueden encapsular en una clase Turn que provee los métodos left y right, el comportamiento de avanzar en una clase Move con métodos forward y backwards, etc.

Además se crearon clases que permite calibrar los sensores antes de ejecutar el programa que controla el robot, generando archivos con los valores determinados para su posterior uso, esto permite agilizar el uso del robot ya que no se lo debe calibrar cada vez y además se pueden tener varias calibraciones para diferentes escenarios.


Para ver el codigo completo ir a github.com/fedekau/robedu [1]