Patricio Aros

xd

domingo, 13 de noviembre de 2011

Proyecto Final 1er Semestre, Robotica

Autor:Patricio Aros
Competencia: Aplica las ciencias de la Ingenieria (Nivel 1)


Nota:Para lograr ver mejor las imagenes hacer click y se maximizará.

Descripcion de la actividad

Con el fin de explicar mi continuidad de mis compentencia compartiré esta actividad la cual de una manera muy creativa se logro.
Lo que se debia hacer en este laboratorio o actividad, era crear un robot a manera de cosechador, el cual debia solo recolectar las manzanas, que estaban marcadas con un color negro bajo el arbol. Al mismo tiempo el robot debia guardar el tiempo en el cual pasaba por unas lineas que estaban a la altura de los arboles eh ir mostrandola por pantalla, en la maqueta, los arboles eran simbolizados por cubos de madera y la fruta por un cubo que estaba sobre este, a continuacion una imagen a manera de explicar mejor lo que era la actividad.

Primero que nada el robor,como se muestra en la imagen, avanza pasando sobre toda la maqueta, guardando el tiempo cada vez que pasa por la linea negra remarcada, al finalizar esto, el robot giraba y comenzaba la recolección de la fruta, como mecioné anteriormente para diferenciar las manzanas de los duraznos, las manzanas estarian marcadas con un color negro bajo el arbol, el arbol en la imagen son los cubos alrededor de la misma, al chocar con un cubo el robot debia,a travez del sensor de luz, ver si bajo el estaba el color negro o blanco, si este era blanco pasaba y no recolectaba, en cambio, si era negro el robot giraba una palanca para "cocechar la manzana".
A continuación el codigo que fue usado para realizar la actividad.

#define NEGRO 40

#define CERCA 10

int Lineas = 0;

int cajas = 0;

long tiempo, tiempo_ini,tiempo1;

int luz,i,j;





sub Pantalla()

{

i = 1;

j = 1;

while (i<5)

{

luz = Sensor(IN_3);

OnFwdReg(OUT_AC,30,OUT_REGMODE_SPEED);

Wait(10);

if(luz < NEGRO)

{

if(j==1)

{

tiempo_ini = CurrentTick();

tiempo = 0;

NumOut(20,i*10,tiempo);

}

else

{

tiempo1 = CurrentTick();

tiempo = tiempo1 - tiempo_ini;

NumOut(20,i*10,tiempo);

}

i = i+1;

j = j+1;

Wait(200);

}

Wait(10);

}

OnFwd(OUT_C,30);

OnRev(OUT_A,30);

Wait(1000);

}



sub Recolector()

{

OnFwd(OUT_A,40);

OnFwd(OUT_C,30);

until(Sensor(IN_3)>NEGRO);

OnRev(OUT_A,30);

OnFwd(OUT_C,30);

until(Sensor(IN_3)<NEGRO);

if(SensorUS(IN_4)<CERCA)

{

OnFwd(OUT_AC,50);

until(Sensor(IN_1)==1);

}

while(Sensor(IN_1)==1)

{

Off(OUT_AC);

if(Sensor(IN_3)<NEGRO)

{

OnFwd(OUT_B,30);

Wait(2000);

OnRev(OUT_B,30);

Wait(2000);

Off(OUT_B);

}

OnRev(OUT_AC,40);

Wait(1000);

OnFwd(OUT_C,30);

OnRev(OUT_A,30);

Wait(1500);

cajas++;

}

}



sub Avance_primera_linea()

{

OnFwd(OUT_C,45);

OnRev(OUT_A,30);

Wait(1700);

OnFwd(OUT_AC,40);

until(Sensor(IN_3)<NEGRO);

Lineas++;

}



sub Avance_lineas_general()

{



OnRev(OUT_C,30);

OnFwd(OUT_A,30);

Wait(300);

OnFwd(OUT_AC,40);

until(Sensor(IN_3)<NEGRO);

Lineas++;

}



sub Fin()

{

OnFwd(OUT_C,30);

OnRev(OUT_A,30);

Wait(1000);

OnFwd(OUT_AC,40);

until(SENSOR_1==1);

Off(OUT_ABC);

}



task main()

{

SetSensorLight(IN_3);

SetSensorTouch(IN_1);

SetSensorLowspeed(IN_4);

Pantalla();

while(cajas<2)

{

Recolector();

}

Avance_primera_linea();

while(Lineas==1&&cajas<4)

{

Recolector();

}

Avance_lineas_general();

while(Lineas==2&&cajas<6)

{

Recolector();

}

Avance_lineas_general();

while(Lineas==3&&cajas<8)

{

Recolector();

}

Fin();

}

Seguidamente un video en la manera en que trabajaba el codigo:
 

Reflexión
A manera de sintetizar un poco lo que esta actividad logró fue, a travez de la fisica explicarnos un poco sobre el MRU, ya que isimos uso de esta en el  programa para lograr un avanze a una velocidad constante, ademas de que a travez del tiempo que guardamos logramos hacer una especie de grafico en el que podemos ver que tan bien está la recta y que tan bien se logro esta parte del objetivo de la actividad.

 

0 comentarios:

Publicar un comentario