CURSO DE PROGRAMACIÓN DE ROBOTS LEGO NXT Por: Dennis Martínez Crovo Diri Dirigi gido do a: Grupo de investi investigac gación ión
Capítulo Técnico de Robótica
bril br il 201
Definición de Robot • • •
Trabajos forzados Palabra Checa Robota: Trabajos 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 Programación de Robot LEGO LEGO Mind Mindsstorm orm NXT NXT
Especificaciones Lego RCX 2.0
Microcontrolador Hitachi H8/3292 RAM 512B Velocidad 16Mhz. @5V 2 tim timer erss de 8b y 1 ti time merr de 16 16b b Convertidor A/D de 8b Memoria RAM 32K Parlante Puerto Infrarrojo. Max 30 cm. a 2.4Kbps Display Displ ay de 3 zonas zonas y símbolos símbolos adicional adicionales. es. Sensores Contacto, luz, temperatura, rotación. Actuadores Motores, Motor es, fuente de luz. Alimentación Aliment ación con 6 baterias AA de 1.5V. 1.5V.
Especificaciones Lego NXT
Microcontrolador de 32 bits ARM7 a 48Mhz con co n 256 256 Kby Kbyte tess FL FLASH ASH y 64 Kby Kbytes tes RAM RAM.. Microcontrolador AVR de 8 bit con 4 Kbytes FLASH y 512 Byte RAM Bluet Blu etoot ooth h Class Class II V2.0 V2.0 Puerto Puert o USB USB full full speed (12 Mbit/ Mbit/s) 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
Salidas del ladrillo A B C
4 USB
OPCIONES My
Files NXT Files Sound Files Software Files NXT Program View Bluetooth Settings Try Me
CONEXIÓN CON EL COMPUTADOR
MINDSTORMS MINDSTORMS NXT Driver v1.01 CD MINDSTORMS MINDSTORMS NXT Driver v1.02 Ejecutable
ENTORNO DE PROGRAMACIÓN
BRICX COMMAND CENTER
Version. 3.3 (Build 3.3.8.9) Release Release 15/03/20 15/03/2011 11
Conectando el ladrillo Puerto
Firmware
Tipo de ladrillo
Entorno de desarrollo
Opciones de manejo del ladrillo
Menú principal
Opciones de manejo de archivos
Editor de código
Controles del NXT Dete De tener ner eje ejecuc cución ión Compilación del código
Envío del programa Ejecución del programa programa
BrickPiano Control directo
Analizando el ladrillo Diagnóstico
Enviar mensajes Control remoto
BrickJostick
Conectar Desconectar Apagar el ladrillo
Analizador configurable Mapa de memoria
Controles del NXT Direct Control
Diagnostics
Controles del NXT ( Watching ing the brick ick) Common
NXT
Controles del NXT Bric Brickk Pian Piano o
Brick Brick Jostic Jostickk
Remote
Controles del NXT Configurable Watch
Messages
Controles del NXT Map Map Memo Memory ry
Selección del lenguaje de programación Edit Edit -> Pref Preferences erences.. .. ->Compile ->Compilerr
EL LENGUAJE NXC NX C
NOT EXACTLY C
Asp Aspect ectos básic sicos del leng lengua uajje • • • • •
• •
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 lineas de código código para para ejecut ejecutar ar 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: –
Rotar, Rotar en reversa, Detener, Liberar
Instrucción: OnFwd(
OnFwd( ,, ); ); OnRev(( OnRev ,, ); ); Off ( ); ); Float(( Float ); ); Velocidad = 0 - 100 Ej:
OnRev((OUT_AC OnRev OUT_AC,, 100 100); );
Entradas Inicialización de Sensores Inicialización Instrucciónes:
•
*
SetSensorTouch( SetSensorTouch( ); ); SetSensorLight((< Entrada >); SetSensorLight >); SetSensorSound((< Entrada >); SetSensorSound >); SetSensorTemperature((< Entrada >); SetSensorTemperature >); SetSensorLowspeed(< Entrada >); >);
Ej:
SetSensorLight((IN_2 SetSensorLight IN_2); );
Entradas Lectura de Sensores Referencia: Ej: Instrucción: Ej:
SENSOR_ SENSOR_ SENSOR_3 Sensor( Sensor( )) Sensor(( IN_4 Sensor IN_4))
Instrucción. Caso del sensor Ultrasónico: SensorUS(( SensorUS ))
Declaración de variables •
Variables finales? #define
Tipos Tipos de varia variable bless 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 ; = ; Ejemplo: » » »
int aaa = 50; int bbb,ccc; int values[];
Estructuras de control control •
Cond Condic icio iona nall if
if () () { } if () { } else { } Oper Operad ador ores es par para las las condi ondici cion ones es • • • • • •
= = igual que < menor que <= menor o igual que > mayor que >= mayor o igual que != distinto de
Estructuras de control control •
•
•
while Repetitiva while () { } do – while Repetitiva do { } while () ( ) ; Espera until ();
Ejemplo de un robot sigue linea con 2 sensores #define UMBRAL 55 task main() main() { SetSensorLight((IN_1 SetSensorLight IN_1); ); //col //coloca ocamos mos un sensor sensor de luz en el puert puerto o1y2 SetSensorLight((IN_2 SetSensorLight IN_2); ); while (true) { OnFwd((OUT_AC OnFwd OUT_AC,80 ,80); ); // // Tene Tenemos mos 2 moto motores res conect conectado adoss en A y C until( until(SENSOR_1 <= UMBRAL || SENSOR_2 <= UMBRAL); if (SENSOR_1 <= UMBRAL) { Float(OUT_A); Float (OUT_A); until( until(SENSOR_1 > UMBRAL); } else if (SENSOR_2 <= UMBRAL) { Float((OUT_C Float OUT_C); ); until( until(SENSOR_2 > UMBRAL); } } }
¿PREGUNTAS?
DENNIS MARTINEZ CROVO [email protected]
GRACIAS !