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

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

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

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

Sign up to vote on this title
UsefulNot useful