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

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

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

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

Sign up to vote on this title
UsefulNot useful