Programación de LEGOS

32
CURSO DE PROGRAMACIÓN DE ROBOTS LEGO NXT Por: Dennis Martínez Crovo Dirigido a: Grupo de investigación Capítulo Técnico de Robótica Abril 2011

Transcript of Programación de LEGOS

Page 1: Programación de LEGOS

CURSO DE PROGRAMACIÓNDE ROBOTS LEGO NXT

Por: Dennis Martínez Crovo

Dirigido a: Grupo de investigación

Capítulo Técnico de Robótica

Abril 2011

Page 2: Programación de LEGOS

Definición de Robot• Palabra Checa Robota: Trabajos forzados• Robótica: Ciencia de los robots• Áreas de la robótica: Mecánica, electrónica,

informática, inteligencia artificial, ingeniería de control, autómatas programables.

Definición de Robot inteligente• Robots capaces de tomar una decisión• Agentes inteligentes

– Percepción, Acción, Meta, Ambiente.

Page 3: Programación de LEGOS

Robots LEGOMindstorm

RCX 2.0 NXT 2.0

Page 4: Programación de LEGOS

Programación de RobotLEGO Mindstorm NXT

Page 5: Programación de LEGOS

EspecificacionesLego RCX 2.0

Microcontrolador Hitachi H8/3292RAM 512BVelocidad 16Mhz. @5V2 timers de 8b y 1 timer de 16bConvertidor A/D de 8b

Memoria RAM 32KParlantePuerto Infrarrojo. Max 30 cm. a 2.4KbpsDisplay de 3 zonas y símbolos adicionales.Sensores

Contacto, luz, temperatura, rotación.Actuadores

Motores, fuente de luz.Alimentación con 6 baterias AA de 1.5V.

Page 6: Programación de LEGOS

EspecificacionesLego NXT

Microcontrolador de 32 bits ARM7 a 48Mhz con 256 Kbytes FLASH y 64 Kbytes RAM.Microcontrolador AVR de 8 bit con 4 KbytesFLASH y 512 Byte RAMBluetooth Class II V2.0Puerto USB full speed (12 Mbit/s)4 puertos de entrada para conectar cable de 6 hilos3 puertos de salida para conectar cable de 6 hilosPantalla LCD de 100 x 64 pixelAltavoz de 8 kHzFunciona con 6 pilas tipo AA

Page 7: Programación de LEGOS

BOTONES DE CONTROL

Botón de selecciónIzquierda

Botón de selecciónDerecha

Botón de confirmación

Cancelacióno nivel anterior

LADRILLO NXT

Page 8: Programación de LEGOS

ENTRADAS Y SALIDASE/S

Entradas del ladrillo

C

Salidas del ladrillo

USB

LADRILLO NXT

BA

321

4

Page 9: Programación de LEGOS

OPCIONES

My FilesNXT FilesSound FilesSoftware Files

NXT ProgramViewBluetoothSettingsTry Me

Page 10: Programación de LEGOS

CONEXIÓN CON ELCOMPUTADOR

MINDSTORMS NXT Driver v1.01 CD MINDSTORMS NXT Driver v1.02 Ejecutable

Page 11: Programación de LEGOS

ENTORNO DEPROGRAMACIÓN

BRICX COMMAND CENTER

Version. 3.3 (Build 3.3.8.9)Release 15/03/2011

Page 12: Programación de LEGOS

Conectando el ladrillo

Puerto Tipo de ladrillo

Firmware

Page 13: Programación de LEGOS

Entorno de desarrollo

Menú principal

Editor de códigoOpciones demanejo de archivos

Opciones demanejo del ladrillo

Page 14: Programación de LEGOS

Controles del NXTCompilación del código

Envío del programa

Detener ejecución

Ejecución del programa

Apagarel ladrillo

Controldirecto

Diagnóstico

Analizandoel ladrillo

BrickJostick

Enviar mensajes

Analizador configurable

Control remoto

ConectarDesconectar

BrickPiano

Mapa dememoria

Page 15: Programación de LEGOS

Controles del NXTDirect Control Diagnostics

Page 16: Programación de LEGOS

Controles del NXT (Watching the brick)Common NXT

