Programando robots con software libre

Vicente Matell´n Olivera a 4 de noviembre de 2004

Programando sistemas
El software libre en general y GNU/Linux en particular son opciones habituales para la programaci´n de aplicaciones en ordenadores personales o grandes sistemas, pero tambi´n son una o e plataforma de desarrollo muy popular para la programaci´n de sistemas empotrados, en particular o para la programaci´n de robots. De hecho, en la comunidad de investigaci´n en rob´tica el software o o o libre se ha convertido en est´ndar. a Esto probablemente no sea muy importante para el usuario medio de inform´tica a d´ de hoy, a ıa pero lo ser´ a corto plazo por la aparici´n de robots en nuestras vidas. Hoy en d´ ya podemos a o ıa comprar corta-c´sped aut´nomos, por ejemplo, el RL-5001 ; carritos dom´sticos como el Cye2 capaz e o e por ejemplo de llevar una bandeja de una habitaci´n a otra; mascotas rob´ticas como el famoso o o perrito AIBO3 del que Sony ha vendido varios centenares de miles de unidades; o la muy barata (por menos de 200 Euros) aspiradora rob´tica Roomba4 , que ha sido regalo tecnol´gico de moda el o o a˜o pasado en los EE.UU. etc. Sin embargo, ninguno de ellos ha alcanzado los miles de unidades n vendidos por LEGO MindStorms, el juguete programable que permite hacer diversas construcciones y en el que me centrar´ en este art´ e ıculo. Como es l´gico, todos estos robots est´n controlados por un ordenador, o al menos un microcono a trolador, lo que los hace susceptibles de ser “programados”. Es aqu´ donde aparece la importancia ı del software libre. Una vez m´s querremos poder inspeccionar que hacen nuestros robots, que estar´n a a conectados a la red, tendr´n c´maras, etc. Querremos poder modificar sus programas, adaptarlos, a a etc. Es decir, nos interesa disponer de software libre tambi´n para nuestros robots. Un ejmplo claro e de que el software libre est´ tambi´n incorpor´ndose a este mundo es la gran cantidad de software a e a libre desarrollado alrededor de los LEGO Mindstorms, como dec´ antes, el robot m´s difundido ıa a hasta la fecha.

LEGO Mindstorms, tu primer robot
LEGO Mindstorms es un “juguete” dise˜ado como un producto de consumo, lo que le dota de n una gran calidad y adem´s de una enorme flexibilidad. Permite construir una enorme variedad de a robots, desde un brazo hasta un robot recolector, sin necesitar ninguna soldadura. Adem´s, permite a
1 http://friendlyrobotics.com/ 2 http://www.personalrobots.com 3 http://www.sony.com/aibo 4 http://www.irobot.com

1

