jueves, 8 de diciembre de 2011

"Robot Destructor"

Autor: Jorge Henriquez Romero
Competencia: Trabajo en equipo (Nivel 1)
Palabras claves: Lego, NXC, Robot, Programacion.



Descripción de la actividad
En el siguiente blog les daré a conocer el resultado de uno de los primeros trabajo realizados en la asignatura “Programación de Robots”.
El experimento consistía en la programación de un robot, modelo Lego NXT, el cual debe deambular por paredes delimitadas por granitos de titanio, en donde se encuentran pilares puestos al azar. El robot debe estar puesto con un sensor de tacto y debe  colocar un explosivo en cada pilar (el robot cuenta con cinco explosivos), realizando un sonido que representa la explosión de la bomba. Al momento de agotarse los explosivos debe terminar su tarea y apagarse.

Solución
Para solucionar el problema propuesto, que consistía en que el robot destruyera los obstáculos necesarios, el grupo tuvo que colaborar entre sí, ya que se necesitaba, una nueva programación, mejoras físicas del robot, aclarar varias dudas del uso del sensor táctil y del sonido que debía producir, todo esto entre otras adversidades.
Al lograr una sincronía aprobable entre los integrantes del grupo, pudimos corregir cada uno de nuestros problemas, además de conseguir con éxito el propósito del proyecto.

A continuación les mostrare el pseudocódigo y código implementado para dar solución al problema.

Pseudo Código:
{
 Inicio del sensor de tacto;
Avanza en línea recta;
  {
   Lo que realiza una vez tocado el sensor una vez;
    {
     Se calibra el tiempo del GiroRandom en segundos;
     Retrocede medio segundo;
     Emite un sonido de detonación
     Espera por dos segundos;
     Realiza un giro con el tiempo GiroRandom;
     Sigue avanzando en línea recta;
     Contador de repeticiones;
     }
  Limite del contador se explosivos, 5;
    {
     Emite un sonido para finalizar;
     Realiza un giro para celebrar;
     Termino de las órdenes, las elimina;
    }
   }
}

Código Del Programa:
int GiroRandom;
int contador=0;
task main()
{
  SetSensorTouch(IN_1);
  OnFwd(OUT_A, 79);//Avanza en línea recta
  OnFwd(OUT_C, 72);
   while (true)
  {
   if(SENSOR_1==1)
    {
    GiroRandom=Random(1800)+500;
    OnRev(OUT_A,79);//Retrosededespues del impacto
    OnRev(OUT_C, 72);
    Wait(500); //Medio segundo de espera
    PlayTone(65, 500); //Explocion de bomba
    Off(OUT_AC);
    Wait(2000);
    OnFwd(OUT_A, 79); // Giro random
    OnRev(OUT_C, 72);
    Wait(GiroRandom);
    OnFwd(OUT_A, 79); //Sigue abanzando
    OnFwd(OUT_C, 72);
    contador++;
    }
    if(contador==5) //Contador de explosibos
    {
    Off(OUT_AC);
    PlayTone(50, 1000); //Tono final
    Wait(2000);
    OnFwd(OUT_A, 79); //Giro para celebrar
    OnRev(OUT_C, 72);
    Wait(5000);
    StopAllTasks(); //Termino de la repeticion
    }
  }
}

Video de la actividad:


Reflexión
El trabajo mostrado me ayudó mucho a empezar a trabajar en equipo, ya que el segundo trabajo que realice junto a mi grupo, en donde me pude dar cuenta que para poder realizar un buen trabajo en esta carrera se debe realizar en equipo ya que uno por lo general no se da cuenta de algunos errores y un compañero se puede dar cuenta de tales cosas.

Espero les haya servido esta ayuda.

No hay comentarios:

Publicar un comentario