lunes, 14 de noviembre de 2011

Trabajo Final de robótica: Robot Cosechador

Autor 
Patricio Bello Villalobos

Competencia
Aplica las Ciencias de la ingeniería.
Nivel 1: Implementa modelos simples de la ingeniería y de las ciencias básicas, en el desarrollo de software.

Descripción de la actividad: 
Se acerca el verano y en el fundo "la Aurora" se hacen las preparaciones para la cosecha anual. Mas, esta vez no serán sino robots los que realizarán la recolección.
 Su equipo ha sido contratado para diseñar y construir uno de los robots de la granja. Este robot ha de sacar los duraznos de los durazneros, para que otro los pueda recolectar. Sin embargo, debe dejar los manzanos intactos, pues su fruta - aún inmadura - debe ser recolectada luego del otoño.
 Además, se debe realizar una evaluación del funcionamiento y rendimiento del robot respecto a la distribución de arboles en la pista.

Solución: 
En conjunto con el grupo la solución que le dimos al problema fue dividir la actividad en tres subrutinas, llamadas sub avance, sub líneas y sub recolección, la primera en empezar y que es la que llama a las demás es sub avance, esta rutina consiste en hacer avanzar al robot a través de las cuatro líneas y registrar el tiempo, cuando cruza la última línea, se llama a la rutina líneas, y esta hace que el robot gire 180º y avance hacia la última línea que cruzo, justo en este punto cuando avanza después del giro, si el robot detecta negro(línea), llama a la rutina Recolección, la cual consiste en girar 90º izquierda para ir al primer árbol, al llegar a él, el robot comprueba si el alrededor del árbol es negro, si es así, bota la fruta, sino, no hace nada y simplemente retrocede y gira 180º para ir al árbol opuesto de la línea, al llegar a él, nuevamente comprueba si es negro su alrededor, si en este caso lo es, bota la fruta y retrocede al medio de la línea y gira 90º izquierda para quedar en dirección hacia la próxima línea, aquí es cuando se termina la rutina recolección y se pasa nuevamente a la rutina líneas, que hace avanzar al robot hacia la siguiente línea, y al detectarla nuevamente se llama a la rutina recolección. Todo esto está controlado por los contadores que son: árbol y línea, al contador línea se le suma uno al pasar cada línea en la rutina avance y sirve para detener la rutina cuando alcanza valor 4, y al contador árbol se le suma uno por cada caja que detecte en la rutina recolección y se usa para terminar el programa entero una vez que alcanza el valor de 8. 


Estrategia diseño:

En cuanto al diseño del robot, se presentaron algunos inconvenientes entre las tareas que realizaría y la estructura del robot, principalmente en el brazo pudimos observar que necesitaba ciertos ajustes, además de las ruedas, tratando de minimizar el espacio para no entorpecer el funcionamiento. Para la realización de las tareas, implementamos ajustes tales como un eje único trasero, el cual le daba un giro más rápido, además de la posición y forma del brazo de cosecha, que se puede apreciar en la parte superior del ladrillo, dándole la altura del árbol y evitando que sea un estorbo en el movimiento normal del robot, además el moto que ejecuta el movimiento del brazo está ubicado de lado sobre el ladrillo, esto hace que el brazo gire en torno al robot, como las hélices de un helicóptero, asegurando el éxito en la cosecha, sin tocar el árbol, junto con todas estas medidas, pudimos asegurar un correcto diseño, para una correcta ejecución de las tareas a programar.


Aplicación de Física

1.-Velocidad Robot para un MRU.          

                Para esta primera parte de Física en el Proyecto Final, hemos de calcular la velocidad de nuestro robot según una potencia de programación específica.
 La potencia utilizada por nuestro robot fue de 50 y a su vez esta, fue utilizada en una rutina para registrar los tiempos, así se logro obtener los siguientes datos:

Tiempo(s)
Distancia(m)
0
0
2,88
0,72
4,12
1,01
6,06
1,47
               
                Graficando los datos obtenidos se obtienen una línea recta, y aplicando sobre los puntos la regresión lineal se obtiene la ecuación que describe este movimiento y desde ella se desprende el valor de la velocidad media del MRU.
 dssd
y = 0,242x + 0,007
R² = 0,999






Una vez hecho el grafico se obtiene la siguiente ecuación:

 
 