Page 17: Programación de LEGOS

Controles del NXTBrick Piano Brick Jostick Remote

Page 18: Programación de LEGOS

Controles del NXTConfigurable Watch Messages

Page 19: Programación de LEGOS

Controles del NXTMap Memory

Page 20: Programación de LEGOS

Selección del lenguaje de programación

Edit -> Preferences.. ->Compiler

Page 21: Programación de LEGOS

NOT EXACTLY C

EL LENGUAJENXC

Page 22: Programación de LEGOS

Aspectos básicos del lenguaje• Basado en la sintaxis del lenguaje C• Lenguaje estructurado y concurrente• Tarea (task) como rutina principal • Limitación de números enteros con signo• El programa termina cuando no hay mas

lineas de código para ejecutar• Referencia a las Entradas: IN_1, IN_2, IN_3, IN_4• Referencia a las Salidas: OUT_A, OUT_B, OUT_C

OUT_AB, OUT_AC, OUT_BC, OUT_ABC

Page 23: Programación de LEGOS

SalidasControl de Motores• Funciones básicas:

– Rotar, Rotar en reversa, Detener, Liberar

Instrucción:

OnFwd(<Salidas>, <Velocidad>);OnRev(<Salidas>, <Velocidad>);Off(<Salidas>);Float(<Salidas>);

Velocidad = 0 - 100

Ej: OnRev(OUT_AC, 100);

Page 24: Programación de LEGOS

EntradasInicialización de Sensores• InicializaciónInstrucciónes:

SetSensorTouch(<Entrada>);SetSensorLight(< Entrada >);SetSensorSound(< Entrada >);SetSensorTemperature(< Entrada >);

* SetSensorLowspeed(< Entrada >);

Ej: SetSensorLight(IN_2);

Page 25: Programación de LEGOS

EntradasLectura de SensoresReferencia:

SENSOR_<N>Ej: SENSOR_3Instrucción:

Sensor(<Entrada>)Ej: Sensor( IN_4)

Instrucción. Caso del sensor Ultrasónico:

SensorUS(<Entrada>)

Page 26: Programación de LEGOS

Declaración de variables• Variables finales?

#define <indentificador>• Tipos de variablesbool 8 bit unsignedbyte, unsigned char 8 bit unsignedchar 8 bit signedunsigned int 16 bit unsignedshort, int 16 bit signedunsigned long 32 bit unsignedlong 32 bit signedstring Array of bytestruct User-defined structure typesArrays Arrays of any type

Page 27: Programación de LEGOS

Declaración de variables• Sintaxis

<tipo> <identificador>;

<tipo> <identificador> = <valor>;

Ejemplo:

»int aaa = 50;»int bbb,ccc;»int values[];

Page 28: Programación de LEGOS

Estructuras de control• Condicional if

if (<Condición>) { <Sentencias> }if (<Condición>) { <Sentencias> } else { <Sentencias> }Operadores para las condiciones• = = igual que• < menor que• <= menor o igual que• > mayor que• >= mayor o igual que• != distinto de

Page 29: Programación de LEGOS

Estructuras de control

• Repetitiva whilewhile (<Condición>) { <Sentencias> }

• Repetitiva do – whiledo { <Sentencias> } while (<Condición>) ;

• Esperauntil (<condición>);

Page 30: Programación de LEGOS

Ejemplo de un robot sigue lineacon 2 sensores

#define UMBRAL 55task main(){SetSensorLight(IN_1); //colocamos un sensor de luz en el puerto 1 y 2SetSensorLight(IN_2);while (true){OnFwd(OUT_AC,80); // Tenemos 2 motores conectados en A y Cuntil(SENSOR_1 <= UMBRAL || SENSOR_2 <= UMBRAL);if(SENSOR_1 <= UMBRAL){Float(OUT_A);until(SENSOR_1 > UMBRAL);

}else if(SENSOR_2 <= UMBRAL){Float(OUT_C);until(SENSOR_2 > UMBRAL);

}}

}

Page 31: Programación de LEGOS

¿PREGUNTAS?

Page 32: Programación de LEGOS

GRACIAS !

DENNIS MARTINEZ CROVO

[email protected]