viernes, 9 de diciembre de 2011

Robot cosechador

Autor: Gabriel Pereira
Competencia: Creatividad e Innovación.
Palabras Clave: Nxt, física, robótica.

Descripción: 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 (detalles en el resumen y pauta de informe final).



Estrategia de solución: 

Estrategia de trabajo (forma de trabajo):  En este informe final la idea o el concepto principal del trabajo era realizar una solución para el  Robot cocechador para esto tuvimos que trabajar arduamente para la realización del código y del diseño optimo del robot

Roles tomados Dentro del trabajo:

   -Gabriel Pererira: Asi como jefe de grupo se encargo en su mayoría de realizar el código del   programa, además Ayudo en la construcción del robot cocechador

   -Joel Cortez: Secretario Se encargo preferentemente de anotar todo tipo de apunte que era importante apollo ideas relevantes en la confeccion  del código y del robot en si.

   -Juan Navarrete: Productor multimedia, Inicialmente se encargo del diseño del robot para que Este fuera lo mas optimo relacionado también con el código del robot, Y finalmente es el encargado de capturar toda imagen y video que se sea relacionada con el robot cocechador

   -Fernando Meza: Staff de apollo, Ayudo con la confeccion primariamente del pseudocódigo, que bien siendo la estructura del código, y la  construcción del robot.
Diseño:
El Robot esta constituido de por 2 sensores y 3 motores los cuales presentaremos a continuación:

Sensor de luz: La misión de este sensor será detectar las líneas negras primariamente para medir los tiempos entre una y otra huincha negra, luego servirá para determinar si un árbol es de manzana o es de durazno, Debera recolectar solo los arboles que tienen hunichas negras asta el final que representan que dicho árbol es de durazno.

Sensor de tacto: Este sensor servirá para detectar Si el árbol es de durazno o manzana ya que si se activa este sensor osea avanza asta un punto el robot y choca y se activa entonces ara girar el motor 3 que hara que el cuadrado de madera que esta arriba(fruto) del cuadrado grando(árbol) lo bote en un movimiento Delicado y lento para no botar los demás frutos de los arboles de a un costado.
  
Motor A y B: Estos 2 motores son la base del robot y están conectados con 2 ruedas las cuales hacen que el robot se dirija a la parte que nosotros queramos tiene una potencia de 0 a 100.
Motor C: Es el encargado de hacer girar la garra la cual cosechara el fruto pero solo si este está maduro, este motor está compuesta por el motor y la garra. Se ubica al costado derecho del robot. 
Pantalla: La pantalla muestra los números y los cálculos de las distancias entre los arboles también muestra el numero de arboles cosechados, duraznos o manzanos. La pantalla se encuentra en el centro del robot.



Pseudocodigo:

