lunes, 14 de noviembre de 2011

"Proyecto de Robots"

Autor: Jorge Henriquez Romero
Competencia: Gestión en TI. (Nivel 1)
Palabras claves: NXT, programacion, Robot, Lego, Proyecto.



Descripción de la actividad
La actividad consistió en la creación y programación de un robot Lego NXT, el cual debía ser como lo determinara el grupo.
EL grupo en el cual yo trabaje decidimos crear un “Robot Simulador de grúa”, la meta de este trabajo era probar a los futuros operadores de estas máquinas y probar si estaban capacitados para este trabajo. Para poder mover este robot, implementamos una aplicación android para el celular.
El objetivo era recoger cuatro cubos con la garra del robot y moverlos un contenedor, esto debía realizarse en el menor tiempo posible, ya que mientras más se demora en moverlos peor es su calificación.

Solución


El código y el pseudocodigo con el cual logramos que el robot tomara el tiempo y lo enviara a un archivo el cual se puede ver después, es el siguiente.

Pseudocodigo:
Definir variables;

subrutina GuardarArchivo(){
Borrar archivo ("Tiempo.txt");
Crear archivo ("Tiempo.txt");
Escribir ("Reporte de desempeño");
Escribir ("Nºde Cubos Tiempo");
Escribir ("--------------------");
Para (i=0;i<=largoDeArreglo;i++);
escribir tiempo y Nº de cubo;
Cerrar archivo;
}

subrutina GuardaTiempo(int t){
tiempo[i]=t;
i++;
}

terea sonido(){
siempre activa{
si se activa sensor de toque
tocar tono;
}
}
tarea Garra(){
siempre activa{
mientras (h<=4){
si se activa sensor de toque{
tomar tiempo ta;
hasta que se desactive;
tomar tiempo tn;
dif=(ta-tn)/1000;
GuardaTiempo(dif);
h++;
}
}
GuardaArchivo();
total=suma de todos los tiempos;
si total>35s{
imprimir muy bien;
durante 5s;
}
sino{
imprimir te falta practica;
durante 5s;
}
detener todas las tareas;
}
}

tarea principal(){
ejecutar tarea (Garra, sonido);
setear sensor de tacto;
}


Codigo:
int dif=0;
int h=0;
int i=0;
int tantiguo=0;
int tnuevo=0;
int tiempo [4];
byte punteroA;
byte bytesEscritos;
string cadena, numero, cad;
string esp="         ";


sub GuardaArchivo()
{
 DeleteFile("Tiempo.txt");
 CreateFile("Tiempo.txt", 512, punteroA);
 WriteLnString(punteroA, " REPORTE DE DESEMPEÑO", bytesEscritos);
 WriteLnString(punteroA, "Nº de cubos         tiempo", bytesEscritos);
 WriteLnString(punteroA, "---------------------------", bytesEscritos);
 for(i=0;i<ArrayLen(tiempo);i++)
  {
    cad=NumToStr(tiempo[i]);
    numero=NumToStr(i);
    cadena="Cubo"+numero+esp+cad+"_seg";
    WriteLnString(punteroA,cadena,bytesEscritos);
   }
 CloseFile(punteroA);
}


sub GuardaTiempo(int t)
{
 //TextOut(0,30,"En el arreglo");
 tiempo[i]=t;
 //NumOut(0, 10, tiempo[i]);
 i++;
}


task Sonido()
{
 while(true)
 {
  if(Sensor(IN_1)==1)
  PlayTone(1500,600);
 }
}


task Garra()
{
 while(true)
 {
  while(h<=4)
  {
   if(Sensor(IN_1)==1)
   {
    tantiguo=CurrentTick();
    until(Sensor(IN_1)==0)
     tnuevo=CurrentTick();
     dif=(tnuevo-tantiguo)/1000;
     //NumOut(0,20,dif);
     GuardaTiempo(dif);
     h++;
   }
  }
  GuardaArchivo();
  int total=tiempo[0]+tiempo[1]+tiempo[2]+tiempo[3];
  if(total<35)
     {TextOut(0, 50, "Muy bien");
     Wait(5000);}
  else
     {TextOut(0, 50, "Te falta practica");
     Wait(5000);}
     StopAllTasks();
 }
}

task main()
{
 Precedes(Garra, Sonido);
 SetSensorTouch(IN_1);
}



El código para mover el robot no lo realizamos, ya que se movía con una aplicación android, el cual se desarrolló en App inventor de google. La aplicación fue creada por nosotros mismos.
Fotos del robot:




Reflexión
Este trabajo fue de gran ayuda para mi aprendizaje, me permitió trabajar en grupo con mis compañeros, a guardar archivos en un robot Lego NXT y me permitió aprender a crear aplicaciones en android y a conectar estas con el robot.
Espero que este blog les ayude en sus trabajos.

No hay comentarios:

Publicar un comentario