INS Anna Gironella de Mundet COMPETITION...

12
INS Anna Gironella de Mundet COMPETITION SPAIN

Transcript of INS Anna Gironella de Mundet COMPETITION...

INS Anna Gironella de Mundet

COMPETITION SPAIN

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

1

Índice

1. La base . . . . . . . . 2 pág

2. Six bar . . . . . . . . 3 pág

3. Claw . . . . . . . . 4 pág

4. Doble batería y display . . . . . 5 pág

5. Sensores y estrategias . . . . . 6 pág

6. Vistas del robot y medidas . . . . 7 pág

7. Programación . . . . . . . 8 pág

7.1. Los encoders . . . . . . 8 pág

7.2. El sensor sonar . . . . . 9 pág

7.3. Los sensors en linea . . . . 9 pág

7.4. Los potenciómetros . . . . . 10 pág

8. Conclusiones y agradecimientos . . . 11 pág

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

2

La base

El robot que presentamos en la competición nacional ha sido diseñado en base a la

experiencia adquirida estos dos últimos años, tanto en competiciones nacionales

como mundiales.

En primer lugar se optó por una base

H con ruedas “Omni” a 45º ya que

para este tipo de prueba se necesita

realizar giros perfectos y 8 posibles

desplazamientos diagonales o

laterales.

Las dimensiones de la base no

superan los 48cm por lado y al tener

chaflanes en las esquinas facilita los

giros en zonas cerradas del campo ya

sea por paredes u objetos.

El material escogido es mayo-

ritáriamente aluminio haciendo que

sea más ligero y veloz. Los motores

de la base son todos de tipo “Speed”

permitiendo una velocidad máxima de

160 revoluciones por minuto (un 60%

más rápido que con motores

normales).

Se han incorporado 2 sensores de

línea para detectar y calibrar la

posición del motor, además dos de los

motores dispones de encoders

integrados que nos ayudan en la fase

autónoma a saber cuánta distancia se

ha recorrido en cada momento.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

3

SIX BAR

Se ha realizado un sistema de elevación tipo “SIX BAR” en aluminio que permite

bajar y subir los objetos del campo de entrenamiento verticalmente, consigue

sobrepasar el muro central y además llegar a la barra lateral con la finalidad de

colgarse en ella.

Utiliza un total de 5 motores de potencia

393 (100RPM) para subir y bajar, Tiene

una reducción cada uno de tipo 5:1 que da

la fuerza necesaria para poderse colgar en

la barra al menos una vez y la velocidad

muy buena para coger y elevar los objetos.

Este punto ha sido y es crítico, ya que al

colgarse en la barra el “six bar” hace

trabajar al límite los 5 motores y esto provoca calentamiento en los mismos pudiendo

desactivar por parte de los motores y el “cortex” la alimentación. Para evitar este

calentamiento se trabaja con 3 motores durante la partida y se usa el duplicador de

batería para separar las cargas de intensidad entre los dispositivos.

Cuando se cuelga en la barra funcionan los 5 motores a máxima potencia y si las

baterías están bien permite subirse al menos una vez. Si haces reducciones más

lentas para asegurar que se cuelga también pierdes velocidad durante la partida y es

posible que los oponentes sean más rápidos y lancen más objetos.

Para controlar la altura de la “SIX BAR” se usa un potenciómetro que permite en la

fase autónoma saber a qué altura estamos.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

4

CLAW

Para nuestra pinza o “claw” se han utilizado dos barras de aluminio de 30 cm

inclinadas en la punta a 45 grados.

Observamos mejores resultados al usar una secuencia de engranajes 7:1

proporcionando la fuerza necesaria para coger el “puff” o 3 estrellas a la vez.

Además permite una extensión de casi 70 cm permitiendo lanzar con facilidad los

objetos que están sobre la valla.

Así que desestimamos el “claw” de un motor que hicimos en la competición de

Barcelona que tenía una reducción más rápida de 3:1 y era una pinza con una

extensión de 50 cm.

Esta impulsado por 2 motores de 100 rpm permitiendo un agarre perfecto sobre el

“puff” y estrellas.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

5

Para controlar la posición de los brazos se usan dos potenciómetros, que permitirán

el cierre, agarre, extensión y plegado automático de la pinza.

También se incorpora el sensor de ultrasonidos que detectará los objetos del campo

y permitirá en el autónomo coger objetos con facilidad.

Doble batería y Display

El robot usa un total de 11 motores y 1 servo de 180 grados, un total de 12 motores

(lo máximo permitido). Por ello necesitamos un “Power Expander” y usar doble

batería.

Para saber los valores de la batería y si funcionan todos los sensores hemos usado

un “display” que muestra los valores de batería y los valores de cada sensor: 3

potenciómetros, 2 seguidores de línea, 1 sónar y 2 encoders integrados.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