y = 0,242x + 0,007





                En ella, “y” representa la distancia y “x” representa el tiempo, con esta ecuación podemos determinar la posición final del robot después de un determinado tiempo, siempre que para este MRU, la potencia de programación sea 50.
                Una vez obtenida la ecuación que describe el movimiento, comprobamos la calidad del ajuste de la recta por medio del cálculo de r2, arrojándonos el siguiente valor:
 
              
                                                       R² = 0,999





                El cual es un resultado muy óptimo, que garantiza que la ecuación resultante se aproxima bastante a la realidad y por lo cual es muy confiable para la realización de experimentos y actividades, ya que su exactitud es muy completa.

                Finalmente, según la ecuación de itinerario de los MRU ( x(t)= v*t + x0 ), la velocidad media viene indicada por lo que acompaña al “x” (y = 0,242x - 0,007), por lo tanto la velocidad media de nuestro robot es:
 
 
Vmedia=0,242m/s






2.-Determinacion de Distancias en MRU.

                Para la segunda parte de la aplicación de Física, se debe determinar las distancias recorridas usando los tiempos registrados y la velocidad media obtenida en la sección anterior.
Utilizando la ecuación obtenida anteriormente:
y = 0,242x + 0,007




                Podemos determinar la distancia desde la primera línea hasta la segunda, tercera y cuarta reemplazando “x” por cada tiempo obtenido para cada línea, donde “y” representaría la distancia.

Calculo de distancias

Línea
Tiempo(s)
1ºLinea
0
2ºLinea
2,88
3ºLinea
4,12
4ºLinea
6,06
 

0,242*2,88 + 0,007 = 0,703
0,242*4,12 + 0,007 = 1,004
0,242*6,06 + 0,007 = 1,473

 
Tiempo(s)
D.calculada(m)
D.Real(m)
1ºLinea
0
0
0
2ºLinea
2,88
0,703
0,72
3ºLinea
4,12
1,004
1,01
4ºLinea
6,06
1,473
1,47

                Observando la tabla comparativa podemos concluir que las distancias calculadas en base a la ecuación de itinerario obtenida son muy cercanas a las distancias reales, por lo que la ecuación usada es muy útil para el cálculo de distancias de nuestro robot.


Pseudocódigo de la solución:

Línea=0

Encender sensores de luz y tacto

Sub Avance ()

{ Mientras (línea sea menor a 4)

{ Avanzar con potencia 50

Si (detecta negro)

{ Línea++

Registrar tiempo (de línea a línea) } //cierre Si

} //cierre Mientras

Llamar sub Líneas

}//cierre Avance



Sub Líneas ()

{ Girar 180°

Mientras (arboles sea menor que 8)

{ Avance

Si (detecta negro)

{ Sub Recolección () }//cierre Si

}//cierre del mientras

}//cierre modo Líneas





Sub Recolección ()

{ Girar 90° izquierda

Mientras (sensor de tacto no detecte árbol) // sea igual a 0

{ Avanzar } // Cierre del mientras

Si (detecta árbol)

{ Sumar uno a los arboles

Detenerse

Si (detecta negro)

{Botar fruta} //mover motor b



Retroceder a la mitad

Girar 180°

Mientras (sensor de tacto no detecte árbol) // sea igual a 0

{ Avanzar } // Cierre del mientras

Si (detecta árbol)

{ Sumar uno a los arboles

Detenerse

Si (detecta negro)

{Botar fruta} //mover motor b

} // cierre if de segundo árbol en una línea

Retroceder a la mitad.

Girar 90° izquierda

} // Cierre del if primer árbol en una línea

} // Cierre del modo recolección.





Reflexión: Este trabajo nos obligo a una retroalimentación de todos los contenidos anteriores y a un análisis detallado, para llegar a la resolución del problema, dentro los cuales están el uso de los sensores del robot, su posición y uso correcto, también el diseño del robot es muy importante a la hora de ejecutar una tarea, ya que de él depende el correcto funcionamiento, aun si el código de programación esta correcto, cualquier falla de diseño afectara el funcionamiento del robot, también pusimos evidenciar el uso de operaciones físicas y matemáticas dentro de robot, para obtener distancias que luego pueden ser almacenadas en variables para ser usadas o simplemente mostradas al usuario para un posterior calculo, también se jugó todo en el código, siendo de una estructura compleja, viendo necesaria la utilización de sub rutinas, para evitar las confusiones de señales en el robot, y poder llegar al resultado final, el cual para nuestro grupo fue satisfactorio, el robot realizo a actividad en un 90%, mostrando solo un pequeño problema en la posición y ajuste de giro, lo cual con pruebas puede solucionarse en un 100%.

No hay comentarios:

Publicar un comentario