<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2844287877960593391</id><updated>2011-07-08T06:56:30.921+02:00</updated><category term='5. Práctica2'/><category term='1. Creación del blog'/><category term='3. Ensamblaje básico + pruebas sobre motores y ultrasonidos'/><category term='6. Práctica3'/><category term='7. Práctica4'/><category term='2. Preparación del entorno de desarrollo'/><category term='4. Práctica1'/><title type='text'>El mundillo de HansF10</title><subtitle type='html'>La descripción evolutiva de HansF10 y las prácticas de Robótica</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JSantos</name><uri>http://www.blogger.com/profile/04781799357360579289</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-249711343041243825</id><published>2010-04-15T09:08:00.004+02:00</published><updated>2010-04-15T18:11:05.571+02:00</updated><title type='text'>Practica 5 (primera parte)</title><content type='html'>En esta ultima practica con el NXT hemos usado un mapa en el que hemos situado particulas y Hans se ha podido autolocalizar.Aunque al principio estabamos mas perdidos que el propio robot hemos conseguido sacar las tres primeras partes.&lt;b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;Visualizacion del mapa y de las particulas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;El objetivo de este programa es mostrar el mapa cargado y las particulas inicializadas en el. Para conseguirlo hemos transformado los datos en cm del mapa real a una escala que la pantalla fuera capaz de mostrar.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;object id="doc_521822402387956" name="doc_521822402387956" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline: medium none;" rel="media:document" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29957876&amp;amp;access_key=key-a9qs7koz8ggdvdiy7m4&amp;amp;page=1&amp;amp;viewMode=list" media="http://search.yahoo.com/searchmonkey/media/" dc="http://purl.org/dc/terms/" height="500" width="100%"&gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=29957876&amp;amp;access_key=key-a9qs7koz8ggdvdiy7m4&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_521822402387956" name="doc_521822402387956" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29957876&amp;amp;access_key=key-a9qs7koz8ggdvdiy7m4&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="500" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt; &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Diseño del radar&lt;/b&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;En este caso se trataba de crear una clase que se encargue de englobar los aspectos necesarios para la orientacion por ultrasonidos. Su unico metodo consiste en tomar varias medidas desde diferentes angulos (segun los parametros de entrada) y devolverlas.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;object id="doc_772051353915020" name="doc_772051353915020" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline: medium none;" rel="media:document" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29958263&amp;amp;access_key=key-2oy66p2idy34m0yfyi6l&amp;amp;page=1&amp;amp;viewMode=list" media="http://search.yahoo.com/searchmonkey/media/" dc="http://purl.org/dc/terms/" height="500" width="100%"&gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=29958263&amp;amp;access_key=key-2oy66p2idy34m0yfyi6l&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_772051353915020" name="doc_772051353915020" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29958263&amp;amp;access_key=key-2oy66p2idy34m0yfyi6l&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="500" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Reconocimiento de posicion y orientacion&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;En esta ultima parte usamos la clase Radar implementada anteriormente. En primer lugar es necesario establecer algunos puntos de referencia. La &lt;/span&gt;&lt;/b&gt;clase TomarMedidas se encarga de hacer un barrido de 360 grados y almacenar seguidamente la firma. Cada vez que se pulse enter se almacena un numero de firma distinta. Esta firma es concretamente el histograma de las medidas obtenidas por el ultrasonidos por cada angulo al que esta mirando.&lt;br /&gt;&lt;br /&gt;&lt;object id="doc_988289596846289" name="doc_988289596846289" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline: medium none;" rel="media:document" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29972868&amp;amp;access_key=key-1m3eqb2abh458ssz4g8j&amp;amp;page=1&amp;amp;viewMode=list" media="http://search.yahoo.com/searchmonkey/media/" dc="http://purl.org/dc/terms/" height="500" width="100%"&gt;&lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=29972868&amp;amp;access_key=key-1m3eqb2abh458ssz4g8j&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_988289596846289" name="doc_988289596846289" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29972868&amp;amp;access_key=key-1m3eqb2abh458ssz4g8j&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="500" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Ahora con las posiciones posibles que puede ocupar el robot se puede autolocalizar. Se toma un nuevo barrido de 360 grados donde situemos el robot (con cualquier orientacion). Posteriormente el histograma se transforma en otro histograma que muestra la cantidad de veces que ha aparecido una medida del ultrasonido. Hacemos lo mismo con cada firma almacenada y se va comparando. La diferencia mas pequeña entre la medida capturada y una de las firmas sera la que nos indique en el punto en el que esta.Lo mas complicado en este proceso fue conseguir que el motor consiguiera suficiente precision como para ser fiable al hacer arcos muy cortos con el fin de tener los histogramas lo mas ricos posibles.&lt;br /&gt;&lt;br /&gt;&lt;object id="doc_823336915514297" name="doc_823336915514297" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline: medium none;" rel="media:document" resource="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29975653&amp;amp;access_key=key-1fmyyj3hpd53yv5ugnmd&amp;amp;page=1&amp;amp;viewMode=list" media="http://search.yahoo.com/searchmonkey/media/" dc="http://purl.org/dc/terms/" height="500" width="100%"&gt;&lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=29975653&amp;amp;access_key=key-1fmyyj3hpd53yv5ugnmd&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_823336915514297" name="doc_823336915514297" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=29975653&amp;amp;access_key=key-1fmyyj3hpd53yv5ugnmd&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="500" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Para calcular la diferencia en grados en esta nueva posicion hemos intentado hallar el angulo en el que se situa comparamos la firma capturada con las firma guardada a la que pertenece el punto en que nos situamos. El histograma capturado va rotando los valores y calculando la diferencia con la firma del punto en que nos situamos. Finalmente la menor diferencia nos indicara la cantidad de posiciones que hemos tenido que rotar el histograma para encontrar la firma aproximada. Segun ese numero y la resolucion podemos obtener los grados de diferencia.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-249711343041243825?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/249711343041243825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=249711343041243825&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/249711343041243825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/249711343041243825'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/04/practica-5-primera-parte.html' title='Practica 5 (primera parte)'/><author><name>César Pérez Fernández</name><uri>http://www.blogger.com/profile/12566222554604043818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-8605487723716708437</id><published>2010-03-25T00:27:00.022+01:00</published><updated>2010-03-25T19:04:27.219+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='7. Práctica4'/><title type='text'>7. Práctica4</title><content type='html'>HansF10 ha vuelto a sus modestos orígenes en apariencia. Volvemos al diseño con el que comenzo. Pero aunque ya no pueda ser aspirante a míster robot 2010 lo ha compensado con un interior particularmente decente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Auto-localización mediante filtros de partículas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El primer reto al que se enfrentaba era manejar un filtro de partículas utilizando el método de Monte Carlo. No hemos necesitado creárselo nosotros, ya que las librerías del NXJ ya nos lo proporcionaban. Las utilidades de este filtro son proporcionar la posición del robot aproximada y la posición de objetos ajenos a el. En este caso nos interesa la primera de ellas.&lt;br /&gt;&lt;br /&gt;*&lt;i&gt;Ejemplo de robot situado dentro de un mapa y usando un filtro de partículas y ultrasonidos para navegar.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.cs.washington.edu/ai/Mobile_Robotics/mcl/animations/global-floor.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 355px; height: 263px;" src="http://www.cs.washington.edu/ai/Mobile_Robotics/mcl/animations/global-floor.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;En la practica 1 se implementó una forma de que el robot recorriera un cuadrado. No tenía la exactitud que se esperaba por las limitaciones concretas del robot con el entorno. Con la ayuda del filtro de partículas se podría conseguir corregir los pequeños errores.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Resultados de la ejecución del cuadrado auto localizándose con partículas&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-660a921d90fd2194" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v23.nonxt4.googlevideo.com/videoplayback?id%3D660a921d90fd2194%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331110297%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5A1934FAC7A03F882F32EE72B085CD080849841A.3D1F82D65BE2CBFDE33D26ABDC900C81E9469E1A%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D660a921d90fd2194%26offsetms%3D5000%26itag%3Dw160%26sigh%3DjOCdvmN58_WOfZ3ZkhWlHGV5vJE&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v23.nonxt4.googlevideo.com/videoplayback?id%3D660a921d90fd2194%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331110297%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D5A1934FAC7A03F882F32EE72B085CD080849841A.3D1F82D65BE2CBFDE33D26ABDC900C81E9469E1A%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D660a921d90fd2194%26offsetms%3D5000%26itag%3Dw160%26sigh%3DjOCdvmN58_WOfZ3ZkhWlHGV5vJE&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/t8uTNMDnY-I&amp;amp;hl=es&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/t8uTNMDnY-I&amp;amp;hl=es&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="266" width="320"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;La prueba de concepto esta en el programa &lt;span style="font-weight: bold; font-style: italic;"&gt;Particulas.java&lt;/span&gt;.&lt;br /&gt;Dentro de un mapa 100cm x 100cm sin obstáculos se sitúa el robot en las coordenadas (30 cm, 30 cm, 0 º). En ese punto se sitúan las 100 partículas. El siguiente paso es que el robot empieza a moverse en linea recta, mientras lo hace aplica el movimiento a las partículas usando la odometría de las ruedas.El movimiento aplicado a las partículas también incluirán el ruido en distancia que tenga asignado. Hemos elegido un ruido muy bajo para minimizar la dispersión al máximo, ya que el error en el recorrido era poco mas del 1%.&lt;br /&gt;&lt;br /&gt;Al trazar el primer lado del cuadrado el robot gira 90 º y se lo aplica asimismo a las partículas junto con el ruido en ángulo. De aquí en adelante las partículas se dispersan en arco. El ruido para distancia recorrida y giro muy bajo por consiguiente el arco es mínimo.En las dos últimas iteraciones se repite el proceso aumentándose la dispersión en arco cada vez.  Para la representación en la pantalla LCD del nxt hemos tenido que establecer una proporción de 0`6 píxeles por cada cm del mapa. Para clarificar el recorrido incluimos también el mapa para que se observara claramente sus limites.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object id="doc_741439187028943" name="doc_741439187028943" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline-color: -moz-use-text-color; outline-style: none; outline-width: medium;" height="600" width="100%"&gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=28885515&amp;amp;access_key=key-2ecrpivhc9lptx6tnbl4&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_741439187028943" name="doc_741439187028943" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=28885515&amp;amp;access_key=key-2ecrpivhc9lptx6tnbl4&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="600" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Cálculo de trayectorias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En esta segunda parte se nos pedía implementar un método de navegación para el robot. Siguiendo un eje de coordenadas global, nos manejamos en el espacio de &lt;span style="font-style: italic;"&gt;(x,y, rotación)&lt;/span&gt;.&lt;br /&gt;Una primera idea consiste en navegar siguiendo 3 pasos o etapas:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Orientación al punto de destino&lt;/li&gt;&lt;li&gt;Desplazamiento al punto de destino&lt;/li&gt;&lt;li&gt;Obtención de la orientación final&lt;/li&gt;&lt;/ol&gt;Aprovechando la clase vector implementada para la práctica anterior pudimos desenvolvernos con soltura en el mundo de los ángulos y las distancias.&lt;br /&gt;&lt;br /&gt;El código quedó de la siguiente manera:&lt;br /&gt;&lt;br /&gt;&lt;a title="View Untitled on Scribd" href="http://www.scribd.com/doc/28901715/Untitled" style="margin: 12px auto 6px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;"&gt;Untitled&lt;/a&gt; &lt;object id="doc_497867889672584" name="doc_497867889672584" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline-color: -moz-use-text-color; outline-style: none; outline-width: medium;" height="600" width="100%"&gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=28901715&amp;amp;access_key=key-13kht2v12dvlp1favryc&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_497867889672584" name="doc_497867889672584" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=28901715&amp;amp;access_key=key-13kht2v12dvlp1favryc&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="600" width="100%"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Una segunda parte nos llevó a plantear el desplazamiento del robot en 2 etapas:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Movimiento en arco hasta el punto de destino&lt;/li&gt;&lt;li&gt;Obtención de la orientación final.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Si bien no pudimos conseguir una limpia consecución del objetivo, al menos lo intentamos.&lt;br /&gt;Conseguimos que el robot recorriese en arco la distancia deseada, pero no con la orientación que debería:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a title="View pathfollow2 on Scribd" href="http://www.scribd.com/doc/28901953/pathfollow2" style="margin: 12px auto 6px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;"&gt;pathfollow2&lt;/a&gt; &lt;object id="doc_255930025000053" name="doc_255930025000053" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline-color: -moz-use-text-color; outline-style: none; outline-width: medium;" height="600" width="100%"&gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=28901953&amp;amp;access_key=key-4ycsdrkftryq3p5pp1j&amp;amp;page=1&amp;amp;viewMode=list"&gt;   &lt;embed id="doc_255930025000053" name="doc_255930025000053" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=28901953&amp;amp;access_key=key-4ycsdrkftryq3p5pp1j&amp;amp;page=1&amp;amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="opaque" bgcolor="#ffffff" height="600" width="100%"&gt;&lt;/embed&gt; &lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-8605487723716708437?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/8605487723716708437/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=8605487723716708437&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/8605487723716708437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/8605487723716708437'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/03/7-practica4.html' title='7. Práctica4'/><author><name>César Pérez Fernández</name><uri>http://www.blogger.com/profile/12566222554604043818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-2642032846452608729</id><published>2010-03-10T22:43:00.019+01:00</published><updated>2010-03-20T13:06:59.831+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='6. Práctica3'/><title type='text'>Practica 3</title><content type='html'>Ante esta nueva prueba de esfuerzo (y pensabamos que el cubo de rubick se nos quedaba grande....) hemos tenido que modificar el diseño del robot.&lt;br /&gt;Consultando con personalidades doctoradas en la estetica del robot (aflelou?Llongueras?) conseguimos lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e_Ztb31cL28/S5kfTnGZ_0I/AAAAAAAAACg/hUSSmibO7g0/s1600-h/11032010030.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 257px; height: 192px;" src="http://3.bp.blogspot.com/_e_Ztb31cL28/S5kfTnGZ_0I/AAAAAAAAACg/hUSSmibO7g0/s200/11032010030.jpg" alt="" id="BLOGGER_PHOTO_ID_5447419646055153474" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_e_Ztb31cL28/S5kfJozpxPI/AAAAAAAAACQ/zbmFuHlrKoc/s1600-h/11032010027.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 264px; height: 193px;" src="http://3.bp.blogspot.com/_e_Ztb31cL28/S5kfJozpxPI/AAAAAAAAACQ/zbmFuHlrKoc/s200/11032010027.jpg" alt="" id="BLOGGER_PHOTO_ID_5447419474714674418" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e_Ztb31cL28/S5kfPm_ycnI/AAAAAAAAACY/ufoHItq3mic/s1600-h/11032010029.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 249px; height: 185px;" src="http://4.bp.blogspot.com/_e_Ztb31cL28/S5kfPm_ycnI/AAAAAAAAACY/ufoHItq3mic/s200/11032010029.jpg" alt="" id="BLOGGER_PHOTO_ID_5447419577307918962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Incorporamos dos sensores infrarrojos del modelo anterior (RCX) formando 45º con su eje, al igual que un sensor de ultrasonidos montando sobre un motor para poder obtener lecturas en distintos angulos.&lt;br /&gt;&lt;br /&gt;Sin escatimar esfuerzo y derrochando pruebas hemos conseguido lo siguiente.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;COMPORTAMIENTO DE EVITACION DE OBSTACULOS USANDO SENSORES DE CONTACTO&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este caso consta de los comportamientos IrHaciaDelante y EsquivarObstaculos.&lt;br /&gt;&lt;br /&gt;El comportamiento IrHaciaDelante es simplemente moverse en linea recta continuamente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Behavior;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.navigation.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public class IrHaciaDelante implements Behavior{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;static TachoPilot tp = new TachoPilot(5.6f,11.25f,Motor.C,Motor.B);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public boolean takeControl() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;return true;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public void suppress() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;tp.stop();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public void action() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;tp.forward();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El comportamiento EsquivarObstaculos consiste en que cada vez que alguno de los sensores de contacto sea presionado el metodo action se activa. Como consecuencia Hansf10 retrocederia, rodearia el objeto trazando un arco y pararia en el mismo sentido en el que empezo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;import lejos.nxt.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;import lejos.robotics.navigation.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;import lejos.robotics.subsumption.Behavior;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;public class EsquivarObstaculo implements Behavior{&lt;/span&gt;&lt;br /&gt;	&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	static TachoPilot tp = new TachoPilot(5.6f,11.25f,Motor.C,Motor.B);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	static TouchSensor touch1=new TouchSensor(SensorPort.S1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	static TouchSensor touch2=new TouchSensor(SensorPort.S2);&lt;/span&gt;&lt;br /&gt;	&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	public boolean takeControl() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;		return (touch1.isPressed() || touch2.isPressed());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	}&lt;/span&gt;&lt;br /&gt;	&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	public void suppress() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	   tp.stop();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	}&lt;/span&gt;&lt;br /&gt;		                     &lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	public void action() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;		tp.travel(-19);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;		tp.steer(75, 60);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;		tp.steer(-30, 120);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;		tp.steer(75, 60);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;	}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El programa que los utiliza es Ejercicio1. El comportamiento IrHaciaDelante siempre se esta ejecutando hasta que un sensor de contacto sea pulsado. Por prioridad pasa a ejecutarse EsquivarObstaculo y una vez esquivado el obstaculo devolvuelve el control a IrHaciaDelante.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;import lejos.robotics.subsumption.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;public class Ejercicio1 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;public static void main(String [] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; Behavior b1 = new IrHaciaDelante();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; Behavior b2 = new EsquivarObstaculo();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; Behavior [] bArray = {b1, b2};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; Arbitrator arby = new Arbitrator(bArray);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt; arby.start();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;COMPORTAMIENTO DE EVITACION DE OBSTACULOS USANDO EL SENSOR DE ULTRASONIDOS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;INCOMPLETO&lt;/span&gt;. No creemos en la derrota(normalmente) pero esta vez si que hemos admitido no haber superado este obstaculo. El ejercicio planteado, a nuestro juicio, hubiese requerido de más tiempo para completarlo. No obstante, tenemos la sensación de habernos faltado bien poco.&lt;br /&gt;&lt;br /&gt;Colgamos las clases implementadas, las cuales creemos están a punto de caramelo de funcionar.&lt;br /&gt;El problema se estructura en 3 clases.&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt;Clase Vector,&lt;/span&gt; para implementar VFF's&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt;Clase OrientaRobot&lt;/span&gt;, para describir el comportamiento.&lt;br /&gt;-&lt;span style="font-weight: bold;"&gt;Clase Ejercicio2,&lt;/span&gt; que inicializa el objeto &lt;span style="font-style: italic;"&gt;arbitrator&lt;/span&gt; y que gestiona el (buen?) funcionamiento del robot.&lt;br /&gt;&lt;br /&gt;CLASE VECTOR&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public class Vector{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private float coordX=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private float coordY=0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    //CONSTRUCTORES&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public Vector(float x, float y, boolean construyeXY){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(construyeXY==true){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            coordX=x;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            coordY=y;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }else{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            coordX=(float) (x * Math.cos(Math.toRadians(y)));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            coordY=(float) (x * Math.sin(Math.toRadians(y)));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    //NON-STATIC&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public float getX(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return coordX;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public float getY(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return coordY;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public void setX(float x){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        coordX=x;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public void setY(float y){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        coordY=y;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public float Modulo(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return (float) (Math.sqrt((coordX*coordX) + (coordY*coordY)));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public float Angulo(){       &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        //Determinar cuadrantes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        float angulos=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(coordX&gt;0 &amp;amp;&amp;amp; coordY&gt;0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            //1er. cuadrante&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            angulos=(float) (Math.toDegrees(Math.atan(coordY/coordX)));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(coordX&lt;0&gt;0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            //2o. cuadrante&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            angulos=(float) (180 + Math.toDegrees(Math.atan(coordY/coordX)));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(coordX&lt;0 angulos="(float)"&gt;0 &amp;amp;&amp;amp; coordY&lt;0){ angulos="(float)" coordx="=" coordy="=" oldx="coordX;" oldy="coordY;" coordx="(float)" coordy="(float)" coordx="coordX+v.getX();" coordy="coordY+v.getY();" coordx="=" coordy="=" coordx="coordX" coordy="coordY"&gt;&lt;br /&gt;&lt;br /&gt;CLASE ORIENTAROBOT&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.*; import lejos.robotics.navigation.TachoPilot; import lejos.robotics.subsumption.Behavior; import java.util.*;  public class OrientaRobot implements Behavior{      public final int MEDIDA_MINIMA=30;//cm. Es la medida con la que se activa el comportamiento     public final int MEDIDA_DETECTABLE=100;//cm. Es la medida a partir de la cual empieza a tener en cuenta obstaculos      private TachoPilot tp=new TachoPilot(5.6f, 11.2f, Motor.C, Motor.B);     private ArrayList&lt;/span&gt;&lt;vector&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; distancias=new ArrayList&lt;/span&gt;&lt;vector&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private Vector destinoRobot;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private Vector vectorResultante=new Vector(0,0,true);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private float distanciaRecorrida=0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public OrientaRobot(Vector destino){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        destinoRobot=new Vector(destino.getX(),destino.getY(),true);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        tp.reset();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        tp.setSpeed(90);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Motor.A.resetTachoCount();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Motor.A.setSpeed(90);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    //volver sobre la idea de "hayObstaculo"....&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private void escanear(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        UltrasonicSensor US=new UltrasonicSensor(SensorPort.S1);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        int actual;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        US.continuous();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Motor.A.rotate(46);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        actual=US.getDistance();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        for(int i=0;i&lt;4+1;i++){ actual="US.getDistance();"&gt;&lt;medida_detectable){ new="" private="" void="" float="" iterator=""&gt;&lt;vector&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; it=distancias.iterator();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(dist!=0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            while(it.hasNext()){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                Vector actual=it.next();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                actual.setX(actual.getX()-dist);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            destinoRobot.setX(destinoRobot.getX()-dist);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(ang!=0){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            it=distancias.iterator();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            while(it.hasNext()){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                Vector actual=it.next();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                actual.RotarVector(ang);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            destinoRobot.RotarVector(ang);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    private void HallarResultante(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        vectorResultante=new Vector(0,0,true);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Iterator&lt;/span&gt;&lt;vector&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; it=distancias.iterator();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        while(it.hasNext()){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            Vector actual=it.next();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                actual.Inverso();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                vectorResultante.Resultante(actual);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;                actual.Inverso();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        vectorResultante.Resultante(destinoRobot);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        LCD.drawString(vectorResultante.getX() + ";" + vectorResultante.getY(),1,4);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        LCD.drawString((int)vectorResultante.Modulo() + ";" + vectorResultante.Angulo(),1,5);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        LCD.drawString("N.Vect:" + distancias.size(),1,6);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public boolean takeControl(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        ActualizarVectores(tp.getTravelDistance()-distanciaRecorrida,0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        distanciaRecorrida+=tp.getTravelDistance()-distanciaRecorrida;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        escanear();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        HallarResultante();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        return (destinoRobot.Modulo()&gt;0);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public void suppress(){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public void action(){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        if(tp.getTravelDistance()!=0){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            tp.rotate(vectorResultante.Angulo());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;            ActualizarVectores(0,vectorResultante.Angulo());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        tp.travel(vectorResultante.Modulo(),true);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CLASE EJERCICIO2&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Arbitrator;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Behavior;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public class Ejercicio2 {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public static void main(String[] args) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               Behavior b1 = new OrientaRobot(new Vector(100,0,true));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;               Behavior [] comportamientos = {b1};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Arbitrator ar = new Arbitrator(comportamientos);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        ar.start();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;COMPORTAMIENTO IR HACIA LA LUZ&lt;/b&gt;&lt;/vector&gt;&lt;/vector&gt;&lt;/medida_detectable){&gt;&lt;/span&gt;&lt;/vector&gt;&lt;/vector&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Lo realiza el comportamiento Orientar luz con alma de polilla suicida. Se utilizan los dos sensores de luz del rcx para ello. Antes de iniciarlo hemos creido oportuno que se pudiese calibrar segun la luz disponible para conseguir un funcionamiento correcto en cualquier situacion.El comportamiento es muy sencillo. Si alguno de los dos sensores de luz detecta una cantidad diferente que su homologo significara que la luz esta a uno de los lados. La reaccion a dicho estimulo sera girar hasta que la luz vuelva a ser la misma para ambos.Hemos añadido un margen a los valores leidos para evitar que las minimas variaciones de luz del ambiente pudiesen afectar.La inclusion de @SuppressWarnings("deprecation") esta solo para evitar los warnings resultantes por haber utilizado clases obsoletas para leer de los sensores del RCX.&lt;br /&gt;&lt;br /&gt;&lt;object width="380" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ti2-l1SNCpM&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Ti2-l1SNCpM&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="380" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.*;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.addon.RCXLightSensor;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.navigation.*;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Behavior;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;public class OrientarALuz implements Behavior{&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static TachoPilot tp = new TachoPilot(5.6f,11.25f,Motor.C,Motor.B);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static RCXLightSensor luzIzq=new RCXLightSensor(SensorPort.S3);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static RCXLightSensor luzDer=new RCXLightSensor(SensorPort.S4);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static final int MARGEN=3;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;@SuppressWarnings("deprecation")&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public OrientarALuz(int minLight,int maxLight){&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzIzq.activate();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzDer.activate();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzIzq.setHigh(maxLight);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzIzq.setLow(minLight);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzDer.setHigh(maxLight);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;luzDer.setLow(minLight);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;MostrarLecturas();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;@SuppressWarnings("deprecation")&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;private void MostrarLecturas(){&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.clear();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawInt(luzIzq.readValue(),2,2);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawInt(luzDer.readValue(),2,4);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;@SuppressWarnings("deprecation")&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public boolean takeControl() {&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;return ((luzIzq.readValue()&gt;luzDer.readValue()+MARGEN)||(luzIzq.readValue()+MARGEN&lt;luzder.readvalue()));&gt;&lt;/luzder.readvalue()));&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public void suppress() {&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;   &lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;                               &lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;@SuppressWarnings("deprecation")&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public void action() {&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(luzIzq.readValue()&gt;luzDer.readValue()+MARGEN){&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;tp.steer(75, 360, true);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;tp.stop();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(luzIzq.readValue()+MARGEN&lt;luzder.readvalue()){&gt;&lt;/luzder.readvalue()){&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;tp.steer(-75,360, true);&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;tp.stop();&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 153);"&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;CLASE EJERCICIO3&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.Button;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.LCD;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.SensorPort;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.nxt.addon.RCXLightSensor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Arbitrator;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;import lejos.robotics.subsumption.Behavior;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;public class Ejercicio3 {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    static RCXLightSensor luzIzq=new RCXLightSensor(SensorPort.S3);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    static RCXLightSensor luzDer=new RCXLightSensor(SensorPort.S4);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    @SuppressWarnings("deprecation")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    public static void main(String [] args) throws Exception {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        int min;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        int max;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        luzIzq.activate();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        luzDer.activate();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Thread.sleep(150);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        LCD.drawString("MinValue:", 2, 2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        while(!Button.ENTER.isPressed()){}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        min=luzIzq.readValue();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Thread.sleep(150);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        LCD.drawString("MaxValue:", 2, 2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        while(!Button.ENTER.isPressed()){}&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        max=luzIzq.readValue();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Behavior b1 = new IrHaciaDelante();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Behavior b2 = new OrientarALuz(min,max);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Behavior [] bArray = {b1, b2};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        Arbitrator arby = new Arbitrator(bArray);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;        arby.start();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;COMPORTAMIENTO DE IR HACIA LA LUZ EVITANDO OBSTACULOS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Por razones evidentes, al no poder completar el segundo ejercicio, el 4º nos pareció imposible :S&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);font-size:180%;" &gt;Problemas encontrados&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;En general los mayores problemas los hemos tenido con el comportamiento de esquivar un obstaculo con el ultrasonido.&lt;br /&gt;&lt;br /&gt;Conseguimos una posible solucion usando una clase Vector auxiliar para que almacenase vectores y sus metodos asociados.&lt;br /&gt;Los problemas vinieron cuando el robot actuaba como si no detectase el obstaculo.Barajamos varias posibilidades, como que la velocidad de giro del ultrasonido impidiera una lectura correcta,que calculase mal las resultantes, etc. Descubrimos que los metodos estaticos de Vector tenian parte de culpa pero no era suficiente.&lt;br /&gt;&lt;br /&gt;Una vez arreglado no tenia en cuenta los obstaculos fuera del alcance de vision de ultrasonidos, asique rediseñamos parte del codigo.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-2642032846452608729?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/2642032846452608729/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=2642032846452608729&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/2642032846452608729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/2642032846452608729'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/03/practica-3.html' title='Practica 3'/><author><name>César Pérez Fernández</name><uri>http://www.blogger.com/profile/12566222554604043818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_e_Ztb31cL28/S5kfTnGZ_0I/AAAAAAAAACg/hUSSmibO7g0/s72-c/11032010030.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-1659421197230132676</id><published>2010-02-24T22:20:00.050+01:00</published><updated>2010-02-25T19:00:23.156+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='5. Práctica2'/><title type='text'>Práctica2</title><content type='html'>  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;Seguimos intentando mejorar en nuestros avances con HansF10, pero es inevitable echar mano de aquel mítico concursante de gran hermano, para describir lo que sentimos: &lt;span style="font-style: italic;"&gt;"¿Quién me pone la mano encima para que no levante cabeza?".&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;1. Obteniendo información...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El programa en esencia debía mostrar la información obtenida mediante los distintos sensores conectados a Hans (ultrasonidos e Infrarojos).&lt;br /&gt;El resultado fue el esperado, o incluso mejor ya que hicimos que el programa se actualizase en tiempo real.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e_Ztb31cL28/S4WbqZOneLI/AAAAAAAAAB4/fSgKNArg7qY/s1600-h/DSC00059.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_e_Ztb31cL28/S4WbqZOneLI/AAAAAAAAAB4/fSgKNArg7qY/s200/DSC00059.JPG" alt="" id="BLOGGER_PHOTO_ID_5441926877376116914" border="0" /&gt;&lt;/a&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;El código correspondiente es el que sigue:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-family:courier new;font-size:85%;"  &gt;import lejos.nxt.*;&lt;br /&gt;public class GetHansInfo {&lt;br /&gt;&lt;br /&gt;static String NombreRobot="HansF10";&lt;br /&gt;static UltrasonicSensor US=new UltrasonicSensor(SensorPort.S1);&lt;br /&gt;static LightSensor LS=new LightSensor(SensorPort.S2);&lt;br /&gt;&lt;br /&gt;public static void main(String[] args)throws Exception {&lt;br /&gt;               while(!Button.ESCAPE.isPressed()){&lt;br /&gt;                           LCD.clear();&lt;br /&gt;                           LCD.drawString(NombreRobot, 0, 0);&lt;br /&gt;                                     LCD.drawString("US: " + US.getDistance() + " cm.",0,1);&lt;br /&gt;                                      LCD.drawString("Luz: " + LS.readValue() + " % ("+ LS.readNormalizedValue() + ")",0,2);&lt;br /&gt;                                     LCD.drawString("Bat: " + Battery.getVoltageMilliVolt() + " mV",0,3);&lt;br /&gt;                                      LCD.drawString("Mem: " + (int)(Runtime.getRuntime().freeMemory()),0,4);&lt;br /&gt;                                      Thread.sleep(1000);&lt;br /&gt;               }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;2. Control del robot por sonido.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e_Ztb31cL28/S4ZTdkJVOMI/AAAAAAAAACI/iNfLQjvb7d4/s1600-h/21022010012.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 150px; height: 200px;" src="http://4.bp.blogspot.com/_e_Ztb31cL28/S4ZTdkJVOMI/AAAAAAAAACI/iNfLQjvb7d4/s200/21022010012.jpg" alt="" id="BLOGGER_PHOTO_ID_5442128967107950786" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;En este ejercicio se nos pedía un programa que hiciese que el robot, atendiendo a una palmada o sonido brusco, avanzase o se detuviera.&lt;br /&gt;&lt;br /&gt;En un principio pensamos abordar el problema captando una medida, y en caso de de ser superior a X dB, activar o no el avance del robot. Sin embargo no teníamos en cuenta el ruido ambiente. Si no tenemos en cuenta que el ruido ambiente puede estar cerca del umbral de los X dB que nosotros marcamos deliberadamente, el robot puede comportarse de manera errática.&lt;br /&gt;&lt;br /&gt;Así pues decidimos que lo mejor era tomar una medida, esperar una fracción de tiempo, y volver a medir, y si la diferencia entre ambas era muy grande es porque se había producido un ruido brusco.&lt;br /&gt;&lt;br /&gt;Aplicando estos criterios obtuvimos el siguiente comportamiento:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AMinYOnQ9S0&amp;amp;hl=es_ES&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/AMinYOnQ9S0&amp;amp;hl=es_ES&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;El código que implementamos fue el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;import lejos.nxt.*;&lt;br /&gt;import lejos.robotics.navigation.TachoPilot;&lt;br /&gt;public class ClapControl {&lt;br /&gt;&lt;br /&gt;	static TachoPilot tp=new TachoPilot(5.6f, 11.0f, Motor.C, Motor.B);&lt;br /&gt;	static SoundSensor SS=new SoundSensor(SensorPort.S3);&lt;br /&gt;	static boolean moviendose=false;&lt;br /&gt;	static final int SONIDO_MAX=30;&lt;br /&gt;&lt;br /&gt;	public static void main(String[] args)throws Exception {&lt;br /&gt;		int sonido1;&lt;br /&gt;		int sonido2;&lt;br /&gt;		while (!Button.ESCAPE.isPressed()) {&lt;br /&gt;			sonido1= SS.readValue();&lt;br /&gt;			Thread.sleep(50);&lt;br /&gt;			sonido2=SS.readValue();&lt;br /&gt;			LCD.drawInt(Math.abs(sonido2-sonido1),2,2);&lt;br /&gt;			if (Math.abs(sonido2-sonido1)&gt;=SONIDO_MAX){&lt;br /&gt;				if (!moviendose){&lt;br /&gt;					tp.forward();&lt;br /&gt;				}else{&lt;br /&gt;					tp.stop();&lt;br /&gt;				}&lt;br /&gt;				moviendose=!moviendose;&lt;br /&gt;			}&lt;br /&gt;	    }&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;		&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;3. Bump &amp;amp; Go! usando sensores de contacto&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e_Ztb31cL28/S4ZTQKNdrHI/AAAAAAAAACA/20PTI0Yqdhk/s1600-h/21022010010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_e_Ztb31cL28/S4ZTQKNdrHI/AAAAAAAAACA/20PTI0Yqdhk/s200/21022010010.jpg" alt="" id="BLOGGER_PHOTO_ID_5442128736807660658" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;La práctica de Bump&amp;amp;Go! implementada consiste en poner el robot a avanzar en una dirección, y en cuanto detecte un obstaculo(esta vez mediante sensores de contacto) retrocede, rota un número arbitrario de ángulos y repite los mismos pasos.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;El ejercicio ha sido sencillo, siendo lo más tedioso tener que demostrar nuestro avanzado control sobre las matemáticas (¡¿?!) al tener que controlar que los giros no fuesen mayores de 180 º, y en caso de serlo usar el ángulo complementario.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lo que conseguimos fue esto:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3NJNzBvOztE&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/3NJNzBvOztE&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;Código:&lt;/span&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;font-size:85%;"  &gt;import lejos.nxt.*;&lt;br /&gt;import lejos.robotics.navigation.*;&lt;br /&gt;&lt;br /&gt;public class BumpAndGo {&lt;br /&gt;static TachoPilot tp = new TachoPilot(5.6f,12f,Motor.C,Motor.B);&lt;br /&gt;static TouchSensor touch1=new TouchSensor(SensorPort.S1);&lt;br /&gt;static TouchSensor touch2=new TouchSensor(SensorPort.S2);&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) throws Exception{&lt;br /&gt;   int giro;&lt;br /&gt;   while(!Button.ESCAPE.isPressed()){&lt;br /&gt;       tp.forward();&lt;br /&gt;       while(!touch1.isPressed() &amp;amp;&amp;amp; !touch2.isPressed()){}&lt;br /&gt;       tp.travel(-15);&lt;br /&gt;       giro=(int)(Math.random()*360);&lt;br /&gt;       if (giro&gt;180){&lt;br /&gt;           giro-=360;&lt;br /&gt;       }&lt;br /&gt;       tp.rotate(giro);&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Bump &amp;amp; Go! usando sensores de ultrasonido&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;El comportamiento a sequir debía ser el mismo que el del ejercicio anterior, solo que esta vez usando ultrasonidos. Una vez que la distancia obtenida fuese inferior a X cm, el robot debía retroceder, elegir otra dirección y repetir el proceso.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CY2rY1pY1BI&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/CY2rY1pY1BI&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Código:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 11"&gt;&lt;meta name="Originator" content="Microsoft Word 11"&gt;&lt;link style="color: rgb(0, 0, 0); font-family: courier new;" rel="File-List" href="file:///C:%5CDOCUME%7E1%5CJavier%5CCONFIG%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:595.3pt 841.9pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:35.4pt; 	mso-footer-margin:35.4pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tabla normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman"; 	mso-ansi-language:#0400; 	mso-fareast-language:#0400; 	mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.Button;&lt;br /&gt;import lejos.nxt.Motor;&lt;br /&gt;import lejos.nxt.SensorPort;&lt;br /&gt;import lejos.nxt.UltrasonicSensor;&lt;br /&gt;import lejos.robotics.navigation.TachoPilot;&lt;br /&gt;&lt;br /&gt;public class SAvoidObstacle {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="MsoNormal"&gt;&lt;span lang="EN-GB"  style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;static TachoPilot tp = new TachoPilot(5.6f,11f,Motor.C,Motor.B);&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;static UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;public static void main(String[] args) throws InterruptedException {&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;int distancia;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;int giro;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;while(!Button.ESCAPE.isPressed()){&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;tp.forward();&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;do{&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;distancia = us.getDistance();&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;}while(distancia &gt; 30);&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;tp.travel(-15);&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;giro=(int)(Math.random()*360);&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;if (giro&gt;180){&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;giro-=360;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;tp.rotate(giro);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-GB"  style="font-size:85%;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;br /&gt;}  &lt;!--[if !supportLineBreakNewLine]--&gt;  &lt;!--[endif]--&gt;&lt;/span&gt;&lt;/p&gt;   &lt;span style="color: rgb(0, 0, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Comportamiento sigue-pared para salir de un laberinto&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Este ejercicio es el que más problemas nos dio, de hecho, no conseguimos terminarlo.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;En primer lugar nos costaba que el robot hiciese correctamente el giro de una esquina de 90º. Mediante el método rotate, en cuanto conseguía llegar a los 45º, perdía el contacto con la pared y no se "decidía" si debía girar en sentido horario o antihorario para encontrar de nuevo la pared.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Probamos más tarde llamando a  "steer(100, giro *5);", es decir, girando, no sobre sí mismo sino sobre la rueda interior, y haciendo un giro de 5º, donde la variable "giro" que puede valer 1 o -1 indica la dirección.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;El resultado obtenido fue que el robot despues de hacer steer se quedaba parado.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finalmente por falta de tiempo acabamos deshechando la idea de completar este ejercicio.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Código con el cual trabajamos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.nxt.Button;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.nxt.LCD;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.nxt.Motor;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.nxt.SensorPort;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.nxt.UltrasonicSensor;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;import lejos.robotics.navigation.TachoPilot;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;public class SiguePared {&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	static TachoPilot tp = new TachoPilot(5.6f,11f,Motor.C,Motor.B);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	static UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	final static int DIFERENCIA_MAX=4;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	static int distanciaNormal;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	static int distanciaActual;&lt;/span&gt;&lt;br /&gt;	&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	private static void MostrarInfo() throws Exception{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		LCD.clear();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		LCD.drawString("Normal=" + distanciaNormal, 2, 2);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		LCD.drawString("Actual=" + distanciaActual, 2, 4);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		Thread.sleep(30);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	}&lt;/span&gt;&lt;br /&gt;	&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;	public static void main(String[] args) throws Exception {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		int giro=0;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		us.ping();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		Thread.sleep(30);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		distanciaNormal=us.getDistance();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		distanciaActual=distanciaNormal;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		us.continuous();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;		while(!Button.ESCAPE.isPressed()){&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;			tp.forward();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:courier new;" &gt;			while((Math.abs((distanciaActual=us.getDistance())-distanciaNormal))&lt;/span&gt;&lt;br /&gt;&lt;diferencia_max){} style="color: rgb(0, 0, 0);" if="" distanciaactual=""&gt;&lt;span style="font-family:courier new;"&gt;distanciaNormal){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;				giro=-1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;			}else{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;				giro=1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;			}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;			do{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;				MostrarInfo();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;				tp.steer(100,giro*5);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;			}while((Math.abs((distanciaActual=us.getDistance())-distanciaNormal))menor diferencia_max);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;MostrarInfo();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;6. Calibrado del ultrasonido&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En este ejercicio se nos pedía determinar el margen de error y limitaciones del sensor de ultrasonidos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/diferencia_max){}&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;Apartado&lt;span style=""&gt;  &lt;/span&gt;1&lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;Distancia real maxima = 23&lt;span style=""&gt;                                          &lt;/span&gt;distancia real minima = 215&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt; &lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;Apartado 2&lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;Para ayudarnos en la tarea hemos usado este pequeño programa :&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.Button;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.LCD;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.Motor;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.SensorPort;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.nxt.UltrasonicSensor;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;import lejos.robotics.navigation.TachoPilot;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt; &lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;public class PruebaRotando {&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;private static TachoPilot tp = new TachoPilot(5.6f,12f,Motor.C,Motor.B);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;private static UltrasonicSensor us = new UltrasonicSensor(SensorPort.S1);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;public static void main(String[] args) throws InterruptedException {&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;int i,boton,suma,sentido;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;   &lt;/span&gt;&lt;span style="font-size:85%;"&gt;sentido = 1;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;   &lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;suma = 0;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;boton = 0;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;   &lt;/span&gt;while (!(boton==1)){&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;boton = Button.waitForPress();&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;if (boton == 8){&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;    &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;sentido = -1; &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;     &lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;     &lt;/span&gt;if (boton == 2){&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;tp.rotate(sentido*10);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;LCD.drawInt(us.getDistance(), 2, 2);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;       &lt;/span&gt;&lt;span style="font-size:85%;"&gt;suma += 10*sentido;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;       &lt;/span&gt;&lt;span style="font-size:85%;"&gt;LCD.drawInt(suma, 3, 3); &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;     &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;else if (boton == 4){&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;for(i=1;i&lt;=9;i++){&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;tp.rotate(sentido*1);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;LCD.drawInt(us.getDistance(), 2, 2);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;suma += 1*sentido;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;    &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;LCD.drawInt(suma, 3, 3); &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;                &lt;/span&gt;&lt;span style="font-size:85%;"&gt;    &lt;/span&gt;&lt;span style="font-size:85%;"&gt;            &lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;Thread.sleep(1000);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;     &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;LCD.drawInt(suma, 3, 3); &lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 0, 0);font-family:courier new;" class="ecxMsoNormal"&gt;&lt;span lang="EN-US"  style="font-size:85%;"&gt;&lt;span style=""&gt;                &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0); font-family: courier new;" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p face="courier new" style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;Estos son los resultados obtenidos:&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; border-collapse: collapse; margin-left: 4.8pt; margin-right: 4.8pt; color: rgb(0, 0, 0);" align="left" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; width: 66.25pt;" valign="top" width="88"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Grados positivos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;10&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;20&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;30&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.35pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;70&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;80&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;90&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 66.25pt;" valign="top" width="88"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;medida ultrasonidos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 40.7pt;" valign="top" width="54"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.35pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 41.4pt;" valign="top" width="55"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="ecxMsoNormal" style="text-align: center; color: rgb(0, 0, 0);" align="center"&gt; &lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; border-collapse: collapse; color: rgb(0, 0, 0);" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Grados positivos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;42&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;43&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;44&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;45&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;46&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;47&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;48&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;49&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;medida ultrasonidos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt; &lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; border-collapse: collapse; color: rgb(0, 0, 0);" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Grados negativos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-10&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-20&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-30&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-70&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-80&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-90&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;medida ultrasonidos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="ecxMsoNormal" style="text-align: center; color: rgb(0, 0, 0);" align="center"&gt; &lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; border-collapse: collapse; color: rgb(0, 0, 0);" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Grados negativos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-42&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-43&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-44&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-45&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-46&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-47&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-48&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;-49&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;medida ultrasonidos&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;41&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;255&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt; &lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;Por tanto el máximo valor negativo para los que los valores son validos es -46 grados, y el positivo 48 grados.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;Apartado 3&lt;/b&gt;&lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; border-collapse: collapse; color: rgb(0, 0, 0);" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Medida real&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;20&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;30&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;70&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;80&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;90&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;100&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;&lt;u&gt;Medida US&lt;/u&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;22&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;31&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.2pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;61&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;89&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 43.25pt;" valign="top" width="58"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; text-align: center; line-height: normal;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;La media de los errores entre la medida real y la del ultrasonido es 0,66.&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;Apartado 4 &lt;/b&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;Real&lt;span style=""&gt;                                                 &lt;/span&gt;&lt;span style=""&gt;                  &lt;/span&gt;Ultrasonido (10 observaciones)&lt;/b&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;table class="ecxMsoTableGrid" style="border: medium none ; width: 393px; border-collapse: collapse; color: rgb(0, 0, 0); height: 181px;" border="1" cellpadding="0" cellspacing="0"&gt;  &lt;tbody&gt;&lt;tr&gt;   &lt;td style="border: 1pt solid black; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: black black black -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;40&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;50&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;61&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;61&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;61&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;60&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;70&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;71&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;80&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;82&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;82&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;82&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;81&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;82&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;90&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;90&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;90&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;91&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;100&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;100&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;100&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;100&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;101&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;110&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;111&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;113&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;112&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;113&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;111&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;112&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;113&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;113&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;112&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;113&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color black black; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; background: rgb(198, 217, 241) none repeat scroll 0% 0%; width: 27.55pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="37"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;121&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;121&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 42.5pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="57"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;121&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color black black -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 0%; width: 39.3pt; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;" valign="top" width="52"&gt;   &lt;p class="ecxMsoNormal" style="margin-bottom: 0.0001pt; line-height: normal; text-align: center;" align="center"&gt;120&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;b style=""&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);" class="ecxMsoNormal"&gt;En vista de los resultados obtenidos no tenemos ninguna evidencia que indique que la distancia influya en el error de medicion del sensor de ultrasonidos.&lt;/p&gt;&lt;br /&gt;&lt;diferencia_max){} style="color: rgb(0, 0, 0);" if="" distanciaactual=""&gt;&lt;diferencia_max);&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Eso es todo, amigos...&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/diferencia_max);&gt;&lt;/diferencia_max){}&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-1659421197230132676?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/1659421197230132676/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=1659421197230132676&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/1659421197230132676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/1659421197230132676'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/02/practica2.html' title='Práctica2'/><author><name>JSantos</name><uri>http://www.blogger.com/profile/04781799357360579289</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_e_Ztb31cL28/S4WbqZOneLI/AAAAAAAAAB4/fSgKNArg7qY/s72-c/DSC00059.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-6903678000140305271</id><published>2010-02-18T12:09:00.012+01:00</published><updated>2010-02-18T18:16:38.606+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='4. Práctica1'/><title type='text'>Práctica1</title><content type='html'>&lt;div&gt;Llego el dia de la primera exhibicion seria de Hansf10. A continuación se detallan los tejemanejes que es capaz de hacer este ser de poligonal mentalidad.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_zETW74kcbzI/S30p2YahVbI/AAAAAAAAAA0/YnBXm2Dfcfs/s160%20-h/DSC09998.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 100px; height: 75px;" src="http://2.bp.blogspot.com/_zETW74kcbzI/S30p2YahVbI/AAAAAAAAAA0/YnBXm2Dfcfs/s200/DSC09998.JPG" alt="" id="BLOGGER_PHOTO_ID_5439549939176789426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_zETW74kcbzI/S30p1cp4TWI/AAAAAAAAAAs/UBgMRmQqi1c/s1600-h/DSC09997.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 100px; height: 75px;" src="http://1.bp.blogspot.com/_zETW74kcbzI/S30p1cp4TWI/AAAAAAAAAAs/UBgMRmQqi1c/s200/DSC09997.JPG" alt="" id="BLOGGER_PHOTO_ID_5439549923135081826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_zETW74kcbzI/S30p1IpUTJI/AAAAAAAAAAk/DTA7nCHSEd0/s1600-h/DSC09996.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 100px; height: 75px;" src="http://4.bp.blogspot.com/_zETW74kcbzI/S30p1IpUTJI/AAAAAAAAAAk/DTA7nCHSEd0/s200/DSC09996.JPG" alt="" id="BLOGGER_PHOTO_ID_5439549917764013202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1) Control basico del motor&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Al pulsar cualquier boton el robot activa el motor conectado a su puerto A,desactivandose si se vuelve a pulsar. El programa BasicMotor1.java regula ese comportamiento, su codigo se detalla a continuación.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;import lejos.nxt.*; &lt;/div&gt;&lt;div&gt;public class BasicMotor1 {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;Motor.A.setSpeed(900);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(true){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Button.waitForPress();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Motor.A.forward();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Button.waitForPress();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Motor.A.stop();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aoq2hYHeP1E&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/aoq2hYHeP1E&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Una variante del anterior es BasicMotor2.java. Su mision es que al pulsar cualquier botón el motor gire 45 grados y posteriormente se detenga.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import lejos.nxt.*;&lt;/div&gt;&lt;div&gt;public class BasicMotor2 {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;Motor.A.setSpeed(900);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(true){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Button.waitForPress();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Motor.A.rotate(45);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HJAnqyPMogY&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/HJAnqyPMogY&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Como no hay dos sin tres tenemos tambien BasicMotor3.java que se comporta igual que&lt;/div&gt;&lt;div&gt;BasicMotor2.java pero usando el metodo rotateTo() en lugar de rotate().&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;import lejos.nxt.*;&lt;/div&gt;&lt;div&gt;public class BasicMotor3 {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public static void main(String[] args) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;Motor.A.setSpeed(900);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(true){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Button.waitForPress();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;int TachoCountActual=Motor.A.getTachoCount();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Motor.A.rotateTo(TachoCountActual + 45);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2) Visualizacion de la odometria del motor&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Se ha usado uno de los motores conectado al puerto B y una pieza en forma de pseudoele enganchada a su eje. El programa Odometria.java se encarga de leer continuamente la posición en grados en la que el eje y la pseudoele se unen. La posicion donde esten situadas al arrancar el programa marca el valor de 0 grados.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import lejos.nxt.*;&lt;/div&gt;&lt;div&gt;public class Odometria {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;public static void main(String[] args)throws Exception {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;while(true){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;LCD.clear();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;LCD.drawString("Giro:", 2, 1);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;int TachoCountActual=Motor.B.getTachoCount()%360;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;if (TachoCountActual&lt;0){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;				&lt;/span&gt;TachoCountActual=360+TachoCountActual;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;LCD.drawInt(TachoCountActual, 2, 3);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;			&lt;/span&gt;Thread.sleep(100);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vr8RNnM4Nj0&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/vr8RNnM4Nj0&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3) Cuadrado de calibracion de movimiento&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Esta es una de las habilidades que mas satisfaccion produciran al lector de este blog si disfruta de cosas tales como la imagen de un perro trazando circulos al persiguir su propia cola. El programa responsable es Cuadro.java.Por desgracia no hemos conseguido crear el cuadrado correctamente. Creemos que debido a que los métodos que se encargan del giro del robot solo admitian valores enteros se perdia precision.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;import lejos.nxt.Motor;&lt;/div&gt;&lt;div&gt;import lejos.robotics.navigation.TachoPilot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public class Cuadro {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static TachoPilot tp;&lt;/div&gt;&lt;div&gt;    public void Cuadrado(float length) throws InterruptedException&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;        for(int i = 0; i&lt;4&gt;&lt;div&gt;        {&lt;/div&gt;&lt;div&gt;            tp.travel(length);&lt;/div&gt;&lt;div&gt;            tp.rotate(-90);  &lt;/div&gt;&lt;div&gt;        }&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    public static void main(String[] args) throws InterruptedException&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;tp = new TachoPilot(5.6f,10.5f,Motor.C,Motor.B);&lt;/div&gt;&lt;div&gt;        Cuadro cu = new Cuadro();&lt;/div&gt;&lt;div&gt;        cu.Cuadrado(40);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Colocacion del lapiz para pintar el papel:&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_zETW74kcbzI/S30tIYupd5I/AAAAAAAAABE/6V6MfYZLJ4Y/s1600-h/DSC00021.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_zETW74kcbzI/S30tIYupd5I/AAAAAAAAABE/6V6MfYZLJ4Y/s200/DSC00021.JPG" alt="" id="BLOGGER_PHOTO_ID_5439553547033737106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KnjUWsbYqz8&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/KnjUWsbYqz8&amp;amp;hl=es_ES&amp;amp;fs=1&amp;amp;color1=0x3a3a3a&amp;amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Resultado :&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zETW74kcbzI/S30whx0GuxI/AAAAAAAAABc/mYXJg0MvjQQ/s1600-h/DSC00019.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_zETW74kcbzI/S30whx0GuxI/AAAAAAAAABc/mYXJg0MvjQQ/s200/DSC00019.JPG" alt="" id="BLOGGER_PHOTO_ID_5439557281799125778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zETW74kcbzI/S30whHlRXSI/AAAAAAAAABU/AyFGz9Ngx4I/s1600-h/DSC00017.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_zETW74kcbzI/S30whHlRXSI/AAAAAAAAABU/AyFGz9Ngx4I/s200/DSC00017.JPG" alt="" id="BLOGGER_PHOTO_ID_5439557270462618914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zETW74kcbzI/S30xQR4z4gI/AAAAAAAAABk/GQLBzsmSUpM/s1600-h/DSC00018.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_zETW74kcbzI/S30xQR4z4gI/AAAAAAAAABk/GQLBzsmSUpM/s200/DSC00018.JPG" alt="" id="BLOGGER_PHOTO_ID_5439558080682779138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5) Visualizacion de la trayectoria&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Este es el codigo que hace a hansf10 mas parlanchin contandonos toda su trayectoria mediante una matriz 3x1. Indica la posición en el eje "x", la posición en el eje "y" y el angulo actuales.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;import lejos.nxt.LCD;&lt;/div&gt;&lt;div&gt;import lejos.nxt.Motor;&lt;/div&gt;&lt;div&gt;import lejos.robotics.navigation.TachoPilot;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;public class MovCuadro {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static TachoPilot tp;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static float x=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static float y=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;static float ang=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;private void UpdateCoord1(int dist){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;x=(float)(x+dist*(Math.cos(ang*3.14159/180)));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;y=(float)(y+dist*(Math.sin(ang*3.14159/180)));&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;private void UpdateCoord2(float nuevoAng){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;ang=(int)(ang+nuevoAng);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;private void ShowCoord(){&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.clear();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawString("x:",2,2);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawString("y:",2,3);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawString("G:",2,4);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawInt((int)x,4,2);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawInt((int)y,4,3);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;LCD.drawInt((int)ang,4,4);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    public void Cuadrado(float length) throws InterruptedException{&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;for (int j=0;j&lt;10;j++){&lt;/div&gt;&lt;div&gt;        &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;tp.setMoveSpeed(90);&lt;/div&gt;&lt;div&gt;                tp.setTurnSpeed(90);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;x=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;y=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;ang=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        for(int i = 1; i&lt;=4 ; i++)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;    tp.reset();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        tp.travel(length);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        UpdateCoord1((int)tp.getTravelDistance());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;    ShowCoord();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;    Thread.sleep(5000);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        tp.rotate(-90);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        UpdateCoord2(tp.getAngle());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;    ShowCoord();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;		&lt;/span&gt;    Thread.sleep(5000);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        }&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;        Thread.sleep(20000);&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    public static void main(String[] args) throws InterruptedException&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;tp = new TachoPilot(5.6f,12f,Motor.C,Motor.B);&lt;/div&gt;&lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;	&lt;/span&gt;MovCuadro cu = new MovCuadro();&lt;/div&gt;&lt;div&gt;        cu.Cuadrado(40);&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Uno de los problemas que hemos tenido en la parte de odometria fue que al dar mas de una vuelta nos salían valores mayores a 360º o menores 0º (segun la direccion en que moviéramos). El primero lo solucionamos haciendo un modulo de 360 del grado actual y el segundo sumando 360º (calculando asi su equivalente positivo). Intentamos un nuevo diseño diferente al predefinido pero tuvimos que desistir ya que nos dimos cuenta que al girar habia problemas con la distribución del peso y como consecuencia derrapaba una de las ruedas. Finalmente por falta de tiempo no hemos podido hacer el apartado de la matriz de covarianzas, asique la proxima vez procuraremos prestar mas atención a los plazos de entrega.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;* Diseño alternativo que intentamos y tuvimos que descartar&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zETW74kcbzI/S302J3_wV6I/AAAAAAAAACM/vWFDEmsEDvo/s1600-h/150220101293.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 200px;" src="http://3.bp.blogspot.com/_zETW74kcbzI/S302J3_wV6I/AAAAAAAAACM/vWFDEmsEDvo/s200/150220101293.jpg" alt="" id="BLOGGER_PHOTO_ID_5439563468211509154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zETW74kcbzI/S302LNQdlmI/AAAAAAAAACc/J3DZQgD2EKY/s1600-h/150220101295.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_zETW74kcbzI/S302LNQdlmI/AAAAAAAAACc/J3DZQgD2EKY/s200/150220101295.jpg" alt="" id="BLOGGER_PHOTO_ID_5439563491098596962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zETW74kcbzI/S302KOMzQqI/AAAAAAAAACU/u7LATuDRuS8/s1600-h/150220101294.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_zETW74kcbzI/S302KOMzQqI/AAAAAAAAACU/u7LATuDRuS8/s200/150220101294.jpg" alt="" id="BLOGGER_PHOTO_ID_5439563474171806370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-6903678000140305271?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/6903678000140305271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=6903678000140305271&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/6903678000140305271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/6903678000140305271'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/02/primera-practica.html' title='Práctica1'/><author><name>César Pérez Fernández</name><uri>http://www.blogger.com/profile/12566222554604043818</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zETW74kcbzI/S30p2YahVbI/AAAAAAAAAA0/YnBXm2Dfcfs/s72-c/DSC09998.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-631434897968616046</id><published>2010-02-10T21:40:00.028+01:00</published><updated>2010-02-10T23:21:13.806+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3. Ensamblaje básico + pruebas sobre motores y ultrasonidos'/><title type='text'>Trasteando antes de las prácticas...</title><content type='html'>Como era de esperar en nosotros (gente de paciencia y templanza suprema) ...no pudimos esperar a las primeras prácticas, de manera que comenzamos a investigar los métodos de las clases que nos ofrece leJOS.&lt;br /&gt;¿Probarlo?Sí, pero ¿Cómo?&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Cuestiones Previas&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="font-style: italic;"&gt;Compilar una aplicación para un NXT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Como ya dijimos en la entrada anterior, nos servimos de Eclipse para desarrollar nuestras pequeñas aplicaciones.&lt;br /&gt;&lt;br /&gt;En mi caso(particular, no hablo por mi compañero) uso Eclipse para poder explorar con mayor facilidad las clases y así crear el archivo &lt;span style="font-family:courier new;"&gt;.java&lt;/span&gt; , pero para el proceso de compilación,"linkado" y subida al robot, hago uso de terminal.&lt;br /&gt;&lt;br /&gt;Pongamos que tenemos un fichero de programa "HolaMundo.java".&lt;br /&gt;Seguimos los siguientes pasos para compilarlo, "linkarlo" y descargarlo en la consola del robot.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;1. Compilación&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;    nxjc HelloWorld.java&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;2. "Linkado"&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;    nxjlink HelloWorld -o HelloWorld.nxj&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;3. Descarga en la consola del robot&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;    nxjupload HelloWorld.nxj&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;Después de seguir estos pasos, el robot emitirá un sonido confirmando éxito en la descarga en su consola.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Paso 1: MONTAJE&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; (Para los redichos: "Ensamblado" )&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;En primer lugar nos faltaba el Hardware que soportase las perrerías que haríamos llamando a métodos aún sin testar por nuestra psique. De manera que el primer paso fue montar HansF10 de forma básica.&lt;br /&gt;Para ello seguimos el manual de montaje suministrado en la caja. Tras varios pasos y varias injurias a empresas como Ikea conseguimos el siguiente resultado:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e_Ztb31cL28/S3MiqsxI5PI/AAAAAAAAAAs/0V6NTOY-Ftw/s1600-h/DSC09996.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_e_Ztb31cL28/S3MiqsxI5PI/AAAAAAAAAAs/0V6NTOY-Ftw/s200/DSC09996.JPG" alt="" id="BLOGGER_PHOTO_ID_5436727292133434610" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_e_Ztb31cL28/S3MjRWSGduI/AAAAAAAAAA8/P34lpkfNHuA/s1600-h/DSC09997.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_e_Ztb31cL28/S3MjRWSGduI/AAAAAAAAAA8/P34lpkfNHuA/s200/DSC09997.JPG" alt="" id="BLOGGER_PHOTO_ID_5436727956112570082" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_e_Ztb31cL28/S3MjAsd9uAI/AAAAAAAAAA0/HsTiDNyxzDg/s1600-h/DSC09998.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_e_Ztb31cL28/S3MjAsd9uAI/AAAAAAAAAA0/HsTiDNyxzDg/s200/DSC09998.JPG" alt="" id="BLOGGER_PHOTO_ID_5436727670010132482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Paso 2: Probando la rotación y movimiento de la criatura&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Fue entonces cuando nos dimos cuenta de que estábamos frente a la máquina perfecta.&lt;br /&gt;Para probar su potencial hicimos un pequeño programa, absurdo sí, en apariencia, pero que nos sirvió para comprobar como funcionaban los servo-motores y ensayar un poco sobre el LCD.&lt;br /&gt;&lt;br /&gt;El código es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;import lejos.nxt.*;&lt;br /&gt;public class HolaMundo {&lt;br /&gt;   public static void main(String[] args)throws Exception {&lt;br /&gt;            LCD.drawString("Hola Mundo!",3,1);&lt;br /&gt;            LCD.drawString("HANSF10",3,3);&lt;br /&gt;            Thread.sleep(3500);&lt;br /&gt;          &lt;br /&gt;            Motor.B.setSpeed(500);&lt;br /&gt;            Motor.C.setSpeed(500);&lt;br /&gt;            Motor.B.forward();&lt;br /&gt;            Thread.sleep(6000);&lt;br /&gt;            Motor.C.stop();&lt;br /&gt;            Motor.C.forward();&lt;br /&gt;            Thread.sleep(6000);&lt;br /&gt;            Motor.B.stop();&lt;br /&gt;          &lt;br /&gt;          &lt;br /&gt;          &lt;br /&gt;            LCD.clear();&lt;br /&gt;            LCD.drawString("YA ESTÁ",3,3);&lt;br /&gt;            Thread.sleep(2000);&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El funcionamiento en resumen era que el robot girase sobre si mismo 6 segundos en sentido antihorario, avanzase seguidamente hacia delante durante otros 6 segundos, y por último girase otros 6 segundos más en sentido horario, para acabar mostrando por pantalla "YA ESTA".&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Paso 3: ...y si ahora le añadimos ULTRASONIDOS...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ocurrió que, atreviéndonos a dar un paso adelante, decidimos montar los ultrasonidos para programar un poco más sobre leJOS y desentrañar el funcionamiento sobre los UltraSonidos...&lt;br /&gt;HansF10 evolucionó hasta adquirir el siguiente aspecto:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_e_Ztb31cL28/S3Ml19YXtuI/AAAAAAAAABE/LjQt2QwFeQQ/s1600-h/DSC09999.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_e_Ztb31cL28/S3Ml19YXtuI/AAAAAAAAABE/LjQt2QwFeQQ/s200/DSC09999.JPG" alt="" id="BLOGGER_PHOTO_ID_5436730784106395362" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_e_Ztb31cL28/S3MmIe0XsRI/AAAAAAAAABM/-_DRm4TcrNk/s1600-h/DSC00001.JPG"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_e_Ztb31cL28/S3MmIe0XsRI/AAAAAAAAABM/-_DRm4TcrNk/s200/DSC00001.JPG" alt="" id="BLOGGER_PHOTO_ID_5436731102319849746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Esta vez hicimos una pequeña aplicación de prueba que consistía en poner a rodar el robot hacia delante, regulando su velocidad en función a la proximidad con el objeto más cercano detectado por el ultrasonido.&lt;br /&gt;&lt;br /&gt;El código es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;import lejos.nxt.*;&lt;br /&gt;public class PruebaUltraSonidos {&lt;br /&gt;           public static void main(String[] args)throws Exception {&lt;br /&gt;   &lt;br /&gt;      &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;final int MAX_VELOCIDAD=600;&lt;br /&gt;      &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;final int MAX_ALCANCE_ULTRASOUND=225;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;final int DISTANCIA_PARADA=25;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;   &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Boolean salir = false;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;UltrasonicSensor US = new &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;UltrasonicSensor(SensorPort.S1);&lt;br /&gt;   &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.drawString("UltraSonidos Test",1,1);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.drawString("para HANSF10",1,2);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Thread.sleep(3500);&lt;br /&gt;    &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.B.setSpeed(MAX_VELOCIDAD);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.C.setSpeed(MAX_VELOCIDAD);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.B.forward();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.C.forward();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;US.continuous();&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Thread.sleep(2000);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;        &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;while(salir!=true){&lt;br /&gt;          &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;int distanciaAlObjetoMasProximo=US.getDistance();&lt;br /&gt;          &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.clear();&lt;br /&gt;          &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.drawInt(distanciaAlObjetoMasProximo,3,1);&lt;br /&gt;          &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;   &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;if (distanciaAlObjetoMasProximo&lt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;DISTANCIA_PARADA&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;){               &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;salir=true;           &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;   &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;   &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.B.setSpeed(                     (distanciaAlObjetoMasProximo*MAX_VELOCIDAD)/MAX_ALCANCE_ULTRASOUND);&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;   &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.C.setSpeed(                     (distanciaAlObjetoMasProximo*MAX_VELOCIDAD)/MAX_ALCANCE_ULTRASOUND);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;}       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.B.stop();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Motor.C.stop();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;US.off();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.clear();       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;LCD.drawString("YA ESTÁ",3,3);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;     &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;Thread.sleep(2000);   &lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;            &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;font-size:100%;"  &gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;El resultado en cuestión es el siguiente (obviemos el suelo de parquet y la zapatilla tirada):&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5Fa5PRH7myo&amp;hl=es_ES&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5Fa5PRH7myo&amp;hl=es_ES&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;PROBLEMAS OBSERVADOS:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Fue difícil determinar la distancia a la que debía pararse el robot antes de chocar contra un obstáculo. Mediante la ancestral técnica del "prueba y error" determinamos que 25 centímetros era distancia prudencial. La tuvimos en cuenta a partir de un error aproximado de 5 cm + 12 cm que puede tener de largo el robot. El resto de la distancia que falta hasta llegar a 25 es lo que falta para que Hans chocase contra un objeto o pared.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-631434897968616046?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/631434897968616046/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=631434897968616046&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/631434897968616046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/631434897968616046'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/02/trasteando-antes-de-las-practicas.html' title='Trasteando antes de las prácticas...'/><author><name>JSantos</name><uri>http://www.blogger.com/profile/04781799357360579289</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_e_Ztb31cL28/S3MiqsxI5PI/AAAAAAAAAAs/0V6NTOY-Ftw/s72-c/DSC09996.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-6328916782135214030</id><published>2010-02-04T18:10:00.012+01:00</published><updated>2010-02-04T19:32:15.314+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2. Preparación del entorno de desarrollo'/><title type='text'>Preparación del entorno de desarrollo</title><content type='html'>Para desarrollar las habilidades de HansF10 usaremos leJOS NXJ en su versión más reciente (en este caso 0.8-5).&lt;br /&gt;leJOS NXJ es un entorno de programación para el MINDSTORM NXT que permite programar el robot en Java.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;Requisitos&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.randalpinkett.com/images/sunLogo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 112px; height: 49px;" src="http://www.randalpinkett.com/images/sunLogo.gif" alt="" border="0" /&gt;&lt;/a&gt;JDK(JavaDevelopmentKit) que contendrá la máquina virtual de Java y los paquetes adicionales para desarrollar SW Java&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;sudo apt-get install jdk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.joelsedano.com/blog/wp-content/uploads/2007/11/eclipse.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 111px; height: 71px;" src="http://www.joelsedano.com/blog/wp-content/uploads/2007/11/eclipse.jpg" alt="" border="0" /&gt;&lt;/a&gt;Eclipse u otro entorno de desarrollo cómodo al usuario&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&lt;br /&gt;(Descargar Eclipse Classic 3.5.1&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lejos.sourceforge.net/r_media/images/lejosLogo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 181px; height: 50px;" src="http://lejos.sourceforge.net/r_media/images/lejosLogo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;leJOS NXJ, para poder comunicarnos con el robot, descargar nuevas ordenes...&lt;br /&gt;En nuestro caso hemos descargado la version para MAC/Linux&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/lejos/files/lejos-NXJ/"&gt;http://sourceforge.net/projects/lejos/files/lejos-NXJ/&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Pasos a seguir&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Instalar leJOS NXJ&lt;/li&gt;&lt;li&gt;Editar .bashrc para que cada vez que ejecutemos un terminal exporte las siguientes variables de entorno:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div  style="text-align: justify;font-family:lucida grande;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;export JAVA_HOME=/usr/lib/jvm/java-6-sun&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;" &gt;export NXJ_HOME=/usr/local/lejos&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-style: italic;"&gt;export PATH=$PATH:$NXJ_HOME/bin&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Instalar Firmware del robot&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Para más información visitar el Tutorial Oficial de leJOS&lt;br /&gt;&lt;a href="http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm"&gt;http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;&lt;span style="font-size:180%;"&gt;Problemas observados&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Falta de paquetes en nuestro sistema Linux.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Es muy común que no estén instaladas las librerías USB o las de comunicación BlueTooth (jBluez), lo que puede dar problemas a la hora de la comunicación del robot con el PC con errores tales como:&lt;b&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;"...&lt;/b&gt; an &lt;em&gt;error&lt;/em&gt; occurred: Cannot load a &lt;em&gt;comm&lt;/em&gt; driver"&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Para ello tuvimos que instalar aparte los siguientes paquetes:&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;libbluetooth3&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;libbluetooth-dev&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;libusb-0.1.12 &lt;/span&gt;&lt;br /&gt;(disponible en sourceforge:&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.6/libusb-1.0.6.tar.bz2/download"&gt;http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.6/libusb-1.0.6.tar.bz2/download&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;libusb-dev&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-size:130%;" &gt;g++&lt;/span&gt;&lt;br /&gt;(preprocesador de C++ para poder compilar libusb)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;En la próxima entrada echaremos un vistazo al &lt;span style="font-style: italic;"&gt;Helloworld.java&lt;/span&gt; y el uso del compilador nxjc.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-6328916782135214030?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/6328916782135214030/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=6328916782135214030&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/6328916782135214030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/6328916782135214030'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/02/preparacion-del-entorno-de-desarrollo.html' title='Preparación del entorno de desarrollo'/><author><name>JSantos</name><uri>http://www.blogger.com/profile/04781799357360579289</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2844287877960593391.post-7501150810480449960</id><published>2010-02-01T16:25:00.004+01:00</published><updated>2010-02-12T17:29:50.733+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='1. Creación del blog'/><title type='text'>Nace el concepto de HansF10</title><content type='html'>&lt;span style="COLOR: rgb(0,0,153)"&gt;&lt;div&gt;&lt;br /&gt;Tras una ceremonia en la que se contaron múltiples personalidades del panorama social del país (para los de la LOGSE: "casposos"), y aperitivos de la alta cocina (ganchitos, patatas y pesicolas), se da por inaugurado el inicio de &lt;b&gt;&lt;span style="font-size:130%;"&gt;HANSF10&lt;/span&gt;&lt;/b&gt; como concepto de robot.&lt;br /&gt;&lt;br /&gt;-Hemos elegido el nombre de "Hans" dada la dificultad de ver como los humanos, lo cual nos recordaba al emblemático HansTopo de la serie LosSimpsons.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="COLOR: rgb(0,0,153)" align="center"&gt;&lt;img src="http://www.galeon.com/sector7g/multimedia/imageness/mugshots/mughans.gif" width="167" height="116" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;-De igual manera hemos elegido como apellido "F10" como motivo de homenaje al recién estrenado prototipo de bólido de Ferrari. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="color:#000099;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt; &lt;div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 245px; DISPLAY: block; HEIGHT: 161px; CURSOR: hand" border="0" alt="" src="http://www.rtve.es/imagenes/imagen-del-nuevo-f10/1264677201979.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="COLOR: rgb(0,0,153)"&gt;&lt;br /&gt;De esta no-tan-espectacular forma, nace HansF10.&lt;br /&gt;&lt;br /&gt;Seguiremos a la espera de propósitos específicos para la criaturita....&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2844287877960593391-7501150810480449960?l=hansf10.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hansf10.blogspot.com/feeds/7501150810480449960/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2844287877960593391&amp;postID=7501150810480449960&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/7501150810480449960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2844287877960593391/posts/default/7501150810480449960'/><link rel='alternate' type='text/html' href='http://hansf10.blogspot.com/2010/02/nace-el-concepto-de-hansf10.html' title='Nace el concepto de HansF10'/><author><name>JSantos</name><uri>http://www.blogger.com/profile/04781799357360579289</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
