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

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 LEGO

Mindstorm
RCX 2.0 NXT 2.0

Programación de Robot LEGO Mindstorm NXT

Especificaciones Lego RCX 2.0
Microcontrolador Hitachi H8/3292 RAM 512B Velocidad 16Mhz. @5V 2 timers de 8b y 1 timer de 16b Convertidor A/D de 8b Memoria RAM 32K Parlante Puerto Infrarrojo. Max 30 cm. a 2.4Kbps Display 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.

Especificaciones Lego NXT

Microcontrolador de 32 bits ARM7 a 48Mhz con 256 Kbytes FLASH y 64 Kbytes RAM. Microcontrolador AVR de 8 bit con 4 Kbytes FLASH y 512 Byte RAM Bluetooth Class II V2.0 Puerto USB full speed (12 Mbit/s) 4 puertos de entrada para conectar cable de 6 hilos 3 puertos de salida para conectar cable de 6 hilos Pantalla LCD de 100 x 64 pixel Altavoz de 8 kHz Funciona con 6 pilas tipo AA

BOTONES DE CONTROL
LADRILLO NXT

Botón de confirmación Botón de selección Izquierda Botón de selección Derecha Cancelación o nivel anterior

ENTRADAS Y SALIDAS E/S
LADRILLO NXT Entradas del ladrillo 1 2 3 4 USB Salidas del ladrillo A B C

OPCIONES
My Files NXT Files Sound Files Software Files NXT Program View Bluetooth Settings Try Me

CONEXIÓN CON EL COMPUTADOR

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

ENTORNO DE
PROGRAMACIÓ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

Opciones de manejo del ladrillo

Opciones de manejo de archivos

Editor de código

Controles del NXT
Compilación del código Envío del programa

Detener ejecución

Ejecución del programa

BrickPiano Control directo Analizando el ladrillo Diagnóstico

Enviar mensajes Control remoto Analizador configurable Mapa de memoria

Conectar Desconectar Apagar el ladrillo

BrickJostick

Controles del NXT
Direct Control Diagnostics

Controles del NXT (Watching the brick)
Common NXT

Controles del NXT
Brick Piano Brick Jostick Remote

Controles del NXT
Configurable Watch Messages

Controles del NXT
Map Memory

Selección del lenguaje de programación
Edit -> Preferences.. ->Compiler

EL LENGUAJE NXC

NOT EXACTLY C

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

Salidas Control de Motores
• Funciones básicas: Instrucción: OnFwd(<Salidas>, <Velocidad>); OnRev(<Salidas>, <Velocidad>); Off(<Salidas>); Float(<Salidas>); Velocidad = 0 - 100 Ej: OnRev(OUT_AC, 100);
– Rotar, Rotar en reversa, Detener, Liberar

Entradas Inicialización de Sensores
• Inicialización Instrucciónes: SetSensorTouch(<Entrada>); SetSensorLight(< Entrada >); SetSensorSound(< Entrada >); SetSensorTemperature(< Entrada >); SetSensorLowspeed(< Entrada >); SetSensorLight(IN_2);

* Ej:

Entradas Lectura de Sensores
Referencia: Ej: Instrucción: Ej: SENSOR_<N> SENSOR_3 Sensor(<Entrada>) Sensor( IN_4)

Instrucción. Caso del sensor Ultrasónico: SensorUS(<Entrada>)

Declaración de variables
• Variables finales?
#define <indentificador>

• Tipos de variables bool byte, unsigned char char unsigned int short, int unsigned long long string struct Arrays

8 bit unsigned 8 bit unsigned 8 bit signed 16 bit unsigned 16 bit signed 32 bit unsigned 32 bit signed Array of byte User-defined structure types 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 while while (<Condición>) { <Sentencias> } • Repetitiva do – while do { <Sentencias> } while (<Condición>) ; • Espera until (<condición>);

Ejemplo de un robot sigue linea con UMBRAL 55 2 sensores #define
task main() { SetSensorLight(IN_1); //colocamos un sensor de luz en el puerto 1 y 2 SetSensorLight(IN_2); while (true) { OnFwd(OUT_AC,80); // Tenemos 2 motores conectados en A y C until(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?

DENNIS MARTINEZ CROVO
dennis.m.c@hotmail.com

GRACIAS !

Sign up to vote on this title
UsefulNot useful