con lo cual han aparecido varias opciones diferentes para su programaci´n. se pueden comprar colecciones de este tipo en los kioskos. Adem´s.una gran libertad a la hora de colocar los sensores y los motores de los robots.edu. a a dos sensores de contacto.microbotica.5 es un lenguaje gr´fico de programaci´n pensado fundamentalmente para ni˜os o adultos sin ninguna preparaci´n a o n o inform´tica. El entorno para el desarrollo de programas incluido en el kit Mindstorms 1. De igual forma. Igualmente han existido otros robots que han tenido difusi´n comercial. Afortunadaa a mente. Peoplebot.edu/projects/handy-board/ 6 http://www. El “cerebro” de estos robots est´ basado en un microprocesador Hitachi H8/300 con 32 Kbytes de RAM. NQC y BrickOS. De hecho se pueden considerar equivalentes en cuanto a difusi´n. o Amigobot. o la tarjeta espa˜ola de Mibrob´tica6 que usa el mismo chip.000 euros) como los suizos de K-Team9 a n (Khepera y Koala) o el australiano Eye-Bot10 .k-team. el programador tiene que montar su hardware y luego hacer sus programas. De hecho. o Los LEGO Mindstorms se venden como kits completos formados por m´s de 700 piezas tradia cionales de LEGO. son condiciones inaceptables para el gran p´blico. existen robots m´viles programables que se venden como productos comerciales o finales. pero a la vez hace que muchos potenciales usuarios queden fuera del mundo de rob´tica por la complejidad y dedicaci´n que implica.com/ 8 http://www. Los sensores disponibles son el de luz ambiente. un pol´ ımetro. es decir. dise˜ada espec´ n ıficamente para la construcci´n o de robots.www. el kit incluye un a entorno gr´fico de desarrollo y el equipo necesario para descargar el software desde un ordenador a personal al ladrillo. u ı 5 http://el. los tradicionales ladrillitos de pl´stico.activrobots. Otro ejemplo es la tarjeta Handyboard5 .media. Entre ellas destacan o dos. adem´s a de un puerto de infra-rojos para comunicarse con el ordenador que sirve de plataforma de desarrollo. o los de ActiveMedia Robotics8 con productos como el Pioneer. pero a´n as´ prohibitivos para el consumidor medio. etc. Ya hab´ ıa ıan existido computadores que se vend´ en forma de kit.com 10 http://www. Estos robots generalmente est´n destinados a los centros de investigaci´n y su precio es a o tan elevado (casi siempre por encima de los 10. como o por ejemplo el RugWarrior que todav´ se comercializa.ee. que se analizan en las siguientes secciones. u Por supuesto. de luz reflejada. de temperatura y de o rotaci´n. uno de luz y el bloque del micro-procesador que se denomina habitualmente “ladrillo” o RCX (con la memoria y los puertos de entrada/salida). En general tener que usar un o o soldador. En esta categor´ de robots para centros de investigaci´n tambi´n hay ıa o e algunos m´s peque˜os y asequibles (alrededor de los 3. han existido n o y siguen apareciendo.000 Euros) que los hacen inalcanzables para el gran p´blico. o e o a lo que fue la familia de los ZX de Sinclair en su d´ en el mundo de los ordenadores. de colisi´n. Magellan o la familia ATRV.es 7 http://www. Todos estos robots comparten con los primeros ordenadores el “esp´ ıritu de garaje”. los LEGO Mindstorms han recibido mucha atenci´n por parte de la comunidad de software o libre.com/ 9 http://www. y que est´ basado en el chip 68HC11 de ıa a Motorola. muchos otros robots “en kit” basados en este y en otros chips. Cada kit adem´s incluye dos motores.mit. Dispone de tres a puertos de salida para conectar motores y tres puertos de entrada para conectar sensores. Ejemplos t´ u ıpicos de estos robots son los de Real World Interface7 con robots como el B21. Se trata de un entorno muy limitado.irobot. Creo que el LEGO Mindstorms constituye uno de los primeros intentos de difundir el mundo de la rob´tica a escala dom´stica. Este esp´ ıritu es atractivo para muchos de nosotros.uwa. y que adem´s no es software libre. como por ejemplo el MIT Altair 8800 (basado ıan en el intel 8080).au/~braunl/eyebot/ 2 .