6

Sensores y estrategia

Los sensores que hemos usado son: 3 potenciómetros, 2 seguidores de línea, 1

sónar y 2 encoders integrados.

Empezaremos a hablar de la estrategia y el porqué de cada sensor. En la parte

autónoma optamos a 45 segundos los cuales podemos usar sensores, en nuestro

caso,

La estrategia 1 consiste en lanzar las tres estrellas situadas en la valla frontal a

nuestra base para acercarnos usamos los encoders integrados en la base y los

sensores de línea. Subimos el “Six Bar” y extendemos las barras para poder tirar los

objetos a su base, Para ellos usamos los potenciómetros. ( ésta estrategia da un

máximo de 3 puntos)

La estrategia 2 consiste en ir a por PUFF principal usando los encoders

integrados y detectándolo con el sensor de ultrasonidos. Una vez cerca lo cogemos

y lo elevamos, para ellos usamos los encoders, giramos y se dirige el robot a la valla

central, lanzando el “puff” y las estrellas al lado contrario. ( Sumaríamos un máximo

de 8 puntos)

La estrategia 3 consiste en coger las 3 estrellas que hay en nuestra zona

central, justo al lado de la base (es importante ya que puntúan en negativo y si las

lanzas al otro lado es como si sumaras 9 puntos), se usan los “encoders” y

potenciómetros para conseguir lanzar al otro lado de la valla arrastrando hasta 3

estrellas (9 + 3 puntos).

Tenemos el tiempo justo para hacer en combinación las 3 estrategias, dependiendo

del contrincante programamos un orden diferente y creemos que podemos lograr en

la fase autónoma en el mejor de los casos 23 puntos.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

7

Vistas del robot y medidas

La base y altura plegado no supera los 50

cm permitiendo poder colocar el robot en

la base a ángulos de 90 y 45 grados, la

altura alcanzada máxima es mayor a la

barra donde se ha de colgar y permite

salvar la valla con las estrellas y el “puff”.

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

8

Programación

Los encoders

Los usamos para determinar la posición recorrida, están colocados en los 2 motores

de atrás. Se usa para movimientos laterales, frontales, diagonales y giros.

Ejemplo de código usado es el siguiente:

#pragma config(I2C_Usage, I2C1, i2cSensors)

#pragma config(Sensor, I2C_1, rightEncoder, sensorQuadEncoderOnI2CPort, , AutoAssign)

#pragma config(Sensor, I2C_2, leftEncoder, sensorQuadEncoderOnI2CPort, , AutoAssign)

void adelanteatras(int grados, int VelR, int VelL, int VelM) { //adelante

SensorValue(rightEncoder) = 0;

if (grados > 0){

while(SensorValue(rightEncoder) > -grados){

motor[backRightMotor] = VelR;

motor[frontRightMotor] = VelM;

motor[frontLeftMotor] = VelM;

motor[backLeftMotor] = VelL;

}

motor[backRightMotor] = -VelR/2;

motor[frontRightMotor] = -VelM/2;

motor[frontLeftMotor] = -VelM/2;

motor[backLeftMotor] = -VelL/2;

}

else if (grados < 0){

while(SensorValue(rightEncoder) < -grados){

motor[backRightMotor] = -VelR;

motor[frontRightMotor] = -VelM;

motor[frontLeftMotor] = -VelM;

motor[backLeftMotor] = -VelL;

}

motor[backRightMotor] = VelR/2;

motor[frontRightMotor] = VelM/2;

motor[frontLeftMotor] = VelM/2;

motor[backLeftMotor] = VelL/2;

}

wait1Msec(100);

motor[backRightMotor] = 0;

motor[frontRightMotor] = 0;

motor[frontLeftMotor] = 0;

motor[backLeftMotor] = 0;

}

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

9

los motores suben su velocidad o la bajan de manera gradual para evitar

desplazamientos provocados por las inercias.

El sensor sónar

El sónar nos ha facilitado la tarea de saber exactamente donde está el objeto y

situarnos en la posición idónea para coger o empujar los objetos.

Un ejemplo de código es el siguiente:

#pragma config(Sensor, dgtl1, ultr, sensorSONAR_cm)

void precarga3(int VelP, int VelS, int VelR, int VelL, int VelM){

giroderecha(120,80);

pinzas(80,0,0);

sixbar(1750,VelS);

frente(300, 80, 80, 80);//tiempo, VelR, VelL, VelM

derechaizquierda(-200,80,80,60);

while(SensorValue(ultr) > 60){

derechaizquierda(-100,80,80,60);

}

while(SensorValue(ultr) > 15){

adelanteatras(50,80,80,80);

}

}

Los sensores de línea

Para aprovechar el máximo el tiempo autónomo, buscamos que el robot pudiera

