programación de legos
TRANSCRIPT
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
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.
Robots LEGOMindstorm
RCX 2.0 NXT 2.0
Programación de RobotLEGO Mindstorm NXT
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.
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
BOTONES DE CONTROL
Botón de selecciónIzquierda
Botón de selecciónDerecha
Botón de confirmación
Cancelacióno nivel anterior
LADRILLO NXT
ENTRADAS Y SALIDASE/S
Entradas del ladrillo
C
Salidas del ladrillo
USB
LADRILLO NXT
BA
321
4
OPCIONES
My FilesNXT FilesSound FilesSoftware Files
NXT ProgramViewBluetoothSettingsTry Me
CONEXIÓN CON ELCOMPUTADOR
MINDSTORMS NXT Driver v1.01 CD MINDSTORMS NXT Driver v1.02 Ejecutable
ENTORNO DEPROGRAMACIÓN
BRICX COMMAND CENTER
Version. 3.3 (Build 3.3.8.9)Release 15/03/2011
Conectando el ladrillo
Puerto Tipo de ladrillo
Firmware
Entorno de desarrollo
Menú principal
Editor de códigoOpciones demanejo de archivos
Opciones demanejo del ladrillo
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
Controles del NXTDirect Control Diagnostics
Controles del NXT (Watching the brick)Common NXT
Controles del NXTBrick Piano Brick Jostick Remote
Controles del NXTConfigurable Watch Messages
Controles del NXTMap Memory
Selección del lenguaje de programación
Edit -> Preferences.. ->Compiler
NOT EXACTLY C
EL LENGUAJENXC
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
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);
EntradasInicialización de Sensores• InicializaciónInstrucciónes:
SetSensorTouch(<Entrada>);SetSensorLight(< Entrada >);SetSensorSound(< Entrada >);SetSensorTemperature(< Entrada >);
* SetSensorLowspeed(< Entrada >);
Ej: SetSensorLight(IN_2);
EntradasLectura de SensoresReferencia:
SENSOR_<N>Ej: SENSOR_3Instrucción:
Sensor(<Entrada>)Ej: Sensor( IN_4)
Instrucción. Caso del sensor Ultrasónico:
SensorUS(<Entrada>)
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
Declaración de variables• Sintaxis
<tipo> <identificador>;
<tipo> <identificador> = <valor>;
Ejemplo:
»int aaa = 50;»int bbb,ccc;»int values[];
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
Estructuras de control
• Repetitiva whilewhile (<Condición>) { <Sentencias> }
• Repetitiva do – whiledo { <Sentencias> } while (<Condición>) ;
• Esperauntil (<condición>);
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);
}}
}
¿PREGUNTAS?