Vous êtes sur la page 1sur 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
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 Botón de selección


Izquierda Derecha
Cancelación
o nivel anterior
ENTRADAS Y SALIDAS
E/S
LADRILLO NXT

Entradas del ladrillo Salidas del ladrillo


1 A
2 B
3 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 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 Opciones de
manejo del ladrillo

Menú principal

Opciones de
manejo de archivos Editor de código
Controles del NXT
Detener ejecución
Envío del programa
Compilación del código
Ejecución del programa

BrickPiano
Enviar mensajes Conectar
Control Analizando Desconectar
Control remoto
directo el ladrillo
Apagar
Diagnóstico BrickJostick Analizador el ladrillo
configurable

Mapa de
memoria
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:
– 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);
Entradas
Inicialización de Sensores
• Inicialización
Instrucciónes:
SetSensorTouch(<Entrada>);
SetSensorLight(< Entrada >);
SetSensorSound(< Entrada >);
SetSensorTemperature(< Entrada >);
* SetSensorLowspeed(< Entrada >);

Ej: SetSensorLight(IN_2);
Entradas
Lectura de Sensores
Referencia:
SENSOR_<N>
Ej: SENSOR_3
Instrucció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 variables
bool 8 bit unsigned
byte, unsigned char 8 bit unsigned
char 8 bit signed
unsigned int 16 bit unsigned
short, int 16 bit signed
unsigned long 32 bit unsigned
long 32 bit signed
string Array of byte
struct User-defined structure types
Arrays 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 2 sensores
#define UMBRAL 55
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 !