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

de luz reflejada.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.media.edu.000 euros) como los suizos de K-Team9 a n (Khepera y Koala) o el australiano Eye-Bot10 . etc. de temperatura y de o rotaci´n. De hecho. Magellan o la familia ATRV. los tradicionales ladrillitos de pl´stico. o Amigobot. adem´s a de un puerto de infra-rojos para comunicarse con el ordenador que sirve de plataforma de desarrollo. y que est´ basado en el chip 68HC11 de ıa a Motorola. Todos estos robots comparten con los primeros ordenadores el “esp´ ıritu de garaje”. 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.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. 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.activrobots. Otro ejemplo es la tarjeta Handyboard5 . existen robots m´viles programables que se venden como productos comerciales o finales. Ejemplos t´ u ıpicos de estos robots son los de Real World Interface7 con robots como el B21. son condiciones inaceptables para el gran p´blico. Entre ellas destacan o dos. Adem´s. 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). han existido n o y siguen apareciendo. o e o a lo que fue la familia de los ZX de Sinclair en su d´ en el mundo de los ordenadores.000 Euros) que los hacen inalcanzables para el gran p´blico.edu/projects/handy-board/ 6 http://www. u ı 5 http://el.uwa. Dispone de tres a puertos de salida para conectar motores y tres puertos de entrada para conectar sensores. En general tener que usar un o o soldador.com/ 9 http://www. El entorno para el desarrollo de programas incluido en el kit Mindstorms 1. es decir.microbotica. como o por ejemplo el RugWarrior que todav´ se comercializa.mit. o la tarjeta espa˜ola de Mibrob´tica6 que usa el mismo chip. Los sensores disponibles son el de luz ambiente. Peoplebot.com/ 8 http://www.ee.au/~braunl/eyebot/ 2 . dise˜ada espec´ n ıficamente para la construcci´n o de robots.es 7 http://www. 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. como por ejemplo el MIT Altair 8800 (basado ıan en el intel 8080). y que adem´s no es software libre. los LEGO Mindstorms han recibido mucha atenci´n por parte de la comunidad de software o libre.irobot. De hecho se pueden considerar equivalentes en cuanto a difusi´n. muchos otros robots “en kit” basados en este y en otros chips. que se analizan en las siguientes secciones. Afortunadaa a mente.una gran libertad a la hora de colocar los sensores y los motores de los robots. Ya hab´ ıa ıan existido computadores que se vend´ en forma de kit. pero a´n as´ prohibitivos para el consumidor medio. El “cerebro” de estos robots est´ basado en un microprocesador Hitachi H8/300 con 32 Kbytes de RAM. 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 10 http://www. De igual forma. u Por supuesto. de colisi´n. el programador tiene que montar su hardware y luego hacer sus programas. Cada kit adem´s incluye dos motores. con lo cual han aparecido varias opciones diferentes para su programaci´n. se pueden comprar colecciones de este tipo en los kioskos. Se trata de un entorno muy limitado. o los de ActiveMedia Robotics8 con productos como el Pioneer. o Los LEGO Mindstorms se venden como kits completos formados por m´s de 700 piezas tradia cionales de LEGO. Igualmente han existido otros robots que han tenido difusi´n comercial. NQC y BrickOS. un pol´ ımetro. a a dos sensores de contacto.k-team.

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

Existen tambi´n herramientas que no son para programadores.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. . el software libre no s´lo est´ colonizando los ordenadores personales con GNU/Linux. . a BrickOS es unicamente el sistema operativo. Pronto podemos encontrarnos al robotito de Bilo16 . y los a robots no son una excepci´n. haciendo incluso animaciones. e como por ejemplo LDraw15 que permite crear escenas virtuales de piezas LEGO y renderizarlas.ncsu. otro simulador. etc. . de forma ı que es muy sencillo de instalar. 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 . 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 la genial tira o c´mica de Javier Malonda en nuestra mesa ejecutando software libre. o c 2004 Vicente Matell´n Olivera.sourceforge. Existen paquetes Debian.escomposlinux.org/ 16 http://tira. vmo@barrapunto. as´ como varios ejemplos..csc. y de otras distribuciones. . Alrededor del sistema operativo BrickOS se han desarrollado m´ltiples herramientas auxiliares.edu/~mueller/legosim/ 15 http://www. 13 http://emulegos. 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.. o a Firefox u OpenOffice.net/ 14 http://moss. est´ entrando con mucha fuerza en todos los entornos programables. 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.ldraw. 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. para lo que hace falta usar las binutils. que permite simular las entradas y salidas. descargar el firmaware o sistema o a operativo.org 4 .sistema operativo original de LEGO. LegoSim14 . En resumen.