Presentacion NXT Lego
Presentacion NXT Lego
Presentacion NXT Lego
La línea Lego Mindstorms nació en una época difícil para Lego, a partir de
un acuerdo entre Lego y el MIT. Según este trato, Lego financiaría
investigaciones del grupo de epistemología y aprendizaje del MIT sobre
cómo aprenden los niños y a cambio obtendría nuevas ideas para sus
productos, que podría lanzar al mercado sin tener que pagar regalías al
MIT. Un fruto de esta colaboración fue el desarrollo del MIT
Programmable Brick (Ladrillo programable).
Presentación MIT (Massachusetts Institute of Technology)
Además, Lego dispuso de varios kits para desarrolladores según las características de los
programas que estuvieran desarrollando:
•Software Developer Kit (SDK), que incluía los controladores del puerto de USB, archivos
ejecutables y referencia a los bytecodes.
•Hardware Developer Kit (HDK), incluía la documentación y esquemas para los sensores de
NXT.
•Bluetooth Developer Kit (BDK), documentos de los protocolos usados para la comunicación
Bluetooth.
El controlador NXT
La razón de que LEGO decidiese hacer esto es seguridad, de esta forma no se puede conectar
nada extraño al NXT. En el set del NXT versión educativa encontramos 7 cables de este tipo:
1 de 210 mm
4 de 370 mm
2 de 500 mm
Brújula electrónica
Libre distribucion. No se puede impedir la venta o distribucion del programa o parte de el.
Codigo fuente. El programa debe incluir su codigo fuente y no se puede restringir su
redistribucion.
Trabajos derivados. No debe impedirse realizar modificaciones o trabajos derivados del
programa y debe permitirse que estos sean distribuidos bajo mismos terminos del software
original.
Condiciones Open Source
Integridad del codigo de fuente original. Puede se exige que la versioon modificada del
programa tenga un nombre y numero de version diferente que el programa original para
proteger al autor original de la responsabilidad de las nuevas versiones.
No discriminacion contra personas o grupos. Las condiciones de uso del programa no
pueden discriminar contra una persona o un grupo de personas.
Distribucion de la licencia. Los derechos del programa deben aplicarse a todos quienes se
redistribuyen el programa sin ninguna condicion adicional.
La licencia no debe ser especıfica de un producto. Los derechos garantizados al usuario
del programa no deben depender de que el programa forme parte de una distribucion o
paquete particular de software.
La licencia no debe restringir otro software. La licencia no debe poner restricciones en
otros programas que se distribuyen junto con el software licenciado.
La licencia debe ser tecnologicamente neutra. No puede existir ninguna disposicion de la
licencia que obligue al uso de una tecnologıa concreta.
Ventajas Open Source Lego
Bajo costo de adquisicion y libre uso: Aunque se debe pagar por el Kit de robot, el
firmaware que forma parte del sistema operartivo de este puede ser actualizado, corregido o
mejorado para cumplir requerimientos específicos.
Tiende a ser muy eficiente. Es mejorado por muchos investigadores alrededor del mundo
que reutilizan el conocimiento de otras experiencias.
Permite crear nuevo software de programación para los robots. Se conoce la totalidad del
firmware, hardware, las interfases USB y BlueTooth que son entregadas a los desarrolladores
sin requerimientos de “hackeo”.
El software puede ser optimizado y adaptado para usos específicos del laboratorio
Permite usar los sensores y actuadores con otras plataformas de hardware y software más
complejas (Matlab-LabView-GPS-..) dejándole abierto para todos los procesos de
investigación.
La compañía Lego y apoya respalda la tecnología Open source. Lego hace una diferencia
en el modelo estándar de comercialización.
Amplio campo de expansion de uso en universidades del mundo.
Desventajas Open Source Lego
http://www.oreillynet.com/pub/a/oscon2002/jc_photos4.html
BrickOS
http://brickos.sourceforge.net/index.html
Open Source
leJOS
http://lejos.sourceforge.net/
Open Source
pbLua
http://lejos.sourceforge.net/
http://bricxcc.sourceforge.net/nbc/
Not eXactly C es un
lenguague de alto nivel,
similar al C, construido
sobre el compilador NBC.
Open Source
Bricx Command Center 3.3
http://bricxcc.sourceforge.net/
Open Source
NXT#
http://nxtsharp.fokke.net/
Free software
AForge.Net
http://www.aforgenet.com/ o http://code.google.com/p/aforge/
Es un un framework que
permite el desarrollo de
sistemas con visión artificial,
Redes Neuronales, algoritmos
genéticos y robótica. Este
permite controlar el robot NTX
de manera fácil desde C# con
sofisticados controles y
opciones gracias a sus otras
funcionalidades.
LGPL v3 license
MindSqualls
http://www.mindsqualls.net/
Free Software
Acuerdo de Licencia NXT-G
VISIÓN CONSTRUCTIVISTA
Jean William Fritz Piaget (Neuchâtel, Suiza, 9 de agosto de 1896 - Ginebra, 16 de septiembre de 1980)
IDEAS CONSTRUCTIVISTAS
http://www.amazon.com/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746
Una vez escrito el programa, debe ser compilado, es decir convertido en el código máquina del
NXT de modo que éste pueda entenderlo y ejecutarlo, y descargado (downloading) al robot
mediante el cable USB o vía Bluetooth.
Errores en los programas
Cuando tecleamos los
programas es muy
probable que
cometamos errores. El
compilador los localiza
e informa de su
posición en la parte
inferior de la ventana.
Ejemplo 1. Programa para que
el robot haga 10 cuadros
/* 10 CUADRADOS
Este programa hace que el robot se mueva 10 cuadrados
*/
task main()
{
SetSensorTouch(IN_1);
OnFwd(OUT_AC, 75);
while (true)
{
if (SENSOR_1 == 1)
{
OnRev(OUT_AC, 75); Wait(300);
OnFwd(OUT_A, 75); Wait(300);
OnFwd(OUT_AC, 75);
}
}
}
Ejemplo 5. Utilizando el Sensor
de Luz (El Robot no se sale de
la pista)
#define UMBRAL 40
task main()
{
SetSensorLight(IN_3);
//OnFwd(OUT_AC, 75);
OnFwdReg(OUT_AC,75,OUT_REGMODE_SYNC);
while (true)
{
if (Sensor(IN_3) > UMBRAL)
{
Off(OUT_AC);
}
//Wait(1000);
//OnFwd(OUT_AC, 75);
OnFwdReg(OUT_AC,75,OUT_REGMODE_SYNC);
}
}
Ejemplo 6. Utilizando el Sensor
de Luz (Seguidor de Línea)
El principio básico en el que se basa el seguidor de línea es que el robot intente mantenerse en el borde
de la línea negra, alejándose de ella si el nivel de luz es muy pequeño ( y el sensor de luz se sitúa en mitad
de la línea blanca) y girando hacia ella si el sensor se sale de la misma y detecta un nivel de luz alto.
#define UMBRAL 40
task main()
{
SetSensorLight(IN_3);
OnFwd(OUT_AC, 75);
while (true)
{
if (Sensor(IN_3) <= UMBRAL)
{
OnRev(OUT_C, 75);
Wait(100);
until(Sensor(IN_3) <= UMBRAL);
OnFwd(OUT_AC, 75);
}
}
}
Ejemplo 7. Utilizando el sensor
de Ultrasonido
El sensor de ultrasonidos funciona como un sónar: envía un frente de ondas de ultrasonidos para que se
refleje en algún objeto y luego mide el tiempo que tarda en recibir su eco, para así conocer a qué distancia
se encuentra. Con él puedes construir un robot que esquive un obstáculo antes de chocar con él.
6. Cada vez que quieren controlar a los LEGO NXT desde el PC, abra el software de Bluetooth,
elija la opción "NXT" dispositivo Bluetooth y abrir una conexión (normalmente, RightClick y
elegir la opción "Conectar"). Una vez hecho esto, puede utilizar el nombre del puerto de serie
en MATLAB
>> nxtdemo('COM40')
>> nxt = legoNXT('COM40');
Correr la Demo
>> nxtdemo('COM40')
>> nxt = legoNXT('COM40');
Manejo de puertos
Motores
– nxt.PortA
– nxt.portB
– nxt.PortC
Sensores
– nxt.Port1 (touch)
– nxt.Port2 (sound)
– nxt.Port3 (light_fon)
– nxt.Port4 (distance)
Ejemplo de uso - Control de
motores
Para especificar el punto de control de potencia para el motor del puerto A
>> start(nxt.PortA)
>> start(nxt.PortA, 30); % supera el nivel de potencia especificado a través de SET
>> stop(nxt.PortA)
Ejemplo de uso - Control de
motores (Cont)
Utilizando nombre para los puertos
>> methods(nxt.PortA)
>> v = getdata(nxt.Port1)
v=
20
>> v = getdata(nxt.Port2)
v=
20
>> v = getdata(nxt.Port4)
v=
35
>> v = getdata(nxt.Port3)
v=
49
>> getBatteryLevel(nxti)
Taller de Programación de NXT
en Matlab