jueves, 8 de diciembre de 2011

"Robot Sumo"

Autor: Jorge Henriquez Romero
Competencia: Creatividad e innovación(Nivel 1)
Palabras claves: NXC, Lego, Programacion, Sumo.


Descripción de la actividad


En el siguiente blog daré a conocer el resultado de uno de los muchos proyectos en grupo realizados en la asignatura “Programación de Robot”. El proyecto se denominó “Robot Sumo”, el cual consistía en crear un robot para luchar con otros robots de otros grupos, se trataba de una competencia con un premio para el primer lugar. Los robot debían luchar dentro de un círculo de donde no debían salir, ya que al salir se perdía automáticamente.
El diseño del robot debía ser construido con la especificaciones que el grupo desee, pero siempre cumpliendo las reglas, las cuales eran:
● Los robots no pueden superar los 30cm2, y tienen a disposición todas las piezas del
   kit básico y complementario asignados (cualquier desbalance entre piezas debe ser
   informado a los ayudantes del ramo para su rápida solución).
● Se pueden utilizar los sensores de tacto, luz y ultrasonido.
● No se permite el úso de ningún tipo de manejo a distancia del robot.
Solución
El código y el pseudocódigo implementado para la lucha sumo son los siguientes:
Pseudocódigo:
El robot se enciende
Iniciar sensores
mantenerse() {
si(umbralLuz<negro)
  avanza() a 100
si(umbralLuz>negro)
  {
  girar random (60)+70
  avanzar() a 100
  }
}
si(umbralLuz<negro)
  avanza() a 100
si(umbralLuz>negro)
  {
  girar random (200)+500
  avanzar() a 100
     defenderse()
    {
     si(serca<25cm)
        avanza() a 100
     si(serca>25cm)
       {
        girar random (200)+500
        avanzar() a 100
      }
  }
  }
Atacar() {
 Si(serca<25cm)
    avanzar()
Si(serca>30cm)
    Girar random(200)+500
    avanzar()
Codigo:
//definir variables
Int girar
#define negro 35
#define Cerca 20
#define medio 30
//subrutinas
Sub mantenerse ()
{
  if (Sensor(IN_1)>negro)
    {
    OnFwd(OUT_AC, 100);
    }
  if(Sensor(IN_1)<negro)
    {
    girar=Random(1000)+2500;
    OnFwd(OUT_A, 60);
    OnFwd(OUT_C, 10);
    Wait(girar);
    OnFwd(OUT_AC, 100);
    }
}
Sub defenderse()
{
If(SensorUS<25)
  {
    OnFwd(OUT_AC, 100);
    }
if(SensorUS>25)  
    {
    girar=Random(1000)+2500;
    OnFwd(OUT_A, 60);
    OnFwd(OUT_C, 10);
    Wait(girar);
           OnFwd(OUT_AC, 100);
   }
Sub atacar()
{
{
If(SensorUS<25)
  {
    OnFwd(OUT_AC, 100);
    }
if(SensorUS>30)  
    {
    girar=Random(1000)+2500;
    OnFwd(OUT_A, 60);
    OnFwd(OUT_C, 10);
    Wait(girar);
    OnFwd(OUT_AC, 100);
   }
Task()
{
  mantenerse();
  {
        defenderse();
        PlayTone(1500,500);
        Wait(500);
        PlayTone(3000,500);
        Wait(500);
        Atacar();
 }
 Mantenerse();
{
       Atacar();
}
}
Video de la actividad:



Reflexión
Este trabajo me ayudó mucho para implementar mi creatividad al crear y diseñar junto a mi grupo el robot, implementando nuestras propias especificaciones, además como era un trabajo grupal, me ayudo a fomentar el trabajo en equipo, en donde pude ver que es mejor trabajar en equipo a trabajar solo, ya que se termina más rápido el trabajo y existe menos posibilidad de fallo.
Espero les ayude este blog y puedan fomentar su creatividad, ya que importante en la carrera.

No hay comentarios:

Publicar un comentario