tag:blogger.com,1999:blog-79423203595746472522008-05-09T17:30:26.084-05:00Proyecto NXT MindStormsDaniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-7942320359574647252.post-59373701741103761032007-11-02T09:38:00.000-05:002007-11-02T09:49:00.213-05:00Red neuronal para LeJOS MindStorm NXTEste código es traducido de su original para el MindStorm RXC. Es un algoritmo de propagación hacia atras "Backpropagation Network". Nos tomamos el trabajo de <br />traducirlo para el nuevo modelo. Disfrutenlo.<br /><br />El código y su explicación se encuentran en la siguiente dirección:<br />http://www.javaworld.com/javaworld/jw-05-2005/jw-0516-lego.html<br /><br /><br />import lejos.nxt.Button;<br />import lejos.nxt.LCD;<br />import lejos.nxt.Motor;<br />import lejos.nxt.SensorConstants;<br />import lejos.nxt.SensorPort;<br />import lejos.nxt.Sound;<br /><br />public class AlgoritmoAprendizaje {<br /> public static LegoMindstormBP bpn = new LegoMindstormBP();<br /><br /> public static void main(String args[]) throws InterruptedException<br /> {<br /><br /><br /> int i, white;<br /> int inp[] = {0,0,0};<br /> int out[] = {0,0};<br /><br /><br /> Sound.beep();<br /> LCD.drawString( "Train",10,10 );<br /><br /><br /> // Train bpn 500 epochs, sit down and wait about 5 minutes!<br /> for(i=0;i<500;i++) {<br /> bpn.train(1);<br /> LCD.drawInt( bpn.trainedEpochs,0,10);<br /> }<br /><br /><br /> SensorPort.S1.setTypeAndMode(SensorConstants.TYPE_SWITCH,<br /> SensorConstants.MODE_BOOLEAN );<br /> <br /> SensorPort.S2.setTypeAndMode(SensorConstants.TYPE_SWITCH,<br /> SensorConstants.MODE_RAW );<br /> <br /> SensorPort.S3.setTypeAndMode(SensorConstants.TYPE_LIGHT_ACTIVE,<br /> SensorConstants.MODE_BOOLEAN );<br /><br /><br /><br /> Sound.twoBeeps();<br /> SensorPort.S2.activate(); <br /> white = SensorPort.S2.readRawValue();<br /><br /><br /> Motor.A.setPower(1);<br /> Motor.C.setPower(1);<br /><br /><br /> Sound.twoBeeps();<br /><br /><br /> while( !Button.ENTER.isPressed() ) {<br /><br /><br /> LCD.drawInt(SensorPort.S2.readRawValue(),0,20 );<br /><br /><br /> if( SensorPort.S1.readBooleanValue() )<br /> inp[0] = 1; // Sensor 1 on<br /> else<br /> inp[0] = 0; // Sensor 1 off<br /><br /><br /> if( SensorPort.S2.readRawValue() > white + 50 )<br /> inp[1] = 1; // Sensor 2 over black floor<br /> else<br /> inp[1] = 0; // Sensor 2 over white floor<br /><br /><br /> if( SensorPort.S3.readBooleanValue() )<br /> inp[2] = 1; // Sensor 3 on<br /> else<br /> inp[2] = 0; // Sensor 3 off<br /><br /><br /> bpn.test( inp, out );<br /><br /><br /> if( out[0] == 1 )<br /> Motor.A.forward();<br /> else<br /> Motor.A.backward();<br /><br /><br /> if( out[1] == 1 )<br /> Motor.C.forward();<br /> else<br /> Motor.C.backward();<br /><br /><br /> Thread.sleep( 500 );<br /><br /><br /> } // while()<br /><br /><br /> SensorPort.S2.passivate();<br /> Motor.A.stop();<br /> Motor.C.stop();<br /> Sound.beep();<br /><br /><br /> } // main()<br /><br /><br />} // class LMbpn<br /><br /><br /><br /><br /><br />class LegoMindstormBP {<br /><br /><br /> public static int data1[][] = {{0,0,0}, {1,1}};<br /> public static int data2[][] = {{1,0,0}, {1,0}};<br /> public static int data3[][] = {{0,0,1}, {0,1}};<br /> public static int data4[][] = {{0,1,0}, {0,0}};<br /><br /><br /> public static double input[] = {0,0,0,1};<br /> public static double w1[][] = {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}};<br /> public static double hidden[] = {0,0,1};<br /> public static double w2[][] = {{0,0}, {0,0}, {0,0}};<br /> public static double output[] = {0,0};<br /> public static double delta2[] = {0,0};<br /> public static double delta1[] = {0,0,0};<br /><br /><br /> public static int trainedEpochs = 0;<br /><br /><br /> LegoMindstormBP() {<br /> byte i, j;<br /> // Initialize weights randomly between 0.1 and 0.9<br /> for(i=0; i< w1.length; i++)<br /> for(j=0; j< w1[i].length; j++)<br /> w1[i][j] = Math.random()*0.8+0.1;<br /><br /><br /> for(i=0; i< w2.length; i++)<br /> for(j=0; j< w2[i].length; j++)<br /> w2[i][j] = Math.random()*0.8+0.1;<br /> }<br /><br /><br /> public static void train(int e) {<br /> for(int i=0; i< e; i++) {<br /> // Call method learn with training data<br /> learn( data1[0], data1[1] );<br /> learn( data2[0], data2[1] );<br /> learn( data3[0], data3[1] );<br /> learn( data4[0], data4[1] );<br /> trainedEpochs++;<br /> }<br /> }<br /><br /><br /> public static void learn( int inp[], int out[] ) {<br /> int i, j;<br /> double sum, out_j;<br /><br /><br /> // Initialize input units<br /> for(i=0; i< inp.length; i++)<br /> input[i] = inp[i];<br /><br /><br /> // Calculate hidden units<br /> for(j=0; j< hidden.length-1; j++) {<br /> sum = 0;<br /> for(i=0; i< input.length; i++)<br /> sum = sum + w1[i][j]*input[i];<br /><br /><br /> hidden[j] = 1 / ( 1 + Math.exp(-sum));<br /> }<br /><br /><br /> // Calculate output units<br /> for(j=0; j< output.length; j++) {<br /> sum = 0;<br /> for(i=0; i< hidden.length; i++)<br /> sum = sum + w2[i][j]*hidden[i];<br /><br /><br /> output[j] = 1 / (1 + Math.exp(-sum));<br /> }<br /><br /><br /><br /><br /><br /> // Calculate delta2 errors<br /> for(j=0; j< output.length; j++) {<br /> if( out[j] == 0 )<br /> out_j = 0.1;<br /> else if( out[j] == 1 )<br /> out_j = 0.9;<br /> else<br /> out_j = out[j];<br /> delta2[j] = output[j]*(1-output[j])*(out_j-output[j]);<br /> }<br /><br /><br /> // Calculate delta1 errors<br /> for(j=0; j< hidden.length; j++) {<br /> sum = 0;<br /> for(i=0; i< output.length; i++)<br /> sum = sum + delta2[i]*w2[j][i];<br /><br /><br /> delta1[j] = hidden[j]*(1-hidden[j])*sum;<br /> }<br /><br /><br /> // Adjust weights w2<br /> for(i=0; i< hidden.length; i++)<br /> for(j=0; j< output.length; j++)<br /> w2[i][j] = w2[i][j] + 0.35*delta2[j]*hidden[i];<br /><br /><br /> // Adjust weights w1<br /> for(i=0; i< input.length; i++)<br /> for(j=0; j< hidden.length; j++)<br /> w1[i][j] = w1[i][j] + 0.35*delta1[j]*input[i];<br /> }<br /><br /><br /> public static void test(int inp[], int out[]) {<br /> int i, j;<br /> double sum;<br /><br /><br /> // Initialize input units<br /> for(i=0; i< inp.length; i++)<br /> input[i] = inp[i];<br /><br /><br /> // Calculate hidden units<br /> for(j=0; j< hidden.length-1; j++) {<br /> sum = 0;<br /> for(i=0; i< input.length; i++)<br /> sum = sum + w1[i][j]*input[i];<br /><br /><br /> hidden[j] = 1 / ( 1 + Math.exp(-sum));<br /> }<br /><br /><br /> // Calculate output units<br /> for(j=0; j< output.length; j++) {<br /><br /><br /> sum = 0;<br /> for(i=0; i< hidden.length; i++)<br /> sum = sum + w2[i][j]*hidden[i];<br /><br /><br /> output[j] = 1 / (1 + Math.exp(-sum));<br /> }<br /><br /><br /> // Assign output to param out[]<br /> for(i=0; i< output.length; i++)<br /> if( output[i] >= 0.5 )<br /> out[i] = 1;<br /> else<br /> out[i] = 0;<br /> }<br />}Daniel Gómezhttp://www.blogger.com/profile/16651665560267217312noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-148034430019362152007-11-02T09:33:00.000-05:002007-11-02T09:36:35.900-05:00Convierte a tu MindStorm NXT en un reproductor de sonido/*<br /> *Este código reproduce los sonidos que el Lego MindStorm NXT escucha.<br /> *Puede ser un código base para hacer cosas interesantes tales como emular<br /> *el comportamiento de un loro para melodías...jejeje<br /> */<br />import lejos.nxt.Button;<br />import lejos.nxt.LCD;<br />import lejos.nxt.SensorPort;<br />import lejos.nxt.SensorPortListener;<br />import lejos.nxt.Sound;<br />import lejos.nxt.SoundSensor;<br /><br /><br /><br />public class Canta implements SensorPortListener{<br /><br /> /**<br /> * @param args<br /> */<br /> String changed = "State changed";<br /> String val = "Value:";<br /> String oldVal = "old Value:";<br /> String free = "Free Mem:"; <br /> SoundSensor sound = new SoundSensor(SensorPort.S1);<br /><br /> <br /> public static void main(String[] args) {<br /> // TODO Auto-generated method stub<br /> <br /> Canta canta= new Canta();<br /> try {<br /> canta.run();<br /> Button.ESCAPE.waitForPressAndRelease();<br /> } catch (InterruptedException e) {<br /> // TODO Auto-generated catch block<br /> //System.out.println(e);<br /> }<br /> <br /> LCD.clear();<br /> LCD.drawString("Finished", 3, 4);<br /> LCD.refresh();<br /> <br /><br /> }<br /><br /> @Override<br /> public void stateChanged(SensorPort source, int oldValue, int newValue) {<br /> // TODO Auto-generated method stub<br /> if (source == SensorPort.S2)<br /> {<br /> LCD.clear();<br /> LCD.drawString(changed,0,0);<br /> LCD.drawString(val, 0, 1);<br /> LCD.drawInt(newValue,7,1);<br /> LCD.drawInt(sound.readValue(), 12, 1);<br /> LCD.drawString(oldVal, 0, 2);<br /> LCD.drawInt(oldValue, 11, 2);<br /> LCD.drawString(free, 0, 4);<br /> LCD.drawInt((int)(Runtime.getRuntime().freeMemory()),10,4);<br /> LCD.refresh();<br /> try { <br /> Thread.sleep(5000); <br /> } catch (InterruptedException e) {}<br /> Sound.playTone(newValue, 1000);<br /> <br /> }<br /><br /> <br /> }<br /> <br /> private void run()<br /> <br /> {<br /> SensorPort.S2.addSensorPortListener(this);<br /> <br /> <br /> }<br /><br /> <br />}Daniel Gómezhttp://www.blogger.com/profile/16651665560267217312noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-92207948443442707922007-11-02T09:24:00.000-05:002007-11-02T09:32:03.211-05:00Pon a caminar a tu Mindstorm NXT con LeJOS/*El siguiente programa es el script para poner a caminar a tu MindStorm NXT<br /> *cuando le presionas el Touch Sensor camina para atras...<br /> */<br /><br />import lejos.nxt.Button;<br />import lejos.nxt.LCD;<br />import lejos.nxt.Motor;<br />import lejos.nxt.SensorPort;<br />import lejos.nxt.TouchSensor;<br /><br />public class Caminar {<br /><br /> /**<br /> * @param args<br /> */<br /> <br /> <br /> public static void main(String[] args) {<br /> // TODO Auto-generated method stub<br /> Motor.B.setSpeed(200);<br /> Motor.C.setSpeed(200);<br /> <br /> <br /> while(!Button.ESCAPE.isPressed()){<br /> Motor.B.forward();<br /> Motor.C.forward(); <br /> if(SensorPort.S1.readValue()==0){<br /> Motor.B.backward();<br /> Motor.C.backward(); <br /> }<br /> <br /> <br /> }<br /> <br /> LCD.clear();<br /> LCD.drawString("Finished", 3, 4);<br /> LCD.refresh();<br /> }<br /><br />}Daniel Gómezhttp://www.blogger.com/profile/16651665560267217312noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-4069581064144382572007-10-28T22:07:00.000-05:002007-11-02T02:56:28.960-05:00NXT Saliendo del laberinto<div style="text-align: justify;">Bueno, este video va muy de la mano con lo que se ha pretendido con el curso: Lograr que un robot encuentre la salida a través de un laberinto, esta vez programado en un NXT, acá va el video<br /></div><br /><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/mWXQCYZBxOU&rel=1"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/mWXQCYZBxOU&rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object>MOMPIRRARUMhttp://www.blogger.com/profile/03111438587671838782noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-16943326096022320172007-10-22T11:03:00.000-05:002007-11-02T02:40:17.745-05:00NXT que resuelve el cubo de rubik<div style="text-align: justify;">Bueno, encontramos una noticia que nos pareció muy interesante para compartir acá en el blog, un robot nxt programado para resolver el cubo de rubik!!!, esta es la noticia:<br /><br />"Daniele benedettelli ha diseñado un sistema resolvedor del popular cubo de rubik basado en un sólo brick de Lego Mindstorms NXT, ¡con sólo tres servos!<br /><br />Un servomotor actua de junta prismática que empuja el lado del cubo (el lado rojo en la foto); otro servomotor rota la plataforma giratoria del robot, y el tercero tiene una doble función para ayudar el brazo empujador a acomodar el brazo en el soporte y para sujetar el cubo mientras la base inferior rotatoria gira."<br /></div><br /><div style="text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_A7JkCU6ZZPA/RsXngrelu2I/AAAAAAAAABc/7O5F2tr-n2U/s320/lego+rubik.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://bp2.blogger.com/_A7JkCU6ZZPA/RsXngrelu2I/AAAAAAAAABc/7O5F2tr-n2U/s320/lego+rubik.jpg" alt="" border="0" /></a>"El robot utiliza dos sensores de contacto como detectores de límite de los brazos y un sensor de luz para encontrar la posición inicial de la base rotatoria.<br /><br />Mejor que enrollarse mas en mecánica, para entenderlo todo lo mejor es echar un vistazo a este video!"<br /><br /><object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/3QOvEG27Gt4&rel=1"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/3QOvEG27Gt4&rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object><br /><br /><div style="text-align: justify;">"El software LRU v 3.0 soporta comunicación USB con el ladrillo NXT.<br />La webcam captura la imagen y tiene un algoritmo de reconocimiento de los colores."<br /><br />Increible No!!!<br /><br />Esta noticia fue extraida de la siguiente página:<br /><a href="http://www.teknear.com/story/robot-lego-mindstorms-nxt-soluciona-cubo-rubik">http://www.teknear.com/story/robot-lego-mindstorms-nxt-soluciona-cubo-rubik</a><br /></div></div>MOMPIRRARUMhttp://www.blogger.com/profile/03111438587671838782noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-48574714136796690592007-10-16T08:44:00.000-05:002007-11-02T02:30:59.262-05:00Página recomendada<div style="text-align: justify;">Bueno, estuvimos buscando algunos sitios en internet, y acá recomendamos el siguiente sitio en español, ideal para principiantes en donde se explican las características del nuevo Lego NXT, y las cuatro posibles construcciones que se pueden realizar: El tribot, el robot industrial, el escorpión, y el alpharex, el vinculo de la página es el siguiente:<br /></div><br /><a href="http://ro-botica.com/mindstorms.asp">http://ro-botica.com/mindstorms.asp</a>MOMPIRRARUMhttp://www.blogger.com/profile/03111438587671838782noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-22567116623648066272007-10-12T14:30:00.000-05:002007-11-02T02:18:30.886-05:00Demostración del Alpharex Bailando<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/ikbaDv6aNc4&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/ikbaDv6aNc4&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>MOMPIRRARUMhttp://www.blogger.com/profile/03111438587671838782noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-24495466380888702992007-10-12T13:51:00.000-05:002007-11-02T02:11:19.341-05:00Construcción del carro NXT<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Y-1_TPQn2dM&rel=1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/Y-1_TPQn2dM&rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>MOMPIRRARUMhttp://www.blogger.com/profile/03111438587671838782noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-48293228774001003372007-10-11T19:54:00.000-05:002007-10-31T20:04:09.023-05:00Instalación LeJOS: paso 6<strong><span style="font-family:trebuchet ms;">Comandos LeJOS</span></strong><br /><ul><li><span style="font-family:trebuchet ms;"><strong>nxjflash</strong> - flashea el firmware</span></li><li><span style="font-family:trebuchet ms;"><strong>nxjc</strong> - compila un programa en Java para el LeJOS NXJ</span></li><li><span style="font-family:trebuchet ms;"><strong>nxj</strong> - linkea, sube y opcionalemente corre un programa en la unidad</span></li><li><span style="font-family:trebuchet ms;"><strong>nxjlink</strong> - linkea un programa</span></li><li><span style="font-family:trebuchet ms;"><strong>nxjupload</strong> - sube y opcionalemente corre un programa en la unidad</span></li><li><span style="font-family:trebuchet ms;"><strong>nxjbrowse</strong> - explorador de archivos NXJ</span></li><li><span style="font-family:trebuchet ms;"><strong>emu-lejosrun</strong> - emula un programa NXJ en Unix</span></li></ul><p><span style="font-family:trebuchet ms;">Para mas informacion, ir a la guia ubicada en C:\lejos_nxj\README.html (en Ingles). Recomiendo que vean esta guia de LeJOS para mas informacion sobre LeJOS y MindStorms NXT.</span></p><p><span style="font-family:trebuchet ms;"> <a href="http://attachments.wetpaintserv.us/5acYoL0QvMupMO27t2gk%2BA%3D%3D123453">http://attachments.wetpaintserv.us/5acYoL0QvMupMO27t2gk%2BA%3D%3D123453</a></span></p><p> </p>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-58821818828741941972007-10-11T19:01:00.000-05:002007-10-31T19:53:48.451-05:00Instalación LeJOS: paso 5<div align="justify"><span style="font-family:trebuchet ms;"><strong>Instalacion del Firmware en la unidad NXT.<br /><br /></strong></span></div><div align="justify"><strong><span style="font-family:Trebuchet MS;"></span></strong></div><div align="justify"><span style="font-family:trebuchet ms;"></span></div><div align="justify"><span style="font-family:trebuchet ms;">Hasta donde se, la instalacion de este nuevo firmware no pone en ningun momento en peligro la unidad NXT. Si el firmware llegara a presentar algun fallo, la unidad tiene un boton de "reset" para volver a montar el firmware. Siempre se puede volver al firmware original de MindStorms con el software que provee Lego.</span></div><div align="justify"><span style="font-family:trebuchet ms;"><br />Es importante leer el manual del usuario para conocer como hacemos estos procedimientos de flasheo. De todas formas vale la pena aclarar, que no me hare responsable por ningun daño que pueda sufrir la unidad por usos indebidos del firmware, sabemos que por el momento, LeJOS es un proyecto Beta. Personalmente, aunque he tenido a veces problemas, he podido siempre restaurar del LeJOS al MindStorms original y viceversa.</span></div><div align="justify"><span style="font-family:Trebuchet MS;"><br />Para flashar el LeJOS, conectamos la unidad NXT al puerto USB del computador, presionamos el boton "reset" de la unidad por mas de 4 segundos, la unidad hara una señal sonora y el sensor de luz en caso de estar conectado iluminara. En ventana de CMD escribimos el comando <strong><em>nxjflash.<br /><br /></em></strong></span></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-7917562837417223122007-10-11T18:47:00.000-05:002007-10-31T18:59:58.101-05:00Instalación LeJOS: paso 4<strong><span style="font-family:trebuchet ms;">Comprobando instalacion</span></strong><br /><span style="font-family:trebuchet ms;"></span><br /><span style="font-family:trebuchet ms;">Para comprobar que todo este bien, vamos a abrir una ventana de CMD, en Inicio, Ejecutar, y escribimos CMD. </span><br /><span style="font-family:trebuchet ms;"></span><br /><span style="font-family:trebuchet ms;">Aqui vamos a probar el Java. Escribimos <em>javac</em>: Si todo esta bien, obtenemos una serie de comandos disponibles para usar esta aplicacion: el Java ha quedado bien configurado.</span><br /><span style="font-family:trebuchet ms;"></span><br /><span style="font-family:trebuchet ms;">Para comprobar el LeJOS, escribimos <em>nxjc. </em>Nos debe igualmente mostrar comandos utilizables para la aplicacion y sabremos que esta bien instalado.</span>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-43244355349085040512007-10-10T17:44:00.000-05:002007-10-31T18:22:39.945-05:00Instalación LeJOS: paso 3<strong><span style="font-family:trebuchet ms;">Problema Con la Version 0.4beta</span></strong><br /><br /><span style="font-family:trebuchet ms;">En la ultima version de LeJOS (<strong>lejos NXJ 0.4beta</strong>), hay un problema con el archivo <em>nxjc.bat</em>, que se encuentra en <em>C:\lejos_nxj\bin</em> el cual hay que abrirlo con el wordpad y añadirle unas comillas en la linea que comienza con "javac".</span><br /><br /><span style="font-family:trebuchet ms;">El archivo debería quedar de la siguiente manera.</span><br /><br /><span style="font-family:trebuchet ms;"></span><br /><span style="font-family:trebuchet ms;"><img id="BLOGGER_PHOTO_ID_5127643764960774594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_ul_nj9fwNFY/RykM1jk7ycI/AAAAAAAAACw/bXzlg6_fDsM/s400/test+(Large).jpg" border="0" /><br /><em>javac -source 1.3 -target 1.1 -bootclasspath "%NXJ_HOME%\lib\classes.jar;%CLASSPATH%" %*</em></span>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-47359625558870063912007-10-10T13:34:00.000-05:002007-10-31T14:08:28.298-05:00Instalación LeJOS: paso 2<div align="justify"><span style="font-family:trebuchet ms;"><strong>Variables de Entorno</strong><br /></div></span><div align="justify"><strong></strong></div><div align="justify"><br /></div><div align="justify"><span style="font-family:trebuchet ms;">Esta puede ser una de las tareas mas complicadas para algunos: vamos a configurar unas variables de entorno en el Sistema para que funcionen bien los programas. </span></div><div align="justify"><br /></div><div align="justify"><span style="font-family:trebuchet ms;"></span></div><div align="justify"><span style="font-family:trebuchet ms;">Primero, vamos al menú Inicio, Mi PC. Aqui damos click con el boton derecho del mouse y seleccionamos propiedades. Tenemos una ventana llamada Propiedades del Sistema, aqui, vamos a la pestaña Opciones Avanzadas.<br /><br /></span></div><div align="justify"><span style="font-family:Trebuchet MS;"></span></div><div align="justify"><span style="font-family:trebuchet ms;"></span></div><span style="font-family:trebuchet ms;"><img id="BLOGGER_PHOTO_ID_5127573516475681138" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_ul_nj9fwNFY/RyjM8jk7yXI/AAAAAAAAACI/FzIuMK3AL-0/s320/prop.JPG" border="0" /><br /></span><div align="justify"><span style="font-family:trebuchet ms;">Damos click al boton señalado en el grafico anterior y llegamos a la ventana para agregar variables del sistema. Damos click al boton Nueva para crear las variables:</span></div><ol><li><div align="justify"><span style="font-family:trebuchet ms;">Vamos a crear una variable llamada <strong>JAVA_HOME</strong> cuyo valor (En la mayoria de los casos, en la instalacion por defecto del Java) sera <em>C:\Archivos de programa\Java\jdk1.6.0_03<br /><br /></em></span></div></li><li><div align="justify"><span style="font-family:trebuchet ms;">Creamos la variable <strong>NXJ_HOME</strong> del mismo modo que creamos la anterior. Para este ejemplo, el valor seria <em>C:\lejos_nxj</em> ya que aqui descomprimimos el LeJOS.<br /><br /></span></div></li><li><div align="justify"><span style="font-family:trebuchet ms;">Buscamos una variable ya existente en las mismas variables del sistema llamada <strong>Path.</strong> Aqui tenemos que ser muy cuidadosos, porque no queremos borrar el valor de esta variable, solo queremos agregar al final de el valor que aqui aparece lo siguiente: <strong>;lejos_nxj/bin</strong> donde el punto y coma (;) es el separador del valor anterior. <strong><span style="color:#cc0000;">Este paso es el mas delicado de todos, tener extremo cuidado de no ir a borrar ningun valor del Path. Si no sabemos lo que estamos haciendo, podemos dañar el sistema.</span></strong></span></div></li></ol><p align="justify"> </p><p align="justify"> </p>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-20047568276489545632007-10-10T12:01:00.000-05:002007-10-31T18:38:09.387-05:00Instalación LeJOS: paso 1<div align="justify"><span style="font-family:trebuchet ms;">Para la instalacion del lejos, necesitaremos los siguientes programas:</span></div><ol><li><div align="justify"><a href="http://sourceforge.net/project/showfiles.php?group_id=9339&package_id=217619"><span style="font-family:trebuchet ms;">LeJOS</span></a></div></li><li><div align="justify"><a class="external" href="http://sourceforge.net/project/showfiles.php?group_id=78138" target="_blank" rel="nofollow"><span style="font-family:trebuchet ms;">LibUsb-Win32</span></a></div></li><li><div align="justify"><a href="http://cache.lego.com/upload/contentTemplating/MindstormsUpdate/otherfiles/2057/upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip"><span style="font-family:trebuchet ms;">MINDSTORMS NXT Driver v1.02</span></a></div></li></ol><p align="justify"><span style="font-family:trebuchet ms;">Ademas, debes tener el Java SE JDK, aqui trabajare con la ultima version (<strong>jdk-6u3-windows-i586-p.exe</strong>) que la puedes bajar desde la pagina oficial de Java </span><a href="http://java.sun.com/"><span style="font-family:trebuchet ms;">http://java.sun.com</span></a><span style="font-family:trebuchet ms;">. Se recomienda trabajar con la verson de Java 5 en adelante.</span></p><p align="justify"><span style="font-family:trebuchet ms;">Descomprimimos el LeJOS (lejos_NXJ_win32_0_4_0beta.zip), recomendablemente en la raiz (<em>C:</em>) (Podemos descomprimir este archivo con WinZip, </span><a href="http://www.winzip.com/"><span style="font-family:trebuchet ms;">http://www.winzip.com</span></a><span style="font-family:trebuchet ms;">). Tendriamos el programa en la carpeta <em>C:\lejos_nxj</em></span></p><p align="justify"><span style="font-family:Trebuchet MS;">Debemos instalar el driver para el NXT block, el archivo que bajamos MINDSTORMS NXT Driver v1.02 </span><span style="font-family:trebuchet ms;">(<strong>upload1F7B2420-A5ED-44FF-9460-E262657029DC.zip) </strong>lo descomprimimos e instalamos el driver (Esto es para no instalar toda la Suite del MindStorms original. Si ya lo ha hecho, no necesita instalar este driver)</span></p><p align="justify"><span style="font-family:trebuchet ms;">LibUsb-Win32 (<strong>libusb-win32-filter-bin-0.1.12.1.exe</strong>) es un driver para poder conectar nuestro robot via USB. Debes instalar este driver antes de conectar la unidad NXT. Instala este programa siguiendo el proceso normal de instalacion. </span></p><p align="justify"><span style="font-family:trebuchet ms;"><strong>ATENCION </strong>este instalador se encuentra tambien dentro de la carpeta que acabamos de descomprimir <em>D:\ProyectoNXT\lejos_nxj\3rdparty\lib. </em>Tambien se puede descargar desde el link que se encuentra arriba.</span></p><p align="justify"><span style="font-family:trebuchet ms;">Ahora que tenemos el driver para poder conectar nuestro NXT.</span></p><p></p>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-53172872599715077292007-10-04T00:35:00.000-05:002007-10-31T13:32:29.701-05:00Instalación de LeJOS<div align="justify"><span style="font-family:trebuchet ms;">Ya logramos instalar el nuevo firmwara de LeJOS en el robot y en nuestro PC, ahora podemos desarrollar aplicaciones para el robot en Java. Si ya tuvieron la oportunidad de mirar el API del NXT les cuento que no es complicado para los que tienen alguna experiencia con Java.<br /><br /></span></div><div align="justify"><span style="font-family:trebuchet ms;"></span></div><div align="justify"><span style="font-family:trebuchet ms;">Publicare en el wiki los pasos a seguir para la instalacion de LeJOS, aunque ya hay varias versiones en la red, vale la pena publicar lo que funciono para nosotros.</span></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-70697586124620507832007-10-03T10:24:00.000-05:002007-10-17T11:25:20.605-05:00Contruccón del Alpharex<div align="justify"><span style="font-family:trebuchet ms;">Ya he subido al wiki las fotos de la construcción del <span class="blsp-spelling-error" id="SPELLING_ERROR_0">Alpharex</span> (El modelo que ven en la barra de la derecha), esto con el objetivo de que lo aprecien, pero el <span class="blsp-spelling-error" id="SPELLING_ERROR_1">tutorial</span> completo y detallado lo pueden encontrar con el material digital que te incluye tu propio robot, les voy a dejar la dirección para que entren directamente.</span><br /><span style="font-family:trebuchet ms;"></span><br /><a href="http://intart.wetpaint.com/page/Fotos+Construcci%C3%B3n"><span style="font-family:trebuchet ms;">http://intart.wetpaint.com/page/Fotos+Construcci%C3%B3n</span></a></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-58656257954865192302007-09-28T11:16:00.000-05:002007-10-17T11:24:45.511-05:00Wiki EAFIT<div style="text-align: justify;"><span style="font-family:trebuchet ms;">Vale la pena mencionar que en paralelo con este Blog, se esta desarrollando una pagina en el Wiki de la asignatura Ingenieria del Conocimiento. Puede ser util cuando se deseen publicar fotos y contenido un poco mas extenso. De cualquier forma se estara informando aqui cuando necesitemos ir a este Wiki.</span><br /><br /><a style="font-family: trebuchet ms;" href="http://intart.wetpaint.com/page/Lego+NXT">http://intart.wetpaint.com/page/Lego+NXT</a><br /><br /><span style="font-family:trebuchet ms;">En la Universidad Eafit se creo un grupo en el laboratorio de mecatronica a cargo del profesor Hans Ley Savelsberg. Estaremos muy contentos de poder trabajar con ellos y aportar ideas al grupo. Pueden visitar el Wiki del grupo.</span><br /><br /><a style="font-family: trebuchet ms;" href="http://www1.eafit.edu.co/wiki/index.php/Lego_MindStorms">http://www1.eafit.edu.co/wiki/index.php/Lego_MindStorms</a><br /></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-59222318530914270312007-09-27T20:06:00.000-05:002007-10-17T11:24:22.691-05:00Mas Lenguajes...<div style="text-align: justify;"><span style="font-family:trebuchet ms;">Tambien hay otros lenguajes muy poderosos que vale la pena mencionar. Estos usan el firmware original del Lego MindStorms a diferencia del LeJOS, que hay que reemplazar el firmware de la unidad NXT.</span><br /><br /><span style="font-family:trebuchet ms;">LabVIEW Graphical Programming </span><a style="font-family: trebuchet ms;" href="http://www.ni.com/mindstorms">http://www.ni.com/mindstorms</a><br /><span style="font-family:trebuchet ms;">NBC (Next Byte Codes) </span><a style="font-family: trebuchet ms;" href="http://bricxcc.sourceforge.net/nbc/">http://bricxcc.sourceforge.net/nbc/</a><br /><span style="font-family:trebuchet ms;">Microsoft Robotics studio </span><a style="font-family: trebuchet ms;" href="http://msdn.microsoft.com/robotics/">http://msdn.microsoft.com/robotics/</a><br /><span style="font-family:trebuchet ms;">Gostai URBI for LEGO MINDSTORMS NXT </span><a style="font-family: trebuchet ms;" href="http://www.gostai.com/lego.html">http://www.gostai.com/lego.html</a><br /><br /><span style="font-family:trebuchet ms;">Tambien puedes desarrollar tu propio firmware para el NXT. Hay un link en la pagina principal del NXT que se llama NXTREME, alli se puede cambiar toda la funcionalidad desde el nivel mas bajo del hardware. De eso y de los anteriores lenguajes trataremos en etapas mas maduras de este Blog. Por ahora vamos a centrarnos en el LeJOS.</span><br /></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-41897954633564318712007-09-27T11:24:00.000-05:002007-10-17T11:23:54.452-05:00Lenguaje de Programacion<div align="justify"><span style="font-family:trebuchet ms;">Para los que no conocen un el lenguaje de programación utilizado para darle vida a este robot, les cuento que es un software muy sencillo, basado en un poderoso lenguaje de programación gráfico llamado LabView de National Instruments. Es una interfaz sencilla, agradable de utilizar y sobretodo muy intuitiva. Recordemos que este es un juguete para niños.<br /><br /><img id="BLOGGER_PHOTO_ID_5116777605447539442" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp2.blogger.com/_ul_nj9fwNFY/RwJyH09f2vI/AAAAAAAAAAs/UsriYWI_nMc/s320/picDF9A9B7B-3F31-46B3-A143-A42042AD34DF.gif" border="0" /><br /></span><div align="justify"><span style="font-family:trebuchet ms;">Pueden visitar la pagina oficial de robot en: </span><a href="http://mindstorms.lego.com/"><span style="font-family:trebuchet ms;">http://mindstorms.lego.com/</span></a><span style="font-family:trebuchet ms;"><br /></span></div><br /><div align="justify"><span style="font-family:trebuchet ms;"></span></div><br /><div align="justify"><span style="font-family:trebuchet ms;">Este juguete puede ser programado de una forma un poco mas avanzada. Existen entonces unas personas que querían programar el robot utilizando el lenguaje Java. De ahí nació <strong>LeJOS</strong>. Es una pequeña maquina virtual de Java, incluye funciones de J2ME que es Java para dispositivos moviles y una API bien documentada con las funciones del NXT.<br /><br /></span></div><div align="justify"><span style="font-family:trebuchet ms;"><img id="BLOGGER_PHOTO_ID_5116780113708440322" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp2.blogger.com/_ul_nj9fwNFY/RwJ0Z09f2wI/AAAAAAAAAA0/vM87-rngvu4/s320/lejosLogo.jpg" border="0" /></span></div><div align="justify"><span style="font-family:trebuchet ms;">Pueden visitar la pagina de LeJOS en: </span><a href="http://lejos.sourceforge.net/"><span style="font-family:trebuchet ms;">http://lejos.sourceforge.net/</span></a> </div></div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.comtag:blogger.com,1999:blog-7942320359574647252.post-68741296260272736352007-09-25T10:26:00.000-05:002007-10-17T11:23:11.013-05:00Proyecto NXT<div align="justify"><a href="http://bp1.blogger.com/_ul_nj9fwNFY/RwJmWk9f2sI/AAAAAAAAAAM/c5-luS2CYiA/s1600-h/400px-Lego_Mindstorms_NXT_Sensors_Motors.jpg"><img id="BLOGGER_PHOTO_ID_5116764664711076546" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp1.blogger.com/_ul_nj9fwNFY/RwJmWk9f2sI/AAAAAAAAAAM/c5-luS2CYiA/s200/400px-Lego_Mindstorms_NXT_Sensors_Motors.jpg" border="0" /></a><span style="font-family:trebuchet ms;">Quiero dar la bienvenida a este Blog del robot <strong><span class="blsp-spelling-error" id="SPELLING_ERROR_0">NXT</span></strong> de Lego. En realidad es la primera vez que me doy a la tarea de escribir en este tipo de espacio, pero tratare de que sea <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">fácil</span> y agradable para leer. Por favor si tienen cualquier duda o sugerencia, les <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">agradezco</span> dejen el comentario.</span> </div>Daniel Gonzálezhttp://www.blogger.com/profile/04495887126728453315noreply@blogger.com