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

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

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

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

Sign up to vote on this title
UsefulNot useful