Implementacion subrutinas NXC


Actividad:
El proyecto consistió en crear  con la ayuda de un robot lego proporcionado por la entidad educacional, un robot cosechador el cual debe de identificar y cosechar las frutas que se       encuentran en los árboles y posteriormente volver a su lugar de origen.



Trabajo final de Robótica:
Robot cosechador.
The hackers
Robert Calbul Y: jefe de grupo.
Angelo Alarcón R: Productor Multimedia.
Marcela Parra P: Secretaria.
Javier Herrera H: Staff  de Apoyo.

Enunciado de actividad
El proyecto consistió en crear  con la ayuda de un robot lego proporcionado por la entidad educacional, un robot cosechador el cual debe de identificar y cosechar las frutas que se       encuentran en los árboles y posteriormente volver a su lugar de origen.
Estrategia de trabajo  Aquí se explica qué actividades realizó cada integrante del grupo
     El jefe de grupo en conjunto con los demás integrantes y apoyados por las explicaciones dadas por el profesor, se creó el código fuente del robot.
     El secretario además de ir aportando ideas a la construcción del código, fue tomando nota de los avances logrados, y en cada clase se encargaba de recordar lo visto en las semanas anteriores.
    El Productor multimedia, además de aportar con ideas para el código, se encargó de registrar audiovisualmente el trabajo realizado.
     El Cargo de apoyo, se encargó de aportar ideas para la estructuración del código, ayuda en todo lo que el grupo necesite, como por ejemplo a tomar fotografías en el diseño del robot si faltaban piezas o también ponía atención cuando el profesor daba alguna instrucción..
    La forma en que se llegó a la solución del problema presentado.
Cada árbol tuvo a su alrededor, en el caso de tener frutos maduros y aptos para ser recolectados, una línea negra que el sensor de luz tuvo que detectar, junto con el sensor touch, para poner en acción las pinzas y cosechar el fruto.
Fue instalado además el sensor de tacto, el robot llegó donde el árbol, lo tocó y se detuvo para realizar el proceso de detectar, si la línea que rodea al cubo que simula el árbol es negra o no. En caso de detectar recogía el fruto y lo depositaba a su lado.
Lo Primero que se le debía ordenar al robot era que avanzara recorriendo todo el campo pasando todas las líneas negras y a medida que avance vaya registrando los tiempos en los que pasa por cada línea.
    A medida que se fue programando el robot, se pudo lograr en primera instancia que obedeciera la orden de avanzar por la línea negra sin salir. Se debió ir probando cada uno de los sensores para poder aplicar todas las órdenes para el robot, sin errores producidos por sensores, luego de comprobar el éxito del sensor de luz, fue   probado el de tacto que tuvo resultados óptimos.
 

    Y una explicación efectiva de la solución planteada tomando en cuenta diseño físico y lógico, en lenguaje natural, acompañado de diagramas explicativos
    Lo Primero que se le debía ordenar al robot era que avanzara recorriendo todo el campo pasando todas las líneas negras y a medida que avance vaya registrando los tiempos en los que pasa por cada línea.
    A medida que se fue programando el robot, se pudo lograr en primera instancia que obedeciera la orden de avanzar por la línea negra sin salir. Se debió ir probando cada uno de los sensores para poder aplicar todas las órdenes para el robot sin errores producidos por sensores.
Se siguió con la Programación para que luego de avanzar recorriendo toda la meza y contando los tiempos, avanzara hasta detectar la primera línea negra, la siguiera hasta llegar al primer árbol, en el caso de que detectara borde negro, ejecutara las ordenes y cosechara el fruto, en el caso de que no detectara nada se devolviera por la misma línea negra derecho hasta llegar al siguiente árbol.
    Luego del segundo árbol el robot debía avanzar nuevamente en busca de una nueva línea negra y volver a repetir el proceso de pasar por los dos árboles, cosechando en caso de que el árbol corresponda al fruto que tenga que cosechar.
e.e

 

                                Link Programa Completo Formato .nxc              
                              http://www.megaupload.com/?d=WC0UEAE0      

Psudocodigo:
definir variable

sub treewhite()
{
 mientras(sensor luz detecta blanco)
 {
   si(sensor touch activo)
  {
    girar 180º
    avanzar
   }
   si(sensor luz detecta blanco)
    {
       avanzar
    }
 }
}

sub cosecha()
{
  mientras(2)
  {
    si(sensor luz detecta blanco)
      {
        avanzar
       }
       si (sensor touch activo)
       {
         apagar motores
        activar garra
        desactivar garra
        volver a posiocion inicial garra
         retroceder
         girar 180º
          avanzar
         }
   }
}

sub conteolinea()
{  a=1;
   b=1;
   Emitir un sonido al comenzar;
   Setear motores;
   while (sensor de luz < umbral)
          {
             Avanzar a una velocidad x;
             if (umbral < 40)
                  {
                     if(a=1)
                        {
                          iniciar el conteo del tiempo entre líneas;
                          Mostrar los resultados en pantalla;
                            }
                    
                         else {
                                    Iniciar tiempo1;
                                    Mostrar en pantalla tiempo;
                                      }
                                      a=a+1;
                                      b=b+1;
                                      Esperar;
                     if(a= =5)
                       {
                         Avanzar por medio segundo;
                         Giro de 150ºizquierda;
                         Avanzar;
                         Esperar;
                         Girar a la derecha (enderezar con línea negra;
                         iniciar subrutina treewhite();
                         iniciar subrutina cosecha();
                           
                          }
               esperar
                }
        }
}


task main()
{
 setear sensore;
 mientras sea verdad
    {
      iniciar subrutina principal conteolinea();
      }
}

Entradas más populares de este blog

Convertir decimal a binario, octal y hexadecima

Crear servicio web en Visual C# (WebService)