tag:blogger.com,1999:blog-67622077085258048222024-03-12T20:21:40.183-05:00: NX-BOT :NXBOT is a robot entirely designed and constructed in the Universidad del Valle of Cali, Colombia. Mainly used for cooperative tasks, NXBOT is also being applied in other research areas, such as vision-based navigation. NXBOT has been completely designed using open source tools and is part of the robotic platforms of the PSI research group. NXBOT has been developed and maintained by Alejandro Pustowka and Jonathan Hernandez.Jonalejohttp://www.blogger.com/profile/09743137319682507061noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-6762207708525804822.post-89130054085746141812012-02-04T18:20:00.001-05:002012-02-04T18:20:55.698-05:00Stereovision<b>English</b>:<br />
<br />
Finally! In the image below you can see NXBOT with its stereovision system. Cool, isn´t it?<br />
<br />
<b>Español</b>:<br />
<br />
Finalmente, en la imagen a continuación se puede ver a NXBOT con el sistema de estéreo-vision!<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_JLpGRqWpyQ_enviddNh4dtMgPIcIWwzi1i-s2GY7qHO9S7z_rxE0ZFQP-Qx8lBZ_XxU2ycFo-GhBsz_kCqMJGijTLxP4kHgTUlq0fyw99rDNwl24itj9e5cqCQsArOeK8N1ipb019Zb/s1600/nxbot-stereovision.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgN_JLpGRqWpyQ_enviddNh4dtMgPIcIWwzi1i-s2GY7qHO9S7z_rxE0ZFQP-Qx8lBZ_XxU2ycFo-GhBsz_kCqMJGijTLxP4kHgTUlq0fyw99rDNwl24itj9e5cqCQsArOeK8N1ipb019Zb/s400/nxbot-stereovision.jpg" width="400" /></a></div>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-87183635578329871692011-07-12T09:10:00.000-05:002011-07-12T09:10:09.259-05:00Stereovision enabled in NXBOT // Habilitado sistema de stereovision en NXBOT<div style="text-align: justify;"><b>English</b></div><div style="text-align: justify;">By using a hub and two Logitech cameras C270, it was posible to create a stereovision system for NXBOT. Preliminar tests have shown that a rate of 20 FPS can be achieved. We are now designing a simple structure in acrilic to support the two cameras. More information soon!</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Español</b></div><div style="text-align: justify;">Hemos usado un hub USB y dos cámaras Logitech 270 para crear el sistema de estereovision para NXBOT. Es posible alcanzar hasta 20 cuadros por segundo por cada cámara. Estamos diseñando el soporte en acrílico que permita acomodar fácilmente las cámaras, de tal manera que se pueda mantener constante la distancia entre ellas. Más información e imágenes próximamente!</div>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-53925454799041952472011-06-16T10:30:00.008-05:002011-06-16T10:45:27.472-05:00NXBOT: Ahora con pinza! / Now with gripper!<span style="font-weight: bold;">English</span><br />We have successfuly adapted a gripper to NXBOT. We have also updated the player driver in order to support this new item. Below you can see some images of the robot with the adapted gripper<span style="font-weight: bold;">.</span><br /><br /><span style="font-weight: bold;">Español</span><br />Le hemos adaptado a NXBOT una pinza, para la cual ya hemos actualizado el driver de Player, y podemos controlarla a través de la interfaz <span style="font-style: italic;">gripper</span>. Se muestran las imágenes a continuación.<br /><br /><table style="width: 454px; height: 393px;"><tbody><tr><td><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbeYfl-GoKZLWYijrcy3lKPMh8-hBhV8F7fHQkULZ-8JrJfMCdFdA8vcNhtD8DfT_haxRkf0eiLIAcDBucS8GanPTYrI4wMvYSacKzVvuRe5xYUsxLLWMkzx2B3AyYALBYYL7F31vg5bnW/s1600/nxbot-pinza.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 213px; height: 255px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbeYfl-GoKZLWYijrcy3lKPMh8-hBhV8F7fHQkULZ-8JrJfMCdFdA8vcNhtD8DfT_haxRkf0eiLIAcDBucS8GanPTYrI4wMvYSacKzVvuRe5xYUsxLLWMkzx2B3AyYALBYYL7F31vg5bnW/s320/nxbot-pinza.jpg" alt="" id="BLOGGER_PHOTO_ID_5618842094718472066" border="0" /></a><br /></td><td><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtU2yMLapR8Nu2zpNtKCZmD77A-DvzbmJpdKRuw5nIvqKVDSfWogcRJWFBzaAYtquva0V4HMjmLxj9z54D-95BRZ4yv9rjVUjiRlYzhSHppusGHV06pEBiZ6GFbdEE5PjD6uSztJForz0/s1600/nxbot-pinza2.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 199px; height: 238px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtU2yMLapR8Nu2zpNtKCZmD77A-DvzbmJpdKRuw5nIvqKVDSfWogcRJWFBzaAYtquva0V4HMjmLxj9z54D-95BRZ4yv9rjVUjiRlYzhSHppusGHV06pEBiZ6GFbdEE5PjD6uSztJForz0/s320/nxbot-pinza2.jpg" alt="" id="BLOGGER_PHOTO_ID_5618842094782519074" border="0" /></a><br /></td></tr><tr><td style=" font-style: italic;font-family:arial;" align="center"><span style="font-size:85%;">NXBOT w. gripper</span></td><td style="font-style: italic; font-family:arial;" align="center"><span style="font-size:85%;"> NXBOT w. gripper + US sensor + webcam<br /></span></td></tr></tbody></table>Alejandrohttp://www.blogger.com/profile/05001686136338839156noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-76218977768578141982011-06-06T14:47:00.009-05:002011-06-07T23:54:10.144-05:00Actualización/Update: OpenWRT/Backfire -- Player/Stage<span style="font-weight: bold;">English</span><br />OpenWRT has released Backfire 10.03, which includes full support for the bcm43 drivers, that means the Wifi hardware of NXBOT is finally completely stable. The Linux kernel this version includes (2.6.32) is LTS (Long Term Support).<br /><br />The new version of Player/Stage (3.0.2) has also been compiled for NXBOT. The robot now supports Cameras via Player, by using the <span style="font-style: italic;">camerauvc</span> driver. The following interfaces are currently supported:<br /><ul><li>Position2d</li><li>IR (Deprecated, will be changed to Ranger)</li><li>Sonar (Deprecated, will be changed to Ranger)</li><li>Power</li><li>Bumper</li><li>DIO (8 OUT channels, 4 IN channels)</li><li>AIO (8 channels)<br /> </li><li>Camera</li></ul> We have also updated the NXBOT page (nxbot.naxuscolombia), so take a look, as we will soon be in the process of migrating the web from Google Sites to a new hosting: jimdo.com.<br /><br /><span style="font-weight: bold;">Spanish</span><br /><div style="text-align: justify;">Luego de Kamikaze (8.09), finalmente OpenWRT ha lanzado la última versión de su plataforma: Backfire 10.03. Las anteriores versiones no habían sido tomadas en cuenta para actualizar NXBOT, debido a que no existía un soporte completo para el driver del sistema Wifi del robot, pues la actualización a kernel Linux 2.6 sacrificó el uso de drivers privativos de Broadcom, que sólo estaban disponibles en forma binaria para el kernel 2.4. De esta manera se tiene mejor soporte y estabilidad del sistema operativo, ya que esta versión incluye el kernel 2.6.32 considerado LTS (Long Term Support).<br /><br />Se ha compilado la nueva versión de Player/Stage para NXBOT, Player 3.0.2: ahora NXBOT incluye soporte para cámaras web UVC. De esta manera, es más sencillo utilizar los algoritmos de visión ya implementados en Player. Próximamente estaremos mostrando algunos resultados de experimentos. Las siguientes interfaces son soportadas por la última versión de Player para NXBOT:<br /><ul><li>Position2d</li><li>IR (Depreciado, se cambiará por Ranger)</li><li>Sonar (Depreciado, se cambiará por Ranger)</li><li>Power</li><li>Bumper</li><li>DIO (8 canales salida, 4 canales de entrada)</li><li>AIO (8 canales)<br /></li><li>Camera</li></ul>Por otro lado, se ha actualizado la página web de NXBOT, incluyendo todo el procedimiento de instalación de OpenWRT, compilación cruzada de Player/Stage, para que en una próxima ocasión este proceso pueda ser más fácilmente realizado. Les recomendamos visitar la página, que próximamente estaremos trasladando de Hosting, de Google Sites a Jimdo, debido a los claros beneficios de presentación que este último brinda.<br /><br /></div>Alejandrohttp://www.blogger.com/profile/05001686136338839156noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-14691610696502884922011-05-19T02:45:00.000-05:002011-05-19T02:45:20.203-05:00Cambios a NX-BOT<b>English</b><br />
<div style="text-align: justify;">We are planning to redesign the mechanics of NX-BOT. First of all, we will use new motors in order to increase the actual velocity of the robot, and also set up a new encoder system, increasing its resolution and using it on a quadrature configuration to establish the direction of wheel rotation. <br />
<br />
<i>The motors</i><br />
The following motors have been selected from our supplier Pololu. More information <a href="http://www.pololu.com/catalog/product/2218">here</a>. <i><br />
</i><br />
<div style="text-align: center;"><a href="http://www.pololu.com/picture/0J2814.600.jpg?1284602434" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="http://www.pololu.com/picture/0J2814.600.jpg?1284602434" width="200" /></a></div></div><br />
<u>Specifications</u><br />
<ul><li>298:1 reduction.</li>
<li>100 RPM.</li>
<li>6.5 kg/cm Torque.</li>
<li>1.6A Stall current.</li>
<li>extended Shaft for the location of the encoder.</li>
</ul><br />
The encoders<br />
We are planning to use two digital Hall effect sensors for each motor. The sensor reference is <i>A3212EUA.</i><br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://www.sigmaelectronica.net/images/A3212EUA.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.sigmaelectronica.net/images/A3212EUA.jpg" width="200" /></a></div><u> Specifications</u><br />
<ul><li>1192 pulses/rev</li>
<li>Quadrature configuration<i><br />
</i></li>
</ul><br />
More information coming soon...<br />
<br />
<b>Español</b><br />
<div style="text-align: justify;">Estamos en planes de rediseñar la parte mecánica de NX-BOT. Primero pensamos realizar unos cambios en los motores y encoders del robot, el primer caso para lograr mayores velocidades, y el segundo caso para aumentar la resolución de los encoders actuales (360 pulsos/rev), y utilizar una configuración en cuadratura para establecer la dirección de giro. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><i>Los motores</i> </div><div style="text-align: justify;">En estos momentos hemos seleccionado los siguientes motores del proveedor Pololu. <a href="http://www.pololu.com/catalog/product/2218">aquí</a>.</div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.pololu.com/picture/0J2814.600.jpg?1284602434" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="125" src="http://www.pololu.com/picture/0J2814.600.jpg?1284602434" width="200" /></a></div><br />
<u>Características técnicas:</u><br />
<ul><li>Reducción 298:1.</li>
<li>100 RPM.</li>
<li>Torque: 6.5 kg/cm.</li>
<li>Corriente Stall: 1.6A.</li>
<li>Shaft extendido para colocar un encoder.</li>
</ul><br />
<i>Los encoders</i><br />
En cuanto a los encoders, se planea utilizar sensores de efecto Hall de salida digital, específicamente la referencia <i>A3212EUA.</i><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.sigmaelectronica.net/images/A3212EUA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.sigmaelectronica.net/images/A3212EUA.jpg" width="200" /></a></div>Se logran 1192 pulsos por revolución, más de tres veces la resolución actual de nuestros encoders.<br />
<br />
Más información próximamente...Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-42155713425898184942010-11-20T09:24:00.000-05:002010-11-20T09:24:32.171-05:00Formation Tasks results // Resultados de tareas de formación<b>English</b><br />
The following video shows the results of the project "Maintenance and automatic change of formation". The results are condensed in the paper "Formation control of cooperative robots with limited sensing using a virtual robot as reference", presented in the Latin American Robotics Symposium 2009. It can be found in this <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5418317">link</a>.<br />
<br />
<b>Español</b><br />
El siguiente video ilustra los resultados del proyecto "Mantenimiento y cambio automático de formaciones". Se ha publicado un articulo en inglés "Formation control of cooperative robots with limited sensing using a virtual robot as reference", que fue presentado en el LARS 2009 (Latin American Robotics Symposium). El artículo puede ser descargado a través de este <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5418317">link</a>.<br />
<br />
<div align="center"><object height="385" width="480"><param name="movie" value="http://www.youtube.com/v/kQ7RRQnPqrM?fs=1&hl=es_ES"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/kQ7RRQnPqrM?fs=1&hl=es_ES" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-42488640201394961222010-11-20T09:10:00.001-05:002010-11-21T12:35:47.807-05:00Vision-based navigation // Navegación por visión<b>English</b><br />
An approach of vision-based navigation using vanishing point detection and a reactive behavior implementing potential fields. This strategy is useful in structured environments. The vanishing point behaves as an attractor to the system. The image processing task is done by using Canny Filter for border detection, Hough transform for line recognition, and a cost function for evaluating the crossing points of the lines.<br />
<br />
<b>Español</b><br />
Un enfoque de navegación reactiva utilizando visión, específicamente detectando el punto de fuga de la imagen. Esta estrategia es útil en entornos estructurados, donde es sencillo localizar el punto de fuga en pasillos. La navegación es implementada utilizando campos de potencial, en donde el punto de fuga se comporta como un atractor para el sistema.<br />
<br />
<div align="center"><object height="385" width="480"><param name="movie" value="http://www.youtube.com/v/NC7mKUrJOE0?fs=1&hl=es_ES"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NC7mKUrJOE0?fs=1&hl=es_ES" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></div><br />
<br />
<b>Paper</b><br />
<div id="__ss_5851895" style="width: 477px;"><b style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/alepusto/navegacion-autonoma-reactiva-en-pasillos-usando-el-punto-de-fuga" title="Navegacion autonoma reactiva en pasillos usando el punto de fuga">Navegacion autonoma reactiva en pasillos usando el punto de fuga</a></b><object height="510" id="__sse5851895" width="477"><param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=alejandropustowka-navegacionautonomareactivaenpasillosusandoelpuntodefugaversionfinal-101121100945-phpapp01&stripped_title=navegacion-autonoma-reactiva-en-pasillos-usando-el-punto-de-fuga&userName=alepusto" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5851895" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=alejandropustowka-navegacionautonomareactivaenpasillosusandoelpuntodefugaversionfinal-101121100945-phpapp01&stripped_title=navegacion-autonoma-reactiva-en-pasillos-usando-el-punto-de-fuga&userName=alepusto" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"></embed></object><br />
<div style="padding: 5px 0pt 12px;">View more <a href="http://www.slideshare.net/">documents</a> from <a href="http://www.slideshare.net/alepusto">alepusto</a>.</div></div>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-41704268768306606552008-03-21T12:23:00.005-05:002010-11-20T09:11:47.619-05:00Automatic change of formation - width change // Cambio automático de formación, variación del Ancho<b>English</b><br />
In this experiment, the obstacles are defined as red color regions. The color regions are located in the global plane of the robots by using image processing. As it can be seen in the video, the obstacle configuration in the environment simulates a corridor of parallel walls. As the square formation of the robots is wider than the corridor, the group of robots automatically change its formation, in this case by varying its width. If the width change is not sufficient for navigating through the corridor, a change to another formation is autonomously applied by the multi-robot system.<br />
<br />
<b>Español</b><br />
Este es uno de los cambios de formación probados. La localización de obstáculos se realiza mediante visión artificial, para ello se utilizan regiones de color rojo. Se observa que la organización de los obstáculos en el entorno semeja un pasillo de paredes paralelas. Ya que el grupo de robots lleva una formación que presenta un ancho mayor que la del espacio existente en el pasillo, y por lo tanto no podría pasar a través de él, los robots cambian automáticamente y de manera autónoma su formación. Existen dos cambios de formación. El primero es variar el ancho de la formación únicamente. Si con este cambio nos es suficiente superar las restricciones del entorno, se intentará entonces realizar otro cambio, pero en éste se varía la disposición geométrica de la formación, es decir, pasaría de fila a flecha, por ejemplo. En el video se observa que los robots avanzan en formación cuadrado. Ya que para atravesar el pasillo no es necesario un cambio a otra formación, sino que pueden variar únicamente el ancho, al pasar a través del pasillo toman una formación cuadrado más estrecha, y cuando salen, vuelven a la formación anterior.<br />
<br />
<object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/51I7vrg0M1c&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/51I7vrg0M1c&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-63993238071903289852008-03-04T13:24:00.003-05:002010-11-20T08:40:42.488-05:00Row formation // Formación Flecha<b>English</b><br />
<br />
Another example of formation maintenance. Row formation is similar to square formation, only differs in the position of the two robots on the front, which are closer to each other.<br />
<br />
<b>Español</b><br />
Última formación probada, la formación flecha, que es similar al cuadrado, sólo que los robots del frente se encuentran más cerca entre si.<br />
<br />
<object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/xNWVuFW0KA4"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/xNWVuFW0KA4" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object><br />
<strike><br />
</strike><br />
<strike>En una próxima entrega se mostrarán videos de la formación evadiendo un obstáculo sencillo, y también un cambio automático de formación debido a las restricciones del entorno.</strike>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com1tag:blogger.com,1999:blog-6762207708525804822.post-57289964250293182602008-03-02T19:53:00.004-05:002010-11-20T08:42:32.943-05:00More formation maintenance videos: Row and Column // Más videos de Formaciones: Fila y Columna<b>English</b><br />
<br />
Other formation maintenance cases, Row and Column. The stability results are quite satisfactoring.<br />
<br />
<b>Español</b><br />
<br />
Otros casos de mantenimiento de formación, fila y columna. Los resultados de estabilidad son bastante satisfactorios.<br />
<br />
<object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/pP97Qtj2szY"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/pP97Qtj2szY" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object><br />
<br />
<object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/CK5_BR9Ydm0"><param name="wmode" value="transparent"><embed src="http://www.youtube.com/v/CK5_BR9Ydm0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"></embed></object><br />
<br />
<strike>Para una próxima ocasión mostraremos la última formación probada, flecha. Además también incluiremos el video para un cambio automático de formación a partir de las condiciones del entorno, específicamente cuando el grupo de robots debe superar un pasillo.</strike>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-29364062778192876132008-02-28T21:40:00.007-05:002010-11-20T08:45:09.395-05:00Square formation video // Video de Formación en cuadrado<b>English</b><br />
<br />
The robots maintaining a square formation while navigating in the environment. The robots are autonomously maintaining the formation.<br />
<br />
<b>Español</b><br />
<br />
Uno de los videos que tomamos hoy con el sistema funcionando. Pueden ver que los robots mantienen una formación en cuadrado mientras se desplazan. Los robots mantienen la formación de manera completamente autónoma.<br />
<br />
<object height="355" width="425"><param name="movie" value="http://www.youtube.com/v/snkjwmBnkmI"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/snkjwmBnkmI" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object><br />
<strike><br />
</strike><br />
<strike>Se han probado otras formaciones, como fila, columna y flecha, todas con muy buenos resultados. Más adelante publicaremos más videos.</strike>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-35222541117259195172008-02-24T23:24:00.005-05:002008-11-12T21:52:41.807-05:00Proyecto TerminadoEl proyecto está terminado finalmente, las plataformas han funcionado bastante bien. Las siguientes son algunas de las fotos del grupo de robots:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd2eyyRVrGFIDb8qXKtIzczslybCXph1vu7T1DE5rRDg6ZNBOuvejoPpUEYL5qHPyVGFBpSeGqByIe1-Zlj6XfGtXx_qbMldskzje6zK_Qgc-C0xwsIsW6A1fOFkZSePppG296S2fu72PO/s1600-h/CIMG0672.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd2eyyRVrGFIDb8qXKtIzczslybCXph1vu7T1DE5rRDg6ZNBOuvejoPpUEYL5qHPyVGFBpSeGqByIe1-Zlj6XfGtXx_qbMldskzje6zK_Qgc-C0xwsIsW6A1fOFkZSePppG296S2fu72PO/s320/CIMG0672.JPG" alt="" id="BLOGGER_PHOTO_ID_5170770063351801362" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWohtKoFLiYVR9QdgXDVnforJgdfGsrOFxCJmaoriDfowK1vTHv-y2GL1wIccvnmzXVn88gXPpSxRckOsSNg4R9g667a6IN8OCKFpy0cDYZhXRAWE3YdU9gw8T_62MEC2tBeeDPghKFO_F/s1600-h/CIMG0668.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWohtKoFLiYVR9QdgXDVnforJgdfGsrOFxCJmaoriDfowK1vTHv-y2GL1wIccvnmzXVn88gXPpSxRckOsSNg4R9g667a6IN8OCKFpy0cDYZhXRAWE3YdU9gw8T_62MEC2tBeeDPghKFO_F/s320/CIMG0668.JPG" alt="" id="BLOGGER_PHOTO_ID_5170770063351801378" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBq1LvA5JM1XTXxS87f_h7ge7GlX0CTnpNDoWmQzTl8rV1XIIPj2WY3TtN_0Zh35gBpaPz-5NiFbH8lrMU66ZgNfq9EHPtD4I0KmarNuBpG93PdrvEXXIO3ToLOIHlYTNlEUwerfZ80WuK/s1600-h/CIMG0673.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBq1LvA5JM1XTXxS87f_h7ge7GlX0CTnpNDoWmQzTl8rV1XIIPj2WY3TtN_0Zh35gBpaPz-5NiFbH8lrMU66ZgNfq9EHPtD4I0KmarNuBpG93PdrvEXXIO3ToLOIHlYTNlEUwerfZ80WuK/s320/CIMG0673.JPG" alt="" id="BLOGGER_PHOTO_ID_5170770067646768690" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQYZUqW2cjeQYJco15ChC2eN7EyA2QVOUHZKgubZzoW4xx4vhsGTdBauKpc4sULSW-1tWIb-aYP9dDXL9rcbnvrm5zijui1tAbSI1Sy7ft8lQWDsshZCFb9COzcfhRoJN5FcxJ5OrYfoQb/s1600-h/CIMG0674.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQYZUqW2cjeQYJco15ChC2eN7EyA2QVOUHZKgubZzoW4xx4vhsGTdBauKpc4sULSW-1tWIb-aYP9dDXL9rcbnvrm5zijui1tAbSI1Sy7ft8lQWDsshZCFb9COzcfhRoJN5FcxJ5OrYfoQb/s320/CIMG0674.JPG" alt="" id="BLOGGER_PHOTO_ID_5170770071941736002" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUnLCC9YmR00LjY5vTHhD4LLnX5Zs4RMOHx-nZSczR6EXiLpo4HHx_6V_HGejvPBn5bWPwTh9-BgEuBeEAMqeTiHK-krk0nvGjm0JB6owABM_67qWEnFZ7NX-D7-RcWD2LHOeAQZfN_qVJ/s1600-h/CIMG0675.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUnLCC9YmR00LjY5vTHhD4LLnX5Zs4RMOHx-nZSczR6EXiLpo4HHx_6V_HGejvPBn5bWPwTh9-BgEuBeEAMqeTiHK-krk0nvGjm0JB6owABM_67qWEnFZ7NX-D7-RcWD2LHOeAQZfN_qVJ/s320/CIMG0675.JPG" alt="" id="BLOGGER_PHOTO_ID_5170770071941736018" border="0" /></a><br />El robot posee wifi para comunicación inalámbrica, seis sensores infrarrojos, cuatro bumpers, y puede ser reprogramado fácilmente desde los puertos que se proveen en la parte trasera. Asimismo cuenta con un conector para cargar la batería, y varios puertos de expansión para nuevo hardware que se desee agregar. Se tiene interfaz de memoria externa, puerto SPI, dos puertos seriales, ocho canales ADC, y un puerto USB 2.0. Las especificaciones del robot son las siguientes:<br /><br /><span style="font-weight: bold;">Nombre</span>: Nx-Bot<br /><span style="font-weight: bold;">Material de la carcasa</span>: Acrílico<br /><span style="font-weight: bold;">Dimensiones</span>: Radio = 11,5 cm, Altura = 15 cm<br />Peso: 1Kg<br /><span style="font-weight: bold;">Modelo cinemático:</span> Diferencial<br /><span style="font-weight: bold;">Tiempo de autonomía</span>: 3 a 4 horas<br /><span style="font-weight: bold;">Velocidad máxima</span>: 14,5 cm/s<br /><span style="font-weight: bold;">Resolución encoders</span>: 360 tics/revolución<br /><span style="font-weight: bold;">Radio llantas</span>: 3,325 cm<br /><span style="font-weight: bold;">Distancia máxima sensores IR</span>: 60 cmAlejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-6352762731984423282008-01-28T01:39:00.000-05:002008-01-28T01:43:04.922-05:00Actualización de Blog / Blog UpdateDentro de pocas semanas estaremos actualizando el blog con los últimos avances de nuestra tesis, próxima a terminar. Asimismo agregaremos videos y fotos de los robots terminados. Próximamente también traducción al inglés del blog... <span style="font-weight: bold;">English version of nxbot's blog coming soon!</span>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com1tag:blogger.com,1999:blog-6762207708525804822.post-4889538673519435672007-07-14T18:41:00.000-05:002008-11-12T21:52:43.586-05:00Servo Hacking<div style="text-align: justify;">Para el desplazamiento de los robots se utilizarán servomotores marca Futaba. La referencia a utilizar es la S3010, los cuales proveen un torque bastante alto, con lo cual será posible el desplazamiento de los robots y está calculado además para soportar peso adicional agregado, cuando deban realizarse expansiones a la plataforma, como nuevos sensores o actuadores.<br />Para utilizar estos motores se han realizado ciertas modificaciones, tomadas en su mayoría de la red. Aquí se ha realizado una recopilación de todas ellas, de tal forma que sea posible modificar el motor, para controlar su velocidad a partir de señales PWM, y agregarle encoders, de tal manera que pueda establecerse su velocidad.<br />Los servomotores Futaba son utilizados en general para aplicaciones de posición, más que de giro y velocidad. Realizando una simple modifiación es posible dejarlos habilitados para realizar giros de 360º, desactivando además el sistema de control de posición, de tal manera el motor gire a una velocidad constante, según la señal aplicada, y no en relación a la posición. </div><div style="text-align: justify;"> </div><p style="margin-bottom: 0cm; text-align: justify;"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Las siguientes imágenes ilustran el procedimiento a seguir:</p><p style="margin-bottom: 0cm;" align="justify"><br /></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLg-G4kNBt9lvm1diTtUeSFrAfU5Bz4RQWAgAv2uInVrdhX50iTj75iTJdA3qh6ltB8NKuIYQt0qPTKGRU-NV2tUWzjXONf_CHP2VRQFMdaqJTfvmZHFAgdCq1Zz57Zq_QKPaXhTyKtzFQ/s1600-h/S3003.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 156px; height: 179px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLg-G4kNBt9lvm1diTtUeSFrAfU5Bz4RQWAgAv2uInVrdhX50iTj75iTJdA3qh6ltB8NKuIYQt0qPTKGRU-NV2tUWzjXONf_CHP2VRQFMdaqJTfvmZHFAgdCq1Zz57Zq_QKPaXhTyKtzFQ/s320/S3003.jpg" alt="" id="BLOGGER_PHOTO_ID_5087204110739612274" border="0" /></a><br /><style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Este es el motor Futaba antes de haberle realizado algún cambio. En la parte inferior el motor está asegurado con cuatro tornillos. Estos deben ser retirados para poder realizar las modificaciones. Se debe también desatornillar la rueda de giro para retirar la tapa superior del motor. Al ser retirada, se puede observar el engranaje, como lo muestra la siguiente figura:</p><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir8V-2n0OvmM1ZVW1Nc5B0Vmf9wmJlVXDN2l9exkAJeVYNXtUQuXM29EHZn1SDL2iUML28ZN1g2TsFtfURByprETdZHu_Ua0diJbdGDeKJlIhnVCCQI6JsQZNKf56Q0gVntR7HFxhyphenhyphen7PGP/s1600-h/servo3a.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 182px; height: 136px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir8V-2n0OvmM1ZVW1Nc5B0Vmf9wmJlVXDN2l9exkAJeVYNXtUQuXM29EHZn1SDL2iUML28ZN1g2TsFtfURByprETdZHu_Ua0diJbdGDeKJlIhnVCCQI6JsQZNKf56Q0gVntR7HFxhyphenhyphen7PGP/s320/servo3a.jpg" alt="" id="BLOGGER_PHOTO_ID_5087204462926930562" border="0" /></a></p><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Se retiran con cuidado los engranajes para poder retirar la plaqueta:</p><p style="margin-bottom: 0cm;" align="justify"><br /></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0iLbQEpmqVCRcEjmlYH09kDpNmQb_Z6Bad1YIzSu9X6aC2zSgcbvR8z9EYUFLWKb-EHYX1HBPAbwedGZ8qYbu2TghVV2IiZ9EAShyf7O7I6tfL_AFbT9kXIPWvvR68YAzFmoEUGU1NCMb/s1600-h/_servo3b.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 184px; height: 138px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0iLbQEpmqVCRcEjmlYH09kDpNmQb_Z6Bad1YIzSu9X6aC2zSgcbvR8z9EYUFLWKb-EHYX1HBPAbwedGZ8qYbu2TghVV2IiZ9EAShyf7O7I6tfL_AFbT9kXIPWvvR68YAzFmoEUGU1NCMb/s320/_servo3b.jpg" alt="" id="BLOGGER_PHOTO_ID_5087204669085360786" border="0" /></a><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Se debe empujar la cabeza del potenciometro hacia abajo, para poder sacar con facilidad el sistema electrónico del motor:</p><p style="margin-bottom: 0cm;" align="justify"><br /></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlA_ogHUidkpSm_D52b_MYCEXZBXRgivqq29Su4a0N1-r-_Ldd7GSuZKA7fccrHNof9Q8VG72FTGsqJKSmt7xhB7Y3kI-NvFeaB5nn4nLy-B6a0prKXzoUPwV7vJw1VjMiJtbWK8n9pUyz/s1600-h/_servo3c.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 202px; height: 151px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlA_ogHUidkpSm_D52b_MYCEXZBXRgivqq29Su4a0N1-r-_Ldd7GSuZKA7fccrHNof9Q8VG72FTGsqJKSmt7xhB7Y3kI-NvFeaB5nn4nLy-B6a0prKXzoUPwV7vJw1VjMiJtbWK8n9pUyz/s320/_servo3c.jpg" alt="" id="BLOGGER_PHOTO_ID_5087204922488431266" border="0" /></a><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Ya con las piezas retiradas, se dispone a cortar la cuña de uno de los piñones, que impide que estos giren más de 180º. Con un bisturí resulta sencilla la modificación:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT2fUqC7Zk09CIFjeYdbrVE30bGbfhytxshPm8DW0PX0bs-1Y8cWXdZmVOVrLlrbuBajUgsLKvEGn8_tbclndRMBGTgW-yupssmNkZVQfKFVf50Zk_TlCFbRBc1G6IHKjFV1s0cp2nqU1O/s1600-h/_servo3e.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 220px; height: 108px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjT2fUqC7Zk09CIFjeYdbrVE30bGbfhytxshPm8DW0PX0bs-1Y8cWXdZmVOVrLlrbuBajUgsLKvEGn8_tbclndRMBGTgW-yupssmNkZVQfKFVf50Zk_TlCFbRBc1G6IHKjFV1s0cp2nqU1O/s320/_servo3e.jpg" alt="" id="BLOGGER_PHOTO_ID_5087205150121697970" border="0" /></a><style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Se debe retirar también el potenciometro que funciona como lazo de realimentación del sistema de control de posición. En su lugar se colocará un par de resistencias iguales en serie, a modo de divisor de voltaje. Esta modificación no es necesaria si se desea retirar el circuito de control del motor.</p><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7TJ8KtpnQ1H3Ap5Yu3KweO2QqlRf526JL_xeR3vigMFxHTSZCXewCSIpEnK73Ec_Y32qgGLtRb_N32U3dr20SdEFdwv_i9uQ7yWWCbv6kmKby0ryHTuhjjl4aKUvOXJBE3XKsntQ16oJw/s1600-h/_servo3d.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 202px; height: 161px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7TJ8KtpnQ1H3Ap5Yu3KweO2QqlRf526JL_xeR3vigMFxHTSZCXewCSIpEnK73Ec_Y32qgGLtRb_N32U3dr20SdEFdwv_i9uQ7yWWCbv6kmKby0ryHTuhjjl4aKUvOXJBE3XKsntQ16oJw/s320/_servo3d.jpg" alt="" id="BLOGGER_PHOTO_ID_5087210733579182786" border="0" /></a></p><br /><p style="margin-bottom: 0cm;" align="justify"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p style="margin-bottom: 0cm;" align="justify">En caso de que se desee eliminar el circuito de control del motor, se deben seguir los siguientes pasos:</p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Primero que todo un motor futaba está compuesto generalmente por los siguientes componentes:</p><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3drTZy8gN_yLYKx9cip5Qj3crYxRTTIs-efUMzd4A8W4pOPFi7KDEAzWv5PY43wo92a8Abkf-xw9e-45old-UY2e-yDi2k-ZeRrXNNjyTzFbdnboATu5xH1Dhyphenhyphen3P-RScVSJ6taqE6h4os/s1600-h/fig1.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 445px; height: 360px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3drTZy8gN_yLYKx9cip5Qj3crYxRTTIs-efUMzd4A8W4pOPFi7KDEAzWv5PY43wo92a8Abkf-xw9e-45old-UY2e-yDi2k-ZeRrXNNjyTzFbdnboATu5xH1Dhyphenhyphen3P-RScVSJ6taqE6h4os/s320/fig1.gif" alt="" id="BLOGGER_PHOTO_ID_5087213602617336530" border="0" /></a></p><br /><p style="margin-bottom: 0cm;" align="justify"><br /></p><p style="margin-bottom: 0cm;" align="justify"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p style="margin-bottom: 0cm;" align="justify">Como se puede observar, existen dos circuitos, el BAL 6686 y el BA6688. Es éste último el encargado de las operaciones de control sobre el motor. El otro circuito funciona como puente H, pero soporta únicamente hasta 6V, lo cual puede ser una limitante en cuanto a velocidad del motor.</p> <p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYvs_zKz3ZGojcIjWJ5boiMhduCf57VCqeHEPbBQL95I3SVVpIrD_KXBScN-3EEpYN3qfTRf7-l5BN2TW08DUZ1UB6fd5hVGXbt4sdMFNucGdpKtbxQ_J1EA1wZl2gyTVCrXoQlr2zLlcE/s1600-h/image010.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYvs_zKz3ZGojcIjWJ5boiMhduCf57VCqeHEPbBQL95I3SVVpIrD_KXBScN-3EEpYN3qfTRf7-l5BN2TW08DUZ1UB6fd5hVGXbt4sdMFNucGdpKtbxQ_J1EA1wZl2gyTVCrXoQlr2zLlcE/s320/image010.jpg" alt="" id="BLOGGER_PHOTO_ID_5087214019229164258" border="0" /></a></p><p style="margin-bottom: 0cm;" align="justify"> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p style="margin-bottom: 0cm;" align="justify">La anterior imagen ilustra la configuración de pines del puente H incluido en los motores. La siguiente imagen muestra como están conectados los dos circuitos integrados:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Xi8MKVeTPXsnaW4KmcM3BMRO34i5-UF0q18Pt-lGPXfKuK425IzNCXrqnDs2Jfc_HDN7T8sFNv_r4KEbArWSC26OAnTaEvecNjX-9SKu-9IQhKbq8uck1lFtuPjJ7ArLpaCABOtrE_zg/s1600-h/image011.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9Xi8MKVeTPXsnaW4KmcM3BMRO34i5-UF0q18Pt-lGPXfKuK425IzNCXrqnDs2Jfc_HDN7T8sFNv_r4KEbArWSC26OAnTaEvecNjX-9SKu-9IQhKbq8uck1lFtuPjJ7ArLpaCABOtrE_zg/s320/image011.gif" alt="" id="BLOGGER_PHOTO_ID_5087214264042300146" border="0" /></a> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Al retirar el CI BA6688 se pueden utilizar las pistas vacías para cablear la señal de control (blanca) a la entrada on1 (Fwd) del BAL6686. Además se agrega una línea adicional para permitir el giro en sentido contrario. Las modificaciones se muestran a continuación:</p><p style="margin-bottom: 0cm;" align="justify"><br /></p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguEBnLS5gr1l_aC46Ny7Cpo9DQiAcFincBbUNpkf3WDnnZZE1Eo5hvxzHdEswJG0RSh2VwEu8brJAqJW6X_eBilZnZ0Qei4-dDz2fR2EVsTnFNkwPnPQZBTDwKxjrvrgqBIbr8mIC03okA/s1600-h/image013.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguEBnLS5gr1l_aC46Ny7Cpo9DQiAcFincBbUNpkf3WDnnZZE1Eo5hvxzHdEswJG0RSh2VwEu8brJAqJW6X_eBilZnZ0Qei4-dDz2fR2EVsTnFNkwPnPQZBTDwKxjrvrgqBIbr8mIC03okA/s320/image013.jpg" alt="" id="BLOGGER_PHOTO_ID_5087214551805108994" border="0" /></a><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Con estas dos líneas es posible entonces controlar tanto la velocidad del motor a través de pulsos PWM, como su sentido de giro, enviando la señal por uno u otro cable.</p> <p style="margin-bottom: 0cm;" align="justify">En caso de que se desee modificar el servo de tal forma que se utilice un puente H externo, que soporte una mayor corriente, será necesario conectar la alimentación directamente a las terminales del motor, que se muestran a continuación:</p><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigZ5H1auubPHdkfT90R06i_v1kXf-PwGjS1Dp2_bpnCNfYP6XMIpoKloCoTTixfzpP-AbzuGwZkRC1mXIHAl851pM2Qc8TWNmO8x7UnoRvDL7ls4Xhlf1DVVkvxuGHDv-PNBNHr2Mp3_q2/s1600-h/image004mod.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigZ5H1auubPHdkfT90R06i_v1kXf-PwGjS1Dp2_bpnCNfYP6XMIpoKloCoTTixfzpP-AbzuGwZkRC1mXIHAl851pM2Qc8TWNmO8x7UnoRvDL7ls4Xhlf1DVVkvxuGHDv-PNBNHr2Mp3_q2/s320/image004mod.jpg" alt="" id="BLOGGER_PHOTO_ID_5087215324899222290" border="0" /></a></p> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">No será necesaria ninguna otra modificación, sin embargo se recomienda retirar los dos Cis de la plaqueta.</p> <p style="margin-bottom: 0cm;" align="justify"><b>Encoder para servomotor Futaba</b></p> <p style="margin-bottom: 0cm;" align="justify">Para el montaje de los encoders se utilizará el engranaje que incluye el servo. Se toma uno de los piñones del mismo, y se pega una tira de aluminio, tal como se muestra a continuación:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivqxV1ME8TTDrj5AVATVWQ1hmib9hJDr4sEAVtfI0nwMGzMDfGBu4ZGqwf_U_CcA7P7JJmoyBDMwtJ37v_E10LGjepdQdfHm3IX_oGIh49maVLqbdzDxZs1u5tyFGU5MmSig5YIAqZDSE6/s1600-h/image23.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 206px; height: 154px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivqxV1ME8TTDrj5AVATVWQ1hmib9hJDr4sEAVtfI0nwMGzMDfGBu4ZGqwf_U_CcA7P7JJmoyBDMwtJ37v_E10LGjepdQdfHm3IX_oGIh49maVLqbdzDxZs1u5tyFGU5MmSig5YIAqZDSE6/s320/image23.gif" alt="" id="BLOGGER_PHOTO_ID_5087215702856344354" border="0" /></a> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">A esta tira se le pintan o se le pegan en papel, franjas de color negro, de tal forma que el sensor a utilizar no responda frente a la franja negra, más si a la de aluminio. El piñón debe quedar de la siguiente forma:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEC6eidkRLlINn8JfxSHQDOFHFdHEUQbTbFh1DoCA50cw8HhgEUA6Umt4tuvLekraupsWZ5F11cxkkdEAGWExfwDHoPHVbd8wSy_CWuTva-Bex0SWuzz7LOgW_5vpzlShO3h7EWUPwcLqG/s1600-h/image24.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 192px; height: 144px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEC6eidkRLlINn8JfxSHQDOFHFdHEUQbTbFh1DoCA50cw8HhgEUA6Umt4tuvLekraupsWZ5F11cxkkdEAGWExfwDHoPHVbd8wSy_CWuTva-Bex0SWuzz7LOgW_5vpzlShO3h7EWUPwcLqG/s320/image24.gif" alt="" id="BLOGGER_PHOTO_ID_5087215934784578354" border="0" /></a> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Se arma nuevamente el motor, y se toma por el lado donde se encuentra el piñón; es ahí donde se colocará el sensor:</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG2QCeu9PLlGU6PhsO18S3-DUlD5qWXtIcLnt8NoX0PH1oZB1GZ8D2Ad4aRQotlq9IPG8QCtefyvNWSftlvSMm-qOTqfP7PiCohTXn4wT6aGLcG8poPNru9yG4bAPBleeld_L3IA9tmXpn/s1600-h/image26.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 195px; height: 153px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG2QCeu9PLlGU6PhsO18S3-DUlD5qWXtIcLnt8NoX0PH1oZB1GZ8D2Ad4aRQotlq9IPG8QCtefyvNWSftlvSMm-qOTqfP7PiCohTXn4wT6aGLcG8poPNru9yG4bAPBleeld_L3IA9tmXpn/s320/image26.gif" alt="" id="BLOGGER_PHOTO_ID_5087216265497060162" border="0" /></a> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --></style>Se cablea el sensor, luego de ser colocado:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi96JQeskcKYPGtDjChulO3Wsa4ULzjiRB79y1rGcbGp5UwgpNhrZJY9P_AK9yiD0qDVXCq-JiEIySbz2uBJbQb2wlqX8Ook934BV6FseP9YATmfDtl9VXhyphenhyphenTPvFx56Pi78WAQcUTKnrtJ5/s1600-h/image29.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 206px; height: 135px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi96JQeskcKYPGtDjChulO3Wsa4ULzjiRB79y1rGcbGp5UwgpNhrZJY9P_AK9yiD0qDVXCq-JiEIySbz2uBJbQb2wlqX8Ook934BV6FseP9YATmfDtl9VXhyphenhyphenTPvFx56Pi78WAQcUTKnrtJ5/s320/image29.gif" alt="" id="BLOGGER_PHOTO_ID_5087216484540392274" border="0" /></a><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;" align="justify">Y con esto queda finalmente dispuesto el encoder, listo para ser alimentado y puesto en funcionamiento.</p><br />Este sensor provee de aproximadamente 45 pulsos por vuelta. Es posible colocar el encoder en otro piñón que presenta mas revoluciones que el utilizado aqui, generando asi unos 150 pulsos por revolucion. Proximamente se mostrará el montaje utilizado.<br /><br />Paginas consultadas:<br /><br /><a href="http://www.seattlerobotics.org/encoder/200110/servohack.htm">http://www.seattlerobotics.org/encoder/200110/servohack.htm</a><br /><a href="http://www.seattlerobotics.org/encoder/200009/S3003C.html">http://www.seattlerobotics.org/encoder/200009/S3003C.html</a><br /><a href="http://www.disam.upm.es/cybertech/Docs/General/TrucajeServo.pdf">http://www.disam.upm.es/cybertech/Docs/General/TrucajeServo.pdf</a><br /><a href="http://www.seattlerobotics.org/guide/servos.html">http://www.seattlerobotics.org/guide/servos.html</a><br /><p></p> <p></p> <p></p>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-32909727079457421602007-06-05T01:39:00.001-05:002008-11-12T21:52:44.006-05:00Router Hack<style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --></style><div style="text-align: justify;"><span style="color: rgb(0, 0, 0);">El problema de comunicación y procesamiento de alto nivel se solucionó utilizando un sistema embebido extraído de routers Linksys. Par</span><span style="color: rgb(0, 0, 0);">a efectos de prueba se utilizó la referencia WRT54GL, mientras que para el sistema real se utilizó la referencia WRTSL54GS. </span></div><p style="margin-bottom: 0cm; text-align: justify;">Para estos routers se ha desarrollado una distribución Linux denominada Openwrt, la cual es libre y puede ser descargada desde <a href="http://www.openwrt.org/">www.openwrt.org</a>. La versión utilizada es la WhiteRussian 0.9, la cual incluye el kernel 2.4 de linux. Al momento de escribir estas líneas está próxima a salir la versión 1.0 de OpenWrt, primera versión estable, denominada Kamikaze.</p><div style="text-align: justify;"> </div><p style="margin-bottom: 0cm; text-align: justify;">A continuación se describe el proceso de hacking llevado a cabo:</p> <p style="margin-bottom: 0cm;" align="justify"><b>PASO 1:</b></p> <p style="margin-bottom: 0cm;" align="justify">Descargar el openwrt al router.</p> <p style="margin-bottom: 0cm;" align="justify">Lo primero es montarle el sistema operativo linux al sistema embebido, por lo tanto, es necesario descargar la imagen desde el servidor de openwrt. Existen tres tipos de imágenes para tal fin:</p> <ul><li><p style="margin-bottom: 0cm;" align="justify">micro</p> </li><li><p style="margin-bottom: 0cm;" align="justify">bin </p> </li><li><p style="margin-bottom: 0cm;" align="justify">pptp. </p> </li></ul> <p style="margin-bottom: 0cm;" align="justify">La primera es una versión reducida de Openwrt, incluye menos paquetes, por lo tanto, también pesa menos. Las siguientes se diferencian en los paquetes de PPP; la primera incluye pppoe (Point-to-Point Protocol Over Ethernet), la segunda el pptp (Point-to-Point Tunneling Protocol). Se escogió la bin para montar sobre el router. </p> <p style="margin-bottom: 0cm;" align="justify">Existen diversas maneras de montar el SO en el router. En nuestro caso se escogió la instalación mediante la herramienta de actualización de firmware que provee el Software propietario de Linksys. La imagen del Openwrt viene en formato TRX, la cual es la imagen tal cual se copiará en la memoria Flash del dispositivo. Es posible también descar la imagen con extensión BIN, este formato está soportado por el software de Linksys para las imágenes de actualización de firmware. En este caso, se descargó de <a href="http://downloads.openwrt.org/whiterussian/newest/default/">http://downloads.openwrt.org/whiterussian/newest/default/</a>, el archivo <a href="http://downloads.openwrt.org/whiterussian/newest/default/openwrt-wrt54g-squashfs.bin">openwrt-wrt54g-squashfs.bin</a> para el wrt54gl, o el <a href="http://downloads.openwrt.org/whiterussian/newest/default/openwrt-wrtsl54gs-squashfs.bin">openwrt-wrtsl54gs-squashfs.bin</a> para el wrtsl54gs.</p> <p style="margin-bottom: 0cm;" align="justify">Se monta el firmware en la interfaz que provee el router a través de su servidor http. Se recomienda realizar la actualización de firmware de manera cableada, no inalámbrica, puesto que puede poner problemas. Asegúrese que las conexiones de alimentación estén bien realizadas, puesto que si el router se apaga durante la actualización de firmware, no volverá a arrancar (en caso de que esto suceda, no todo está perdido, remítase a: <a href="http://www.blogger.com/img/gl.link.gif">http://wiki.openwrt.org/OpenWrtDocs/Installing</a> ).</p><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcbw5X8lp_EGTuF1UkHVsB8WOZG2JIS-fQJlsIn2OME1IqX-_n6zehnZPjMWRBqzabAAbD3c31xyKWVyM_qx0AhUR35MbTaI6yb3UuXX9FUc98m4fOaO0Mnu9-pNuKb7SVKXhya0SH84DH/s1600-h/i2.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcbw5X8lp_EGTuF1UkHVsB8WOZG2JIS-fQJlsIn2OME1IqX-_n6zehnZPjMWRBqzabAAbD3c31xyKWVyM_qx0AhUR35MbTaI6yb3UuXX9FUc98m4fOaO0Mnu9-pNuKb7SVKXhya0SH84DH/s320/i2.jpg" alt="" id="BLOGGER_PHOTO_ID_5072467560913717906" border="0" /></a></p><p style="margin-bottom: 0cm;" align="justify">Al bootear el sistema, se cargará el nuevo firmware. La configuración anterior se mantiene, por lo tanto, su router debe de estar corriendo tal cual lo estaba haciendo antes de realizar la actualización. Al ingresar nuevamente al portal de administración del router, notará que ha cambiado, puesto que ahora se está corriendo la aplicación webif del Openwrt, la cual es la consola de administración vía web.</p><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Afdvv2EBry2E6dzovHOZWksrgTG0BAVPe43M_FI8y4gBnXOIkNUqwkimlTSWfH_uKNkhgcrEr1sC4xdCzONLU2Cj2wY1FJuXqUWDNOcgQDnLO4aeLzzJ-nPD9nX1bkAWMPbWX4TLAX4O/s1600-h/Pantallazo-OpenWrt+Administrative+Console+-+Mozilla+Firefox.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3Afdvv2EBry2E6dzovHOZWksrgTG0BAVPe43M_FI8y4gBnXOIkNUqwkimlTSWfH_uKNkhgcrEr1sC4xdCzONLU2Cj2wY1FJuXqUWDNOcgQDnLO4aeLzzJ-nPD9nX1bkAWMPbWX4TLAX4O/s320/Pantallazo-OpenWrt+Administrative+Console+-+Mozilla+Firefox.png" alt="" id="BLOGGER_PHOTO_ID_5072467891626199714" border="0" /></a> <p style="margin-bottom: 0cm;" align="justify">Lo primero que se debe hacer es cambiar la contraseña. Esto se puede realizar a través de la página, por System -> Password Change. Otra opción sería conectarse vía telnet al router. ESto es, en un shell, escribir:</p><p style="margin-bottom: 0cm;" align="justify">telnet 192.168.1.1</p><br /><p style="margin-bottom: 0cm;" align="justify">Asumiendo que esa es la dirección del router.</p><p style="margin-bottom: 0cm;" align="justify">Ya dentro deberá utilizar el comando passwd, y digitar la contraseña.<br /></p><p style="margin-bottom: 0cm;" align="justify">La interfaz web se queda realmente corta en cuanto a configuración de parámetros del router se refiere. Es preferible realizar cualquier modificación ingresando directamente al sistema operativo a través de un shell. Para esto se utiliza ssh, el cual viene instalado por defecto en las distribuciones de linux. Para windows, es posible utilizar el SSH CLIENT, el cual se consigue a través de la red. Basta entonces con ingresar en consola: ssh <a href="mailto:root@192.168.1.1">root@192.168.1.1</a>, para estar dentro del sistema.</p><br /><br /><p style="margin-bottom: 0cm;" align="justify"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggDhJ8y0tE3ap79KiGnoczJXKVTrGlQZRvbEN70cA0yRqri8kd_JrtKCd9km1wfayStyegswO7GtN7suorK-T7bAfbMbEFn15_ASA0mHjqkZj9mmUXmluN0ob_V_uZR4p7nrJDrzQcf6U6/s1600-h/Pantallazo-alejo@alejo-desktop:+%7E.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggDhJ8y0tE3ap79KiGnoczJXKVTrGlQZRvbEN70cA0yRqri8kd_JrtKCd9km1wfayStyegswO7GtN7suorK-T7bAfbMbEFn15_ASA0mHjqkZj9mmUXmluN0ob_V_uZR4p7nrJDrzQcf6U6/s320/Pantallazo-alejo@alejo-desktop:+%7E.png" alt="" id="BLOGGER_PHOTO_ID_5072468175094041266" border="0" /></a></p><br /><p style="margin-bottom: 0cm;" align="justify"></p><p style="margin-bottom: 0cm;" align="justify"><b>PASO 2:</b></p> <p style="margin-bottom: 0cm;" align="justify">Debido a la corta memoria que trae el router WRT54GL para almacenamiento (4 Mb), además de que el Openwrt ocupa casi toda esta cantidad, se hace necesaria una modificación para permitir tener más espacio en memoria persistente, de tal manera que sea posible la instalación de más software para el router. Por lo tanto, se realizaron las siguientes modificaciones en el router, de tal manera que soportara una tarjeta SD, y así expandir la memoria hasta 128 Mb para nuestro caso. Estas modificaciones no serán necesarias para el WRTSL54GS, debido a que la capacidad de este es el doble del anterior, e incluso éste posee un puerto USB, a través del cual es posible conectar una USB Flash y así aumentar la capacidad de almacenamiento. De todas maneras, es posible realizar esta modificación.</p> <p style="margin-bottom: 0cm;" align="justify">Las modificaciones hardware se presentan en el siguiente documento, tomado de: <span style=""><span style="font-size:100%;">euskoin.net/docu/SD-WRT54GL.pdf, o también se pueden basar de la siguiente página: http://www.altred.net/cgi-bin/moin.cgi/SD_MOD</span></span>. Las modificaciones <b>software</b> presentadas en el anterior documento no presentaron buenos resultados, por lo tanto se hizo lo siguiente:</p> <p style="margin-bottom: 0cm;" align="justify"><b>Instalación de módulos</b></p> <p style="margin-bottom: 0cm;" align="justify">Se descarga el módulo vfat con el comando:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# ipkg install kmod-vfat</span></p> <p style="margin-bottom: 0cm;" align="justify">El módulo mmc.o lo tuve que descargar de otra dirección, la que está en el documento es inexistente. (descarga el módulo de aqui). El módulo lo monte al router mediante scp, directamente a la carpeta /lib/modules/2.4.30.</p> <p style="margin-bottom: 0cm;" align="justify">Ahora se procede a insertar los módulos en el kernel para que sean utilizados. Esto se hace mediante insmod:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# insmod fat</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# insmod vfat</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# insmod mmc</span></p> <p style="margin-bottom: 0cm;" align="justify">Procedemos a ver entonces el log, que nos permite ver los mensajes que bota el kernel, de tal manera que podamos verificar si la tarjeta fue reconocida. Este comando debe mostrar las siguientes líneas:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">. </span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_hardware_init: initializing GPIOs</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: the period of a 380KHz frequency lasts 524 CPU cycles</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: powering card on. sending 80 CLK</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: 80 CLK sent in 43668 CPU cycles</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: resetting card (CMD0)</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: doing initialization loop</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: card inited successfully in 7 tries (216141 CPU cycles).</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_init: MMC/SD Card ID:</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">18 49 4e 31 32 38 4d 42 04 40 a5 75 7e 00 62 63 [INFO] Manufacturer ID : 18</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] OEM/Application ID: IN</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] Product name : 128MB</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] Product revision : 0.4</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] Product SN : 40a5757e</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] Product Date : 2006-2</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_config: size = 122752, hardsectsize = 512, sectors = 245504</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[WARN] mmc_init: hd_sizes=122752, hd[0].nr_sects=245504</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">[INFO] mmc_card_init: set_blocklen (CMD16) succeeded !</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">Partition check:</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"> mmca: p1</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">.</span></p> <p style="margin-bottom: 0cm;" align="justify">Aunque pueden variar un poco de acuerdo al módulo mmc.o utilizado, y obviamente a la tarjeta SD utilizada, lo importante debe ser que pueda ser reconocida, y no muestre ningún mensaje de error. Como se puede ver en este caso, la tarjeta es de 128MB y tiene una sola partición. </p> <p style="margin-bottom: 0cm;" align="justify"><b><br /></b></p><p style="margin-bottom: 0cm;" align="justify"><b>Montaje automático de la SD</b></p> <p></p><br /><p style="margin-bottom: 0cm;" align="justify"> </p><p style="margin-bottom: 0cm;" align="justify">Para que la tarjeta se montara automáticamente al iniciar el router, se realizaron las siguientes modificaciones:</p> <p style="margin-bottom: 0cm;" align="justify">Se modificó el archivo fstab (en mi caso no existía):</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot"><br /></a></span></p><p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# vi /etc/fstab</span></p> <p></p><p style="margin-bottom: 0cm;" align="justify"> </p><p style="margin-bottom: 0cm;" align="justify"><br /></p><p style="margin-bottom: 0cm;" align="justify">Y en el archivo escribimos:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">/dev/mmc/disc0/part1 /mnt/sd/ vfat defaults 0 0</span></p> <p style="margin-bottom: 0cm;" align="justify">Así, en el momento de montar la tarjeta, ésta se montará con formato vfat.</p> <p style="margin-bottom: 0cm;" align="justify"><br /></p><p style="margin-bottom: 0cm;" align="justify">Se creó un módulo para que montara automáticamente la tarjeta, en /etc/init.d:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# vi /etc/init.d/S51mount</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Y se agregan las siguientes líneas:</p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">#!/bin/sh</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">echo "0x9C">/proc/diag/gpiomask</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">insmod mmc</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">mkdir /mnt/sd</span></p> <p style="margin-bottom: 0cm;" align="justify"><span style="font-size:85%;"><span style="font-family:courier new;">mount /dev/mmc/disc0/part1</span></span> </p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">La línea echo “0x9C”>/proc/diag/gpiomask es de las más importantes de este archivo. Al realizar la modificación de la tarjeta SD, se están utilizando las líneas GPIO disponibles en el router. OpenWRT utiliza estas líneas para entrar en un estado denominado “failsafe mode”. Por lo tanto, se debe aplicar una máscara, que debe ser introducida en el archivo /proc/diag/gpiomask. Esta máscara define que líneas GPIO se están utilizando, y que no deben ser tenidas en cuenta para entrar al modo anteriormente mencionado. Se utilizó el hexadecimal 0x9C, debido a que se están utilizando las líneas GPIO 2, 3, 4, 7. Asumiendo un byte, se coloca un 1 a cada posición de línea GPIO que se vaya a utilizar, por lo tanto resulta 10011100, que en su equivalente hexadecimal es justamente 0x9C. Se menciona esto puesto que algunas modificaciones para utilizar la tarjeta SD, usan otras líneas GPIO, por lo tanto es común ver otras máscaras utilizadas.</p> <p style="margin-bottom: 0cm;" align="justify">Las otras líneas se preocupan por montar la partición. No es necesario poner la carpeta de destino en el comando mount, puesto que en fstab ya se ha establecido en que carpeta deberá ser montada esta partición.</p> <p style="margin-bottom: 0cm;" align="justify">Finalmente se deben cambiar los permisos del archivo, de tal manera que pueda ser ejecutado:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# chmod 777 /etc/init.d/S51mount</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Para que estas modificaciones tomen efecto, será necesario reiniciar el sistema:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# reboot</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify"><b>Instalación y ejecución de programas montados en la SD</b></p> <p style="margin-bottom: 0cm;" align="justify">Para poder instalar programas y aplicaciones en la tarjeta SD, es necesario seguir los siguientes pasos.</p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify"><i>Usar ipkg para instalar aplicaciones directamente en la SD:</i></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Se debe modificar el archivo ipkg.conf ubicado en /etc:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/#vi /etc/ipkg.conf</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">y se agrega la línea:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">dest sd /mnt/sd</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">En caso de que la tarjeta sd haya sido montada en otro directorio, cambiar la ruta de la línea.</p> <p style="margin-bottom: 0cm;" align="justify">Así, al ejecutar el comando ipkg, se puede utilizar la opción -d para definir el directorio de instalación. Por ejemplo, para instalar el paquete lighttpd en la tarjeta sd, se utilizaría el siguiente comando:</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# ipkg install -d sd lighttpd</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">Para que los programas puedan ser ejecutados sin importar en que directorio el usuario esté ubicado, es necesario modificar la variable PATH. Para esto se modifica el archivo /etc/profile</p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;"><a href="mailto:root@nxbot">root@nxbot</a>:/# vi /etc/profile</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;" align="justify">y se modifica la línea de PATH, agregándole los directorios donde se encontrarán los ejecutables de las aplicaciones en la tarjeta sd, /mnt/sd/bin, /mnt/sd/sbin, /mnt/sd/usr/bin, /mnt/sd/usr/sbin, de la siguiente manera:</p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/mnt/sd/bin:/mnt/sd/sbin:/mnt/sd/usr/bin:/mnt/sd/usr/sbin</span></p> <p style="margin-bottom: 0cm;font-family:courier new;" align="justify"><span style="font-size:85%;">export LD_LIBRARY_PATH=/lib:/usr/lib:/mnt/sd/lib:/mnt/sd/usr/lib</span></p> <p style="margin-bottom: 0cm;" align="justify"><br /></p> <p></p>Alejandro Pustowkahttp://www.blogger.com/profile/00166172289248929012noreply@blogger.com2tag:blogger.com,1999:blog-6762207708525804822.post-88635883465446955572007-06-01T16:34:00.001-05:002007-06-02T16:06:44.375-05:00Player/Stage<p style="margin-left: 0cm; margin-bottom: 0cm; text-align: justify;">Player es un servidor para el control de robots móviles, este se comporta como una capa de abstracción entre los dispositivos del robot y el controlador, además brinda capacidad para interconexión vía TCP/IP. El player fue originalmente creado para la plataforma Pionner 2DX, pero al ser un proyecto de software libre y tener una buena aceptación por parte de muchos centros de investigación en el mundo se ha extendido y ahora soporta mas plataformas como Khepera, Romba, Nomad, Segway RPM y otras mas.</p> <p style="margin-left: 0cm; margin-bottom: 0cm;" align="justify">Player corre sobre el sistema operativo GNU/Linux, este software fue escogido para el proyecto por su versatilidad y porque brinda la posibilidad de trabajar tanto robots reales como también simulados, esto ultimo en conjunto con el simulador stage del que se hablara mas adelante.</p> <p style="margin-left: 0cm;" align="justify">Al utilizar player trabajamos sobre una arquitectura cliente-servidor donde el player sera el servidor instalado sobre el robot, el cliente se comunicara vía TCP/IP y por este medio solicitara información sensorial del robot y enviara comandos a este y a los diferentes dispositivos conectados a el.</p> <p style="margin-left: 0cm;" align="justify">Para comprender el funcionamiento del player es necesario conocer dos conceptos utilizados en su arquitectura: dispositivo e interfaz.</p> <p style="margin-left: 0cm;" align="justify">Un dispositivo es cualquier elemento que provea información o reciba comandos para realizar alguna acción sobre el ambiente, todo sensor o actuador es tratado como un dispositivo en el player, de esta forma un robot se ve como un grupo de dispositivos conectados al servidor y a los cuales el cliente puede acceder.</p> <p style="margin-left: 0cm;" align="justify">Una interfaz es una abstracción que agrupa un grupo de dispositivos similares en funcionalidad y brinda un grupo de métodos comunes para su interacción con el cliente. </p> <p style="margin-left: 0cm;" align="justify">Player brinda un grupo de interfaces comunes para ciertos tipos de dispositivos. Por ejemplo, dados dos sistemas de control de posición, existe una interfaz común para ambos en este caso la interfaz position2d. Este tipo de arquitectura permite que luego de que exista el driver de un dispositivo, no sea necesario a la hora de construir el controlador tener en cuenta los detalles de funcionamiento del hardware a utilizar, algo similar a la capa de abstracción de hardware del sistema operativo Linux.</p> <p style="margin-left: 0cm;" align="justify">Player esta construido en C++ pero el cliente puede ser programado en cualquier otro lenguaje que soporte comunicación TCP/IP, hay disponibles muchas librerías en diferentes lenguajes que facilitan el desarrollo de los controladores.</p> <p style="margin-left: 0cm;" align="justify">Además de drivers para hardware existen también dentro del player drivers abstractos, por ejemplo drivers para algunos algoritmos de posición como <b>amcl, </b>el cual es una implementación del algoritmo de localización adaptativo Monte Carlo.</p> <p style="margin-left: 0cm;" align="justify">Stage es un simulador de robots móviles, este se puede utilizar como un API para desarrollar simuladores o en conjunto con el player como simulador independiente. </p> <p style="margin-left: 0cm;" align="justify">El stage esta orientado al trabajo en robótica cooperativa brinda la posibilidad de simular poblaciones de robots y dispositivos con modelos computacionales simples.</p> <p style="margin-left: 0cm; margin-bottom: 0cm;" align="justify"></p>Jonalejohttp://www.blogger.com/profile/09743137319682507061noreply@blogger.com0tag:blogger.com,1999:blog-6762207708525804822.post-79816192923632622342007-05-17T23:05:00.000-05:002007-07-04T11:17:31.163-05:00NX-BOTEl proyecto NX-BOT se divide en las siguientes etapas:<br /><ul><br /><li>Desarrollo Hardware del Sistema<br /></li><li>Desarrollo del Sistema de Visión Artificial<br /></li><li>Desarrollo de la arquitectura Software del Robot<br /></li><li>Desarrollo de la Arquitectura Software del Sistema Central</li></ul><span style="font-weight: bold;">Desarrollo Hardware:</span><br />En esta etapa se pretende desarrollar un modelo de robot con poca riqueza sensorial pero que posea un medio de comunicación confiable. Por tal razón se ha decidido utilizar solamente sensores infrarrojos y bumpers y para el medio de comunicación se decidió utilizar WIFI.<br />El sistema de procesamiento del robot se dividirá en dos partes. La primera está compuesta por un sistema de control a bajo nivel, que se entiende como el microcontrolador que se encargará del manejo del hardware de actuadores, como los motores, y sensores, como encoders, infrarrojos y bumpers. Para esto se utilizará un microcontrolador de 8 bits.<br />La segunda se compone de un sistema embebido, que posea una mayor capacidad de procesamiento, de tal manera que sea posible implementar una arquitectura software robusta y de alto nivel. Los dos sistemas estarán interconectados vía serial.<br /><br /><span style="font-weight: bold;">Desarrollo del Sistema de Visión Artificial:</span><br />El sistema de visión artificial está compuesto por una cámara , un sistema de adquisición y un el software de procesamiento de imágenes que calcule la posición de los robots y obstáculos dentro del ambiente.<br /><br /><span style="font-weight: bold;">Desarrollo de la Arquitectura Software del Robot:<br /><span style="font-weight: bold;"></span></span><span>Al igual que el hardware, el software del robot esta dividido en dos partes: la primera, implementada sobre el controlador de 8 bits, se encargara de crear una capa de abstracción para los elementos hardware que componen el robot ocultando así los detalles de funcionamiento de estos. La segunda implementada sobre el sistema embebido, sera la encargada del control de alto nivel</span><span> del robot, </span><span>en este caso a nivel de comportamientos</span><span style="font-weight: bold;"><span style="font-weight: bold;"></span>.<br /><br />Desarrollo de la Arquitectura Software del Sistema Central:</span><br />El sistema central realizara funciones deliberativas trabajando en conjunto con el sistema de visión, este tendrá junto con la capa basada en comportamientos en el robot el control del equipo comunicándose mediante el sistema de comunicación.Jonalejohttp://www.blogger.com/profile/09743137319682507061noreply@blogger.com2