la parte de programaci´n del robot es un producto final. NQC no es la opci´n m´s adecuada a o a y hay que utilizar un lenguaje de programaci´n real (C. dise˜ado e implementado n fundamentalmente por Markus Noga. Ada. pero si se est´ constituyendo una comunidad de desarrolladores alrededor de a sus robots. Es decir. o a Algo parecido sucedi´ con el perro-m´scota de Sony. del hardware. En el caso de GNU/Linux. NQC es software libre. es decir.lugnet. pero tambi´n a la abundante documeno a e taci´n y a la existencia de herramientas como el RCX Command Center para MS-Windows(TM) o que facilitan el desarrollo y la descarga de programas. Programando el LEGO Mindstorms ¿Cu´l es el motivo de la gran cantidad de software desarrollado para el LEGO Mindstorms? a El factor principal ha sido la permisividad de LEGO.El siguiente estadio tras los garajes en la evoluci´n del mercado de los robots dirigido al gran o p´blico es el paso del kit de auto-montaje.) lo cual obliga a o cambiar el sistema operativo del ladrillo y en consecuencia a usar BrickOS. se entrega un o entorno de programaci´n completamente visual muy orientado a los ni˜os. lo que hace que no se trate de un entorno libre “completo”. usa el sistema operativo original de LEGO. sin ninguna formaci´n inform´tica pueda programar f´cilmente el robot. Forth. o simplemente que sean m´s grandes. el equivalente al del ZX en el mundo de u los ordenadores. Sin embargo. C++. Bien porque su mercado es la venta de sus “piezas”. Comparado con el o 11 http://www.com. al producto final. Sin embargo. se trata de un lenguaje sencillo con una sintaxis muy similar a C que se puede usar para programar el ladrillo. u Pero volvamos a las alternativas para programar el LEGO Mindsotorms. Sin embargo. Un hacker public´ las llamadas al sistema o a o de su sistema operativo propietario (OPEN-R). con lo que puede que en alg´n momento surga una alternativa libre. En este paso el caso de los LEGO Mindstorms puede resultar enga˜oso. etc. desde luego.noga.com/robotics/rcx/legos/ 12 http://www. cuyo acr´nimo NQC significa Not Quite C. no hay o que soldar ning´n elemento. Los entornos de programaci´n m´s extendidos son NQC y BricKOs. que hace que cualquier o n usuario. por ejemplo crear un mapa.aibo. distribuido bajo la Licencia MPL (Mozilla Public License). La m´s extendia es a NQC. de hecho n es un producto comercial que precisamente est´ pensado para que los usuarios “construyan” sus a modelos. es decir. se o a a trata de un software propietario. se dispone de un compilador que produce c´digo directamente descargable en el robot. Sin embargo. NQC es un lenguaje muy popular entre los usuarios de baja formaci´n inform´tica. A pesar de estas limitaciones. y que inicialmente se llam´ LegOS12 . o bien porque creen que no hay m´s remedio que permitir que a los hackers modifiquen tus productos sin son susceptibles de hacerlo. En este caso Sony no ha liberado o su sistema operativo. la realidad es que LEGO ha consentido la ingenier´ inversa necesaria para que se pueda desarrollar software libre para su ıa plataforma. el aspecto electr´nico del producto es el de producto final.de/legOS/ 3 . que traducido es algo as´ como “Un C no compleo ı to”. u De la misma forma. BrickOS11 es un sistema operativo libre para el LEGO Mindstorms. lo cual fue inicialmente perseguido por Sony hasta que decidi´ publicar un entorno de desarrollo: openr. Es. pudiendo utilizarse como o editor cualquiera que edite texto ASCII. la alternativa m´s sencilla al lenguaje de programaci´n a o basado en iconos arrastrables que proporciona LEGO. simplemente comprar unas pilas y encenderlo. si se quieren realizar programas que requieren cierto almacenamiento de datos. debido sobre todo a su simplicidad.

Pronto podemos encontrarnos al robotito de Bilo16 ..sistema operativo original de LEGO. otro simulador.edu/~mueller/legosim/ 15 http://www.net/ 14 http://moss..ncsu. a BrickOS es unicamente el sistema operativo. est´ entrando con mucha fuerza en todos los entornos programables. La distribuci´n para GNU/Linux de LegOS incluye varias o herramientas que permiten descargar el c´digo de forma din´mica. Ejemplos de estas herramientas son emulegos13 . o a Firefox u OpenOffice.com a Se otorga permiso para copiar y distribuir este documento completo en cualquier medio si se hace de forma literal y se mantiene esta nota. y los a robots no son una excepci´n. Alrededor del sistema operativo BrickOS se han desarrollado m´ltiples herramientas auxiliares. de la genial tira o c´mica de Javier Malonda en nuestra mesa ejecutando software libre. . haciendo incluso animaciones.sourceforge. . . ofrece muchas ventajas adem´s de mejores prestaciones y a mayor flexibilidad y lo que es m´s importante desde mi punto de vista: se trata de software libre. de forma ı que es muy sencillo de instalar.ldraw. El entorno de programaci´n bajo ıas o GNU/Linux incluye el compilador de C de GNU (gcc) compilado como cruzado para el Hitachi H8.org 4 . Existen tambi´n herramientas que no son para programadores. LegoSim14 . descargar el firmaware o sistema o a operativo. etc.escomposlinux. el software libre no s´lo est´ colonizando los ordenadores personales con GNU/Linux. lo que quiere decir que se necesita el soporte ´ de un compilador capaz de generar c´digo para el H8 a partir del lenguaje de programaci´n que o o deseemos y para el que existan las librer´ adecuadas de BrickOS. as´ como varios ejemplos. 13 http://emulegos. En resumen. vmo@barrapunto. o c 2004 Vicente Matell´n Olivera.org/ 16 http://tira. . Existen paquetes Debian. para lo que hace falta usar las binutils.csc. que permite simular las entradas y salidas. e como por ejemplo LDraw15 que permite crear escenas virtuales de piezas LEGO y renderizarlas. u como por ejemplo simuladores que hacen m´s f´cil la depuraci´n al permitir ejecutar programas en la a a o propia plataforma de desarrollo usando un depurador tradicional de GNU/Linux como por ejemplo gdb. y de otras distribuciones.

Sign up to vote on this title
UsefulNot useful