//   Pseudocodigo Robot Recolector
//  Grupo NXC
//  Integrantes: -Joel Cortes
//               - Juan Navarrete
//               - Fernando Meza
//               - Gabriel Pereira
Definimos Constante de Umbral en 40 // Constante para el uso del sensor de luz
Definimos Variable Contador         // variable que cuenta las lineas negras
Definimos Variable Duraznos         // variable que cuenta los duraznos
Definimos Variable Manzanos         // variable que cuenta los manzanos
Definimos Variable Avance           // variable que va contando las lineas en el transcurso
Definimos Variable Arboles          // variable que suma los arboles en total
Sub Rutina Medicion de Tiempo()     // sub rutina para medir los intervalos de lineas negras
{                                   // llave de inicio
 Avanza;                           // avanza el robot
 Si (Encuentra punto negro)        // condicion si encuentra un punto negro
 {                                 // llave inicio condicion
   Muestra Tiempo;                 // imprime en pantalla el intervalo entra cada linea negra
   Contador += 1;                  // contador de lineas aumenta en uno
 }                                 // llave final de condicion
 Detenerse Al final;               // se detiene el robot al llegar al extremo
 Girar en 180°;                    // el robot gira en 180 grados
}                                   // llave final de la sub rutina
Sub Rutina Recoleccion()            // sub rutina para recolectar las frutas
{                                   // llave inicio sub rutina
 Avanza                            // el robot avanza
 Si(Encuentra punto negro)         // condicion si encuentra un punto negro
 {                                 // llave incicio condicion
   Sigue la linea;                 // sigue la linea negra encontrada
   Si(Sensor de Tacto Choca)       // condicion si el sensor de tacto choca
   {                               // llave inicio condicion
     Detiene;                      // el robot se detendra
     Si(Borde caja es negro)       // condicion si el borde de la caja es negro
     {                                          // llave inicio condicion
       Gira motor de movimiento de garra;       // el motor que controla la garra actuara removiendo la fruta
       Duraznos += 1;              // la variable que cuenta duraznos aumentara en uno
       Avance += 1;                // el avance aumentara en uno
     }                             // llave final condicion
   }                               // llave final condicion
 }                                 // llave final condicion
 Sino                              // condicion sino  sucede lo anterior
 {                                 // llave inicio sino
   Manzanos += 1;                  // los manzanos aumentaran en uno
   Retrocede;                      // el robot retrocedera
   Gira 90°;                       // y girara en 90 grados
   Avanza;                         // y volvera avanzar
 }                                 // llave final condicion sino
}                                   // llave final condicion si
Tarea Principal()                   // tarea principal
{                                   // llave inicio tarea principal
 Iniciar Sensor de Luz;            // inicia sensor de luz
 Iniciar Sensor de Tacto;          // inicia sensr de tacto
 Definimos Variable Contador en 0; // variable contador inicia en 0
 Definimos Variable Duraznos en 0; // variable contador inicia en 0
 Definimos Variable Avance en 0;   // variable contador inicia en 0
 Definimos Variable Manzanos en 0; // variable contador inicia en 0
 Definimos Variable Arboles en 0;  // variable contador inicia en 0
 Medicion de Tiempo();             // se inicia sub rutina medicion tiempo
 Mientras(Avance sea menor al Contador)  // ciclo si el avance es menor a el contador
 {                                       // llave inicio ciclo
   Recoleccion();                        // llama sub rutina recoleccion
   Arboles = Duraznos + Manzanos;        // arboles suma los duraznos y manzanos
   Si(Avance >= Contador)                // condicion si el avance es igual o mayor al contador
   {                                     // llave inicio condicion si
     Girar en 180°;                      // girara en 180 grados
     Avanzar;                            // avanzara
     Si(Arboles es mayor o igual a 8)    // condicion si los arboles son mayores a 8
     {                                   // llave inicio condicion si
       Detiene el programa;    // el robot se detiene
     }                                   // llave final condicion si
   }                                     // llave final condicion si
 }                                       // llave final ciclo
}                                         // llave final tarea

Aplicación de Física:
A continuación mostraremos los datos recopilados en el proyecto, gráficos con respecto a la parte física del proyecto.
Datos obtenidos a una potencia de 60.
Tiempo (S)
Distancia (M)
0
0
2,6
0,7
4,2
1
6,3
1,5





Velocidad  media de nuestro robot: 0,235 m/s
Fórmula para obtener  la distancia entre cada línea negra:
y = 0,235x + 0,028 
-          Reemplazamos nuestro tiempo en la ecuación.
y = 0,235x + 0,028
y = 0,235*2,6 + 0,028
y = 0,639
 0,639 seria la distancia estimada entra la 1° y 2° linea. 
     Entre la 2° y 3° línea.
y = 0,235*4,2 + 0,028
y = 1,015 
-          Entre la 3° y 4° línea.
y = 0,235*6,3 + 0,028
y = 1,5085


Video:

 Resumen:

En este proyecto final de robotica nosotros ademas de consolidarnos como grupo aprendimos a buscar multiples soluciones para un unico problema el cual nos servira para ramos de otros semestres. Todos como grupo hicimos todo en conjunto, todos armamos el robot y buscamos la mejor forma de adecuarlo para que sea mas faciles para armar el codigo el cual era muy complejo por las multiples partes de este proyecto pero con las subrutinas se nos hizo facil y todo arreglado mutuamente no hubo problema para poder llegar a la solucion la cual no funciono en el momento donde tenia que funcionar por problemas X, pero llegamos a un final como se muestra en el video mas satisfactorio y sin quedarnos con la duda de como podia llegar a funcionar, sino lo terminamos como se debia.



No hay comentarios:

Publicar un comentario