posicionarse detectando las dos líneas, una la usamos para no chocar con la valla y

lanzar objetos y la línea central la usamos para girar y coger el “puff”.

#pragma config(Sensor, in4, SLIzq, sensorLineFollower)

#pragma config(Sensor, in5, SLDer, sensorLineFollower)

void frente(int tiempo, int VelR, int VelL, int VelM) { //adelante

motor[backRightMotor] = VelR;

motor[frontRightMotor] = VelM;

motor[frontLeftMotor] = VelM;

motor[backLeftMotor] = VelL;

wait1Msec(tiempo);

motor[backRightMotor] = VelR/2;

motor[frontRightMotor] = VelM/2;

motor[frontLeftMotor] = VelM/2;

motor[backLeftMotor] = VelL/2;

tiempo = 11;

while(SensorValue(SLDer) > 1500 || SensorValue(SLIzq) > 1500 && tiempo != 0){

if (SensorValue(SLDer) < 1500) {

motor[backRightMotor] = -10;

motor[frontRightMotor] = -10;

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

10

if (tiempo > 5) { tiempo = tiempo -10;}

}

if (SensorValue(SLIzq) < 1500) {

motor[backLeftMotor] = -10;

motor[frontLeftMotor] = -10;

if (tiempo == 1){tiempo = tiempo - 1;}

if (tiempo == 11){tiempo = tiempo - 1;}

}

}

}

Los potenciómetros

Podríamos decir que es uno de los sensores más útiles ya que permiten controlar la

altura del SIXBAR y la posición de las pinzas

#pragma config(Sensor, in1, PoSi, sensorPotentiometer)

#pragma config(Sensor, in2, PoPider, sensorPotentiometer)

#pragma config(Sensor, in2, PoPiizq, sensorPotentiometer)

void sixbar(int grados, int VelS) {

if (SensorValue(PoSi) > grados){

while(SensorValue(PoSi) > grados){

//motor[ULM] = -VelS;

motor[URM] = -VelS;

motor[DLM] = -VelS;

motor[DRM] = -VelS;

}

//motor[ULM] = VelS/2;

motor[URM] = VelS/2;

motor[DLM] = VelS/2;

motor[DRM] = VelS/2;

}

else if (SensorValue(PoSi) < grados){

while(SensorValue(PoSi) < grados){

//motor[ULM] = VelS;

motor[URM] = VelS;

motor[DLM] = VelS;

motor[DRM] = VelS;

}

}

//motor[ULM] = 10;

motor[URM] = 10;

motor[DLM] = 10;

motor[DRM] = 10;

}

INS Anna Gironella de Mundet

Passeig de la Vall d’Hebron, 171 08035 Barcelona Tel. 93 428 02 92 / 93 428 22 46

www.agmundet.es

11

Conclusiones y agradecimientos

Queremos agradecer la oportunidad que se nos da a los estudiantes con

competiciones a nivel estatal y mundial, las cuales nos ayuda a completar una parte

de los estudios pudiendo diseñar, ver, tocar, montar y programar un robot desde

cero.

Llegar a la competición ha sido un trabajo muy duro. Esta es la segunda y tercera

participación de algunos miembros del equipo, desde el principio del proyecto han

compartido todo su conocimiento adquirido para que todos estemos al mismo nivel

tanto de montaje como de programación.

A partir de aquí, nos hemos documentado sobre los objetivos y las normas de la

competición. Realizado una “brainstorming” para poner en común las estrategias y

poder crear un robot competitivo.

Cuando acabamos de decidir nuestro primer diseño competitivo, separando las

partes principales, la base, el sixbar y la pinza empezamos a rediseñar cada una de

las partes una y otra vez al encontrarnos con los problemas en cuanto a

funcionamiento en el campo. Aprendemos que la teoría poco tiene que ver con la

realidad.

Todo y la primera puesta en común, al principio se notaba una gran diferencia entre

los integrantes del grupo, nos costó bastante adecuarnos entre nosotros, y llegar al

diseño final ha sido fruto de ideas, prueba y error…

Nuestro objetivo con este robot es seguir mejorándolo y llegar a la final mundial.

Queremos acompañar este robot con el prototipo de la catapulta que estamos

creando ya que la única debilidad de nuestro prototipo es no ser capaz de enviar al

fondo del campo las estrellas y el “puff”.

Nuestro robot cumple todos los demás requisitos, permite salvar la valla lanzando

los objetos, coger hasta 3 estrellas a la vez y en la parte autónoma conseguimos

hacer hasta 23 puntos. En la parte manual puede además colgarse en la barra de la

esquina.

Estamos muy contentos del resultado final, ahora sólo queremos disfrutar y poner a

prueba nuestro trabajo e ingenio puesto al servicio del aprendizaje y de la

competición.