You are on page 1of 12

PROGRAMACIÓN DE ROBOTS MÓVILES

José M. Cañas ∗ Vicente Matellán ∗ Rodrigo Montúfar ∗∗,1


Universidad Rey Juan Carlos, Móstoles, España
∗∗
Inst. Nal. de Astrofı́sica, Óptica y Electrónica, Tonanzintla, México

Resumen El objetivo de este tutorial es describir los entornos de programación de robots


móviles más comunes en la actualidad, sus caracterı́sticas y las tendencias más recientes.
Actualmente el software de los robots móviles se estructura en tres niveles: sistema operativo,
plataforma de desarrollo y aplicaciones concretas. Las plataformas de desarrollo han surgido
los últimos años con la idea de facilitar la construcción incremental de estas aplicaciones
robóticas. Suelen ofrecer una interfaz uniforme de acceso al heterogéneo hardware de los
robots, una arquitectura software concreta y un conjunto de funcionalidades comunes listas
para su reutilización.
c 2004 CEA-IFAC

Keywords: Robot programming, autonomous mobile robots, software tools, programming


environments, simulators.

1. INTRODUCCIÓN te e inalterables, por ejemplo, la aspiradora robótica


Roomba de iRobot 2 o en sus inicios 3 . En contraste,
Conseguir que los robots hagan cosas útiles autóno- otra parte relevante del mercado son los robots progra-
mamente es una tarea difı́cil. Uno de los aspectos mables, cuyos principales clientes son los centros de
principales para ello es su programación. Todos los investigación, normalmente interesados en programar-
robots tienen sensores, actuadores y procesadores, y los ellos mismos. En estos casos, el fabricante vende
el software que se ejecuta en ellos es el que da la los robots con un software que permite su programa-
vida a esos componentes hardware, el que enlaza los ción por parte del usuario.
datos recibidos por los sensores con las respuestas El modo en que se programan los robots ha ido evolu-
de actuación. Desde esta perspectiva, la generación cionando. Históricamente los robots eran desarrollos
de comportamiento en un robot consiste en escribir únicos, no se producı́an en serie, y los programas
el programa que al ejecutarse en el robot causa ese de control se construı́an empleando directamente los
comportamiento. La “autonomı́a” y la “inteligencia” drivers para acceder a los dispositivos sensoriales y de
residen en ese programa. Por ejemplo, en los robots actuación. El sistema operativo del robot era mı́nimo,
móviles el comportamiento principal es su movimien- básicamente una colección de drivers con rutinas para
to. Los programas que se ejecutan en el robot deter- leer datos de los sensores y enviar consignas a los ac-
minan la manera en que éste se mueve por el entorno, tuadores. En este contexto, el programa de aplicación
reaccionando ante obstáculos percibidos por los sen- leı́a las medidas obtenidas por los sensores y escribı́a
sores, acercándose a algún destino, etc. y para ello tie- las órdenes de movimiento a los motores invocando
nen que enviar continuamente las órdenes adecuadas directamente las funciones de la librerı́a que ofrecı́a
a los motores. el fabricante en sus drivers. Como muestra la figura
Muchos de los robots que se venden actualmente
son productos cerrados, programados por el fabrican- 2 http://www.irobot.com
3 En el verano de 2002 Sony hizo pública la interfaz de progra-
1 mación de sus perritos, Open-R, en parte forzados por un hacker
Financiado parcialmente por la Agencia Española de Coopera-
la mascota robótica Aibo 4 de Sony que habı́a conseguido desvelar
ción Internacional
algunas de sus interfaces
1(a), la aplicación se situaba directamente encima del Una caracterı́stica común a muchos robots es que tie-
sistema operativo. nen recursos computacionales y de almacenamiento
limitados: carecen de disco duro, pantalla suficiente,
Aplicación etc. Por eso es normal que en esos casos se utilice el
Plataforma
PC como entorno de desarrollo de aplicaciones y los
Aplicación
desarrollo compiladores cruzados generen en el PC el programa
drivers Sistema Operativo ejecutable que correrá en el procesador a bordo del ro-
bot. Esa ejecución genera el comportamiento deseado
cuando el robot se encuentra en el entorno adecuado.

Hardware del robot Hardware del robot


2.1 Requisitos especı́ficos
Figura 1. Programación de robots: (a) sobre drivers Escribir programas para robots móviles es una tarea
especı́ficos de sensores y actuadores. (b) sobre complicada, ya que los robots son sistemas comple-
una plataforma de desarrollo jos. La programación de robots móviles suele ser más
exigente que la creación de programas tradicionales
Con el asentamiento de los fabricantes, el trabajo de como aplicaciones de ofimática, bases de datos, etc.
muchos grupos de investigación y el paso de los años A continuación se presentan algunos condicionantes
han ido apareciendo plataformas de desarrollo que propios, diferenciadores de otros ámbitos del softwa-
simplifican la programación de aplicaciones robóti- re.
cas. Estas plataformas ofrecen acceso más sencillo a
sensores y actuadores, suelen incluir un modelo de 1. Los programas de robots móviles están directamen-
programación que establece una determinada orga- te conectados a la realidad fı́sica, a través de sensores y
nización del software y permite manejar la crecien- actuadores. Los sensores obtienen información de esta
te complejidad del código cuando se incrementa la realidad y los actuadores la modifican. Esta situación
funcionalidad del robot. El diseñador programa sus implica que el software debe ser ágil, tomar decisio-
aplicaciones robóticas finales sobre esa plataforma de nes con vivacidad para controlar correctamente a los
desarrollo, como muestra la figura 1(b). actuadores. Por esta razón, se requiere de actuación en
tiempo real, si no estricto, al menos blando.
En este tutorial pretendemos reflejar nuestra experien-
cia de los últimos años programando diferentes tipos 2. Una aplicación de robots móviles tı́picamente de-
de robots móviles, con diferentes entornos de progra- be estar pendiente de varias fuentes de actividad y
mación y en diferentes centros de investigación, todo objetivos a la vez. El programa de un robot tiene
ello con el objetivo de servir de punto de partida en la que atender a muchas cosas simultáneamente: recoger
toma de decisiones en este contexto. nuevos datos de varios sensores, refrescar la interfaz
gráfica, enviar periódicamente consignas a los moto-
En la siguiente sección abordamos las peculiaridades res, enviar o recibir datos por la red a otro proceso de
de la programación de robots móviles. En la tercera la aplicación, etc. Por ello estas aplicaciones suelen ser
se describe el nivel básico: el hardware y los siste- concurrentes, lo cual les añade cierta complejidad. En
mas operativos de robots. En la cuarta analizamos las este sentido, los sistemas operativos para robots más
plataformas de desarrollo que han ido apareciendo los avanzados incorporan mecanismos de multitarea y co-
últimos años y sus funciones. En la quinta se detallan municación interprocesos, permitiendo la distribución
algunas de las plataformas concretas más extendidas, de las tareas en diferentes hebras que se ejecutan con-
y finalizamos con unas breves reflexiones en la sección currentemente, y una programación modular que se
sexta a modo de conclusiones. adapta a la naturaleza de las aplicaciones de robots
mejor que la programación estrictamente secuencial.
3. Otra cuestión relevante que deben contemplar las
2. SOFTWARE DE ROBOTS aplicaciones que corren a bordo de los robots es su
interfaz gráfica. Aunque la interfaz gráfica no es in-
La mecánica de creación de aplicaciones para robots dispensable para generar y materializar el compor-
no difiere especialmente de la de aplicaciones en otros tamiento autónomo en el robot, normalmente resulta
ámbitos del software: El programador tiene que escri- muy útil como herramienta de depuración. Además
bir la aplicación en cierto lenguaje, compilar y enlazar de las posibilidades de interacción con el usuario, la
su código con las bibliotecas de la plataforma y/o interfaz gráfica permite la visualización en tiempo de
del sistema operativo, y finalmente ejecutarla en los ejecución de estructuras internas (e.g. representacio-
computadores a bordo del robot. Aunque la mecánica nes del mundo, mapas, estados), las trazas y el análisis
sea similar, las aplicaciones de robots móviles sı́ pre- de variables internas del programa que pueden afectar
sentan unos requisitos especı́ficos, como veremos a a la conducta observable del robot. El código de la
continuación, que condicionan las caracterı́sticas de aplicación deberá encargarse de actualizar esa interfaz
esos programas. y de atender la interacción con el usuario.
4. El software de robots es cada vez más distribuido, mo la descomposición de tareas, la monitorización de
tal y como apuntan Woo et al.(Woo et al., 2003). ejecución o la sincronización.
Es usual que las aplicaciones de robots tengan que
En los brazos robotizados industriales es frecuente el
establecer alguna comunicación con otros procesos
uso de lenguajes de bajo nivel, prácticamente ensam-
ejecutándose en la misma máquina o en una diferente.
blador (Biggs and MacDonald, 2003) del microproce-
Si la aplicación consiste en el comportamiento de un
sador de turno. Sin embargo, en los robots móviles la
único robot esta distribución no es imprescindible,
programación con ensamblador ha desaparecido por
pero ofrece posibilidades ventajosas como ubicar la
el tamaño y complejidad de su código. Además, la
carga computacional en nodos con mayor capacidad
creciente incorporación del ordenador personal como
o la visualización remota; y en sistemas multirrobot,
procesador principal ha dado paso a toda suerte de
hace posible la integración sensorial, la centralización
lenguajes de alto nivel: C, C++, JAVA, Python, etc.
y la coordinación.
La plataforma de desarrollo suele obligar a que las
5. Los programadores de robots se enfrentan a una
aplicaciones se escriban en el lenguaje en que ella
creciente heterogeneidad, en distintos sentidos, que di-
misma está programada, para que puedan acceder
ficulta su tarea. En cuanto al hardware, existe una gran
a la funcionalidad ofrecida. No obstante, cada vez
diversidad de dispositivos sensoriales y de actuación,
hay más plataformas que no imponen un lengua-
ası́ como de interfaces, los cuales un programador
je determinado a las aplicaciones. Por ejemplo, en
debe dominar si quiere escribir programas funciona-
Player/Stage/Gazebo (PSG) (Gerkey et al.,
les para robots. En cuanto al software, las aplicacio-
2003; Vaughan et al., 2003) la funcionalidad se ofrece
nes de robots no cuentan con un marco estable, no
a través de mensajes de red a un servidor, la aplicación
hay estándares abiertos que propicien la colaboración
puede estar escrita en cualquier lenguaje siempre que
(Utz et al., 2002; Montemerlo et al., 2003; Côté et
respete el protocolo. Existen librerı́as hechas en C,
al., 2004), la reutilización de código y la integración.
C++, Tcl, Python, Java y Common Lisp que encap-
En otros campos de la informática hay bibliotecas
sulan ese diálogo en el cliente.
que un programador puede emplear para construir su
propio programa, ganando en fiabilidad y acortando Sin duda los lenguajes más utilizados en la progra-
el tiempo de desarrollo. Por el contrario, en robótica mación de robots son los basados en texto, por su
cada aplicación prácticamente ha de construirse desde flexibilidad y potencia expresiva. Sin embargo, una
cero para cada robot concreto. No hay una base sólida excepción reseñable es el lenguaje que incluye LEGO
y firme para el desarrollo de nuevas aplicaciones que para que los niños programen sus robots RCX (Biggs
favorezca la reusabilidad. Esa falta se debe en parte and MacDonald, 2003). El RCX-code es completa-
a la heterogeneidad endémica en robótica, tanto en mente visual y en él un programa consiste de una
hardware como en software, y en parte a la inmadurez columna que se forma encadenando en secuencia blo-
del mercado de robots programables. ques gráficos que son instrucciones varias (de espera,
actuación, suma a una variable, etc). Incluye bloques
6. El conocimiento sobre cómo generar y descom-
de condición, con dos ramas salientes, que hacen avan-
poner el comportamiento artificial es muy limitado.
zar el flujo de programa por una de ellas, dependiendo
Cómo dividir el comportamiento de robots en unida-
de la condición sensorial. Se pueden incluir varias
des básicas sigue siendo materia de investigación, y
columnas, a modo de hilos de ejecución concurrentes.
no hay una guı́a universalmente admitida sobre cómo
organizar el código de las aplicaciones de robots para Actualmente el lenguaje más extendido para progra-
que sea escalable y se puedan reutilizar sus partes. mar robots es C. Este lenguaje supone un buen com-
Cada desarrollador escribe su aplicación combinando promiso entre potencia expresiva y rapidez. Como
ad hoc los bloques de código que puedan existir en su lenguaje compilado su eficiencia temporal es supe-
entorno. rior a otros lenguajes interpretados. Hasta hace unos
años gran parte del software proporcionado por los
fabricantes de robots estaba codificado en C, como las
2.2 Lenguajes librerı́as de Saphira con que se vendı́an los robots de
ActivMedia, o el entorno de desarrollo de los robots
En cuanto a los lenguajes que se emplean para pro- de RWI (RWI, 1999). Muchos robots pequeños se pro-
gramar robots, no hay diferencias significativas con graman en C, como el robot EyeBot (Bräunl, 2003) y
los utilizados en las aplicaciones informáticas tradi- el robot LEGO RCX, que se puede programar con una
cionales. Aunque han existido intentos de establecer variante recortada de C llamada NQC (Baum, 2000).
lenguajes especı́ficos para programar robots, como Recientemente se puede observar un crecimiento en
Task Description Language (TDL) (Simmons and Ap- los desarrollos y aplicaciones en C++. Por ejemplo, el
felbaum, 1998) o Reactive Action Packages (RAP) entorno ARIA (ActivMedia, 2002) para programar ro-
(Firby, 1994), no han sido nunca de uso general. El bots de ActivMedia, el entorno OPEN-R (Sony, 2003)
objetivo básico de estos lenguajes es incluir en la de programación del perrito Aibo de Sony, la platafor-
propia sintaxis del lenguaje mecanismos que resultan ma Miro (Utz et al., 2002), Mobility (RWI, 1999), etc.
ventajosos para la programación de robots, tales co-
El principal avance sobre C es que proporciona la abs- 3. SISTEMAS OPERATIVOS
tracción de orientación objetos, con los mecanismos
de herencia y polimorfismo asociados. Potencialmente Como mencionamos en la introducción, la primera
también simplifica la reutilización de componentes. opción para el desarrollador de aplicaciones robóticas
Una ventaja más es que la portabilidad desde C a C++ consiste en escribir su código sobre la funcionalidad
es relativamente sencilla. que le proporciona el sistema operativo encargado de
manejar el hardware del robot. La misión principal
de ese sistema operativo es ofrecer a los programas
2.3 Simuladores un acceso básico al hardware del robot, permitir su
manipulación y uso desde los programas. Fundamen-
Una herramienta particular, muy útil en la programa- talmente debe permitir recoger lecturas de los sensores
ción de robots, son los simuladores, los cuales ofrecen y enviar órdenes a los actuadores incorporando drivers
un entorno virtual en el que emulan las observaciones que dan soporte software de bajo nivel a los dispositi-
de los sensores y los efectos de las órdenes a los ac- vos fı́sicos.
tuadores. Sirven para evaluación, depuración y ajuste
del programa de control antes de ser llevado al robot En cuanto a la multitarea, los sistemas especı́ficos
real. proporcionan librerı́as que nos permiten la programa-
ción con distintos procesos y/o con varias hebras, ya
Los primeros simuladores eran poco realistas y alma- sean con desalojo o sin él. También suelen incluir
cenaban mundos planos donde habı́a obstáculos estáti- mecanismos de comunicación interprocesos como la
cos bidimensionales. Con los años se ha ido ganan- memoria compartida, las tuberı́as (pipes), etc. y los
do en realismo, incorporando ruido en los sensores y recursos tı́picos de concurrencia (como los semáforos
en las actuaciones. Hoy en dı́a se tienen simuladores y los monitores) para la sincronización, la evitación
tridimensionales, como Gazebo 5 (en la figura 2 se de las condiciones de carrera y de los interbloqueos,
puede observar un mundo simulado con Gazebo) y la garantı́a de exclusión mutua, etc.
JMR (Lozano Ortega et al., 2001), capaces de simular
sensores tan complejos como la visión. En los simula- El sistema operativo suele incluir también soporte para
dores más potentes se ha incluido también la capaci- el hardware de comunicaciones (e.g. tarjetas de red
dad de representar un conjunto de robots operando en inalámbricas) y para los elementos de interacción del
el mismo escenario de modo simultáneo. robot, ya sean botones fı́sicos, pantallas pequeñas,
pantallas de ordenador, etc. Este soporte permite la
creación de interfaces gráficas, lo que combinado con
las comunicaciones, puede facilitar la visualización
remota en un ordenador externo.

3.1 Sistemas operativos dedicados y generalistas

Gran parte de los robots actuales incluyen sistemas


operativos de propósito especı́fico. Sin embargo, des-
de hace algún tiempo se ha extendido el uso de siste-
Figura 2. Simulador de robots Gazebo mas operativos de propósito general, entendiendo por
ellos los que se utilizan en las computadoras persona-
Muchos fabricantes incluyen un simulador para sus les, empleando en el robot bien ordenadores portátiles
robots (e.g. EyeSim para el robot EyeBot, Webots o bien computadores de sobremesa empotrados. El
para Kephera y Koala), aunque también existen mu- motivo principal de su amplia aceptación es sin duda
chos desarrollos libres (Stage, Gazebo, JMR, etc.). su ventajosa relación prestaciones / precio.
Los simuladores libres tratan de incluir soporte para
los robots de diversos fabricantes. La configuración Ası́, los sistemas operativos de propósito general co-
concreta del conjunto de robots a simular, la disposi- mo Linux o MS-Windows han entrado en el mundo
ción y parámetros de sus sensores se suele especificar de los robots. Estos sistemas, además de los drivers
en un fichero de configuración. Dos de los simuladores del hardware, incluyen abstracciones y un conjunto
más relevantes de hoy en dı́a son el SRIsim 6 de Kurt muy extenso de bibliotecas genéricas, útiles para la
Konolige, que se emplea en los robots de ActivMedia programación de robots, tales como las bibliotecas e
y los simuladores Stage y Gazebo de software libre interfaces para la multitarea, las comunicaciones y las
orientados a multirrobot (Stage soporta 2D y colo- interfaces gráficas.
nias numerosas de robots, y Gazebo soporta 3D). A modo de ejemplo vamos a analizar en esta sección
un ejemplo de cada tipo de sistema operativo. El
5 http://playerstage.sourceforge.net sistema operativo ROBIOS (Bräunl, 2003) en el robot
6 http://www.ai.sri.com/˜konolige/saphira EyeBot (figura 3) y GNU/Linux, el sistema operativo
de propósito general más extendido en los centros de trolar el acceso a esas variables compartidas o resolver
investigación. problemas de concurrencia que puedan aparecer. Estos
mecanismos se suman a los que ya ofrece GNU/Linux
como creación de procesos, tuberı́as, fifos, memo-
ria mapeada, etc., que están siempre disponibles.
El mecanismo de comunicaciones más extendido en
GNU/Linux son los sockets, que permiten la comuni-
cación intermáquina entre programas, una abstracción
que le permite olvidarse de los detalles de red, pro-
tocolos de acceso al medio, etc. En concreto soporta
IP para el nivel de red, y los protocolos del nivel de
transporte TCP y UDP. De esta manera el programa-
dor de la aplicación no debe preocuparse de localizar
Figura 3. Robot EyeBot la máquina destino, ni modificar su código cuando, por
ejemplo, el robot se conecta a la red por ethernet en
vez de usar red inalámbrica.
ROBIOS ROBIOS es una muestra significativa de
sistema operativo dedicado. El robot EyeBot (Bräunl, GNU/Linux ofrece también múltiples librerı́as para
2003) es un robot de tamaño pequeño equipado con un crear y manejar interfaces gráficas con X-Window,
microprocesador Motorola 68332 a 35 MHz, al cual se que es el sistema más extendido en el mundo Unix.
le conectan dos motores con encoders, tres sensores de Encima de las librerı́as básicas (Xlib o Xt), que
infrarrojos y una cámara digital. Su hardware también son flexibles pero complejas, GNU/Linux dispone de
incluye una pequeña pantalla, cuatro botones y un varias librerı́as que simplifican el manejo de la interfaz
radioenlace. El sistema operativo permite la carga de gráfica, como Qt, XForms, GTK, etc.
programas a través de un puerto serie y su ejecución
El potente soporte de GNU/Linux para la multitarea,
pulsando los botones. Como acceso básico al hardwa-
las comunicaciones remotas y las bibliotecas gráficas
re desde los programas, incluye una API (Application
existentes en ese entorno lo hacen un sistema ope-
Programming Interface) con funciones para recoger
rativo muy relevante para las aplicaciones de robots
las lecturas de los sensores de infrarrojos, para obte-
móviles. En particular proporcionan herramientas efi-
ner las imágenes de la cámara y para hacer girar los
cientes y flexibles que permiten abordar con éxito la
motores a cierta velocidad.
naturaleza concurrente, distribuida y la necesidad de
Además incluye dos funciones que le permiten enviar visualización tı́picas de los programas para robots, tal
y recibir bytes a través de un radioenlace, a otros como vimos en la sección 2.
EyeBots o un PC que se encuentren dentro del alcance
Una de las desventajas del uso de GNU/Linux en
radio de su antena. En cuanto a la interfaz gráfica, RO-
robótica es que no es un sistema operativo de tiempo
BIOS incluye primitivas para muestrear si los botones
real, pues no permite acotar plazos. No ofrece ga-
están pulsados, pintar y refrescar la pantalla.
rantı́a de plazos (tiempo real duro) porque su sistema
Con respecto a la multitarea, ROBIOS tiene primitivas de planificación de procesos no las asegura. En este
para crear hebras, detenerlas durante un tiempo, ma- sentido contrasta con sistemas operativos similares
tarlas, etc. Ofrece dos modos de repartir el tiempo de como QNX, o la variante RT-Linux. Sin embargo,
procesador entre hebras: con desalojo (en rodajas de GNU/Linux resulta lo suficientemente ágil para los
tiempo) y sin desalojo (con un testigo que va pasándo- requisitos de aplicaciones no crı́ticas. Por ejemplo,
se de una hebra a la siguiente), correspondientes a las permite detener hebras durante milisegundos.
hebras de kernel o de usuario tı́picas de sistemas ope-
rativos tradicionales. También ofrece semáforos para
coordinar la ejecución concurrente de esas hebras y el 4. PLATAFORMAS DE DESARROLLO
acceso a variables compartidas.
Las aplicaciones con robots presentan cada vez mayor
complejidad y ofrecen mayor funcionalidad. En mu-
GNU/Linux Un sistema operativo generalista que ha
chos campos del software se ha ido implantando midd-
ganado gran aceptación en la comunidad robótica es
leware que simplifica el desarrollo de nuevas apli-
GNU/Linux (RWI, 1999; Gerkey et al., 2003; Mon-
caciones en esas áreas. Este middleware proporciona
temerlo et al., 2003). Incluye un amplio abanico de
contextos nı́tidos, estructuras de datos predefinidas,
herramientas de desarrollo, como el compilador de
bloques muy depurados de código de uso frecuente,
C/C++ gcc, el editor emacs, etc.
protocolos estándar de comunicaciones, mecanismos
En el ámbito de la multitarea, la biblioteca más usual de sincronización, etc. Del mismo modo, a medida
es Pthreads que proporciona hebras POSIX de kernel que el desarrollo de software para robots móviles ha
que se pueden comunicar a través de memoria com- ido madurando han ido apareciendo diferentes plata-
partida. Pthreads también ofrece semáforos para con- formas middleware (Utz et al., 2002).
Hoy en dı́a los fabricantes más avanzados incluyen que el robot consiga esas velocidades comandadas de
plataformas de desarrollo para simplificar a los usua- tracción y de giro.
rios la programación de sus robots. Por ejemplo, Ac-
Hattig et al. (Hattig et al., 2003) apuntan que la uni-
tivMedia ofrece la plataforma ARIA (ActivMedia,
formidad en el acceso al hardware es el primer paso
2002) para sus robots Pioneer, PeopleBot, etc.; iRo-
para favorecer la reutilización de software dentro de
bot ofrecı́a Mobility (RWI, 1999) para sus B14 y
la robótica. Esta caracterı́stica está presente en varias
B21; Evolution Robotics vende su plataforma ERSP;
plataformas, aunque cada una lo hace a su manera. En
y Sony ofrece OPEN-R (Martı́n et al., 2004) para sus
la plataforma ERSP de Evolution Robotics (figura 4)
Aibo.
el acceso al bajo nivel recibe el nombre de Hard-
Además de los fabricantes, muchos grupos de inves- ware Abstraction Layer (HAL), y en Miro, Service
tigación han creado sus propias plataformas de de- Layer. En OPEN-R, en Mobility y en ARIA la API
sarrollo. Varios ejemplos son la suite de navegación de acceso a los sensores y actuadores viene dada por
CARMEN 7 (Montemerlo et al., 2003) de Carnegie los métodos de un conjunto objetos. En JDE (Cañas
Mellon University, Orocos (Bruyninckx, 2001), PSG and Matellán, 2002) y en PSG el acceso abstracto al
(Gerkey et al., 2003), Miro (Utz et al., 2002), JDE hardware lo marca un protocolo entre las aplicaciones
(Cañas and Matellán, 2002), etc. Tal como ocurre con y los servidores, con vocación de estándar.
los simuladores, mientras los fabricantes buscan que
su plataforma sirva para sus modelos, los grupos de
investigación aspiran a una mayor universalidad y sus 4.2 Arquitectura software
plataformas tratan de incluir soporte para los robots de
sus laboratorios, tı́picamente de diferentes fabricantes. La arquitectura software de la plataforma de desarrollo
El objetivo fundamental de estas plataformas es hacer fija la manera concreta en la que el código de la
más sencilla la creación de aplicaciones para robots. aplicación debe acceder a las medidas de los sensores,
Hemos identificado varias caracterı́sticas que estas ordenar a los motores, o utilizar una funcionalidad ya
plataformas presentan para lograrlo: uniforman y sim- desarrollada.
plifican el acceso al hardware, ofrecen una arquitec- Existen muchas alternativas de software para ello: lla-
tura software concreta y proporcionan un conjunto de mar a funciones de biblioteca, leer variables, invo-
bibliotecas o módulos con funciones de uso común en car métodos de objetos, enviar mensajes por la red a
robótica que el cliente puede reutilizar para programar servidores, etc. Por ejemplo, la plataforma CARMEN
sus propias aplicaciones. (Montemerlo et al., 2003) presenta interfaces funcio-
nales, Miro usa la invocación de métodos de objetos
distribuidos, TCA (Simmons and Apfelbaum, 1998)
4.1 Abstracción del hardware
requiere del paso de mensajes entre distintos módulos,
Normalmente las plataformas ofrecen un acceso a JDE requiere la activación de procesos y la lectura o
sensores y actuadores más abstracto y simple que el escritura de variables. Esta apariencia de las interfaces
proporcionado por el sistema operativo. Por ejemplo, depende de cómo se encapsule en cada plataforma la
si se dispone de un robot Pioneer equipado con un funcionalidad ya desarrollada.
sensor láser SICK, la aplicación puede acceder a sus Al escribirse dentro de la arquitectura software de la
medidas a través de las funciones de la plataforma plataforma, el programa de la aplicación adopta una
ARIA o pedirlas y recogerlas directamente a través del organización concreta. Ası́, se puede plantear como
puerto serie. Utilizando ARIA basta invocar un méto- una colección de objetos (p.e. en OPEN-R), como un
do sobre cierto objeto de una clase y la plataforma se conjunto de módulos dialogando a través de la red
encargará de mantener actualizadas las variables con (p.e. en TCA), como un proceso iterativo llamando
las lecturas. Utilizando sólo el sistema operativo, la a funciones, etc. Esta organización está influida por
aplicación debe solicitar y recoger periódicamente las la arquitectura cognitiva, y supone un modelo de pro-
lecturas al sensor láser a través del puerto serie, y debe gramación. Hay plataformas muy cerradas, que obli-
conocer el protocolo del dispositivo para componer y gan estrictamente a cierto modelo. Por ejemplo, en
analizar correctamente esos mensajes de bajo nivel. la plataforma RAI (RWI, 1999) los clientes han de
El acceso abstracto también se ofrece para los actua- escribirse forzosamente como un conjunto de módulos
dores. Por ejemplo, en vez de ofrecer comandos de RAI (hebras sin desalojo), con ejecución basada en
velocidad para cada una de las dos ruedas motrices de iteraciones. Otras arquitecturas software son delibera-
un robot Pioneer, la plataforma Miro (Utz et al., 2002) damente abiertas, restringen lo mı́nimo, como PSG o
ofrece una sencilla interfaz de V-W (velocidad de CARMEN.
tracción y de giro) para la actuación motriz, la cual Las arquitecturas software de las plataformas más
se encarga de hacer las transformaciones oportunas, avanzadas establecen mecanismos concretos para que
de enviar a cada rueda las consignas necesarias para la aplicación se pueda distribuir en varias unidades
concurrentes. El mecanismo multitarea que ofrece la
7 http://www-2.cs.cmu.edu/˜carmen
plataforma envuelve y simplifica la interfaz del kernel
subyacente para la multiprogramación, en la cual se tuación para generar un repertorio de comportamien-
apoyan siempre. Al igual que ocurre con la interfaz tos. Para comportamientos simples casi cualquier or-
abstracta de acceso al hardware, la interfaz abstracta ganización resulta válida, pero para comportamientos
de multitarea facilita la portabilidad. complejos se hace patente la necesidad de una buena
organización cognitiva. De hecho, puede llegar a ser
un factor crı́tico: con una buena organización sı́ se
pueden generar ciertos comportamientos y con una
mala no, fundamentalmente porque se tiene un código
frágil y la complejidad se vuelve inmanejable. En la
comunidad robótica han surgido a lo largo de su his-
toria diversas escuelas cognitivas o paradigmas para
orientar la organización del sistema en esos casos.
Más allá de la interfaz estable que proporcionan las
plataformas para el acceso a un hardware diverso, la
estandarización del comportamiento artificial, su di-
Figura 4. Módulos de navegación, visión e interacción visión en unidades reutilizables, es una cuestión muy
en la plataforma ERSP c complicada. Hattig et al.(Hattig et al., 2003) opinan
que aún es demasiado pronto para buscar estándares
en el modo de generar comportamientos. Recomien-
4.3 Funcionalidades de uso común dan ceñir por ahora la estandarización al acceso a
los sensores y actuadores, a lo que ellos denominan
Además de las librerı́as sencillas de apoyo, como fil- “bloques constituyentes”.
tros de color y demás, estas funcionalidades engloban La relación entre las arquitecturas cognitivas y las
técnicas relativamente maduras, ya sea de percepción de software es múltiple. Las arquitecturas cognitivas
o de algoritmos de control: localización, navegación se materializan en alguna arquitectura software, de
local segura, navegación global, seguimiento de perso- manera que los comportamientos generados siguiendo
nas, habilidades sociales, construcción de mapas, etc. cierto paradigma acaban implementándose con algún
La ventaja de integrarlas en la plataforma es que el programa concreto. De hecho, las propuestas cogniti-
usuario puede reutilizarlas, enteras o por partes, lo vas más fiables cuentan con implementaciones prácti-
cual permite acortar los tiempos de desarrollo y re- cas relevantes en arquitecturas software concretas: de-
ducir el esfuerzo de programación necesario para te- liberativas (e.g. SOAR), hı́bridas (e.g. TCA (Simmons
ner una aplicación. Al incluir funcionalidad común, el and Apfelbaum, 1998), Saphira, etc.), basadas en com-
desarrollador no tiene que repetir ese trabajo y puede portamientos (subsunción, JDE, etc.), etc. Una buena
construir su programa reutilizándolas, concentrándose arquitectura cognitiva favorece la escalabilidad de la
en los aspectos especı́ficos de su aplicación. Además, plataforma.
suele estar muy probada, lo cual disminuye el número Hay plataformas software debajo de las cuales sub-
de errores en el programa final. yace un modelo cognitivo, pero también hay otras en
La forma concreta en que se reutilizan las funcionali- las que no. No obstante, unas arquitecturas software
dades depende nuevamente de la arquitectura software cuadran mejor con ciertas escuelas cognitivas que con
y de cómo se encapsulen en ella: módulos, objetos otras. Los sistemas deliberativos clásicos cuadran con
distribuidos, objetos locales, funciones, etc. la programación lógica, con una descomposición fun-
cional en bibliotecas (módulos especialistas) y con las
Los fabricantes suelen vender esas funcionalidades aplicaciones monohilo con un sólo flujo iterativo de
por separado o incluirlas como valor añadido de su control (sensar-modelar-planificar-actuar). Por el con-
propia plataforma. Por ejemplo, la plataforma ERSP trario, los sistemas basados en comportamientos cua-
(figura 4) incluye tres paquetes en su arquitectura dran mejor con la programación concurrente, donde se
básica: uno de interacción, otro de navegación y otro tienen varios procesos funcionando en paralelo y que
de visión. En el módulo de interacción se incluye el colaboran al funcionamiento global. Resulta natural
reconocimiento del habla y la sı́ntesis de voz, para asimilar cada unidad de comportamiento al concepto
interactuar de modo verbal con su robot. En el módulo software de proceso, o incluso al de objeto activo.
de navegación se incluye la construcción automática
de mapas, la localización en ellos y su utilización para
planificar trayectorias.
4.5 Plataformas de software libre

4.4 Arquitectura cognitiva Como ya hemos comentado, existen plataformas de


desarrollo creadas por los fabricantes de robots y otras
Se denomina arquitectura cognitiva de un robot a la creadas por grupos de investigación. La mayorı́a de
organización de sus capacidades sensoriales y de ac- estas últimas se publican con licencia de software
libre, con la idea de contribuir al libre intercambio cations) (ActivMedia, 2002). ARIA está impulsada y
de conocimiento en el área y con ello al avance de la mantenida por la empresa ActivMedia Robotics como
disciplina robótica. interfaz de acceso al hardware de sus robots, pero
se distribuye con licencia GPL y por tanto su códi-
go fuente está accesible. ARIA ofrece un entorno de
Player/Stage/Gazebo (PSG) La plataforma PSG 8
programación orientado a objetos, que incluye soporte
fue creada inicialmente en la Universidad de South
para la programación multitarea y para las comuni-
California (Gerkey et al., 2003). Está formada por los
caciones a través de la red. Las aplicaciones han de
simuladores Stage y Gazebo, y por el servidor Player
escribirse forzosamente en C++. ARIA está soportada
al que se conecta el programa de la aplicación para
en Linux y en Win32 OS, por lo que una misma apli-
recoger los datos sensoriales o comandar las órdenes
cación escrita sobre su API puede funcionar en robots
a los actuadores. El soporte a robots variados y los
con uno u otro sistema operativo. Es un claro ejemplo
simuladores que incorpora la convierten en una pla-
de portabilidad.
taforma muy completa. Además, cuenta con una cre-
ciente comunidad de desarrolladores, muy activa, que En el bajo nivel, ARIA tiene un diseño de cliente-
continuamente añade nuevas capacidades y amplı́a el servidor: el robot está gobernado por un microcon-
hardware soportado. trolador que hace las veces de servidor. Ese servidor
establece un diálogo a través del puerto serie con la
En PSG los sensores y actuadores se contemplan como
aplicación, escrita utilizando ARIA, que actúa como
si fueran ficheros (Vaughan et al., 2003), dispositivos
cliente. En ese diálogo se envı́an al cliente las medidas
de modo carácter al estilo de Unix, que se manipulan
de ultrasonido, odometrı́a, etc. y se reciben las órdenes
con cinco operaciones básicas: abrir, cerrar, leer, escri-
de actuación a los motores.
bir y configurar. Para usar un sensor, las aplicaciones
tienen que abrir el dispositivo, configurarlo y leer de
Connect Comandos
él, cerrándolo al final. De manera análoga se utilizan ArResolver ArActions Disconnect Directos Sensores
Callbacks de Movimiento
los actuadores. Cada tipo de dispositivo se define en
PSG con una interfaz, de manera que los sensores
sónar de algún robot en particular son instancias de la ArRobot
misma interfaz. El conjunto de posibles interfaces pre-
senta una máquina virtual, con toda suerte de sensores ArRobot Packet ArRobot Packet
Receiver Sender
y actuadores. El robot concreto instancia las interfaces
relativas a los dispositivos realmente existentes. ArRobot Device
Connect

PSG tiene un diseño cliente/servidor: las aplicaciones


Robot
establecen un diálogo por TCP/IP con el servidor Pla- (Simulado o Real)
yer, que es el responsable de proporcionar las lectu-
ras sensoriales y materializar los comandos de actua-
Figura 5. Estructura del API de ARIA
ción. Además de permitir acceso remoto, este diseño
proporciona a las aplicaciones construidas sobre PSG
gran independencia de lenguaje y mı́nimas imposicio- En cuanto al acceso al hardware, ARIA ofrece una
nes de arquitectura. La aplicación puede escribirse en colección de clases, que configuran una API articu-
cualquier lenguaje, y con cualquier estilo, simplemen- lada según muestra la figura 5. La clase principal
te respetando el protocolo de comunicaciones con el ArRobot contiene varios métodos y objetos rele-
servidor. vantes asociados. Packet Receiver y Packet
Sender están relacionados con el envı́o y recepción
PSG se orienta principalmente a ofrecer una interfaz de paquetes por el puerto serie con el servidor. Den-
abstracta del hardware de robots y no a la identifica- tro de la clase ArRangeDevices, se tienen clases
ción de bloques comunes de funcionalidad. No obs- más concretas como ArSonarDevice o ArSick
tante, se puede incorporar cierta funcionalidad adi- cuyos objetos contienen métodos que permiten a la
cional con nuevos mensajes del protocolo, y servi- aplicación acceder a las lecturas de los sensores de
cios añadidos a Player. Por ejemplo, la localización proximidad (sónares o escáner láser, respectivamente).
probabilı́stica se ha añadido como una interfaz más,
localization, que proporciona múltiples hipóte- A diferencia de otras plataformas orientadas a objetos,
sis de localización. Esta nueva interfaz supera a la los objetos de ARIA no son distribuidos, están ubica-
tradicional, position, que acarrea la posición es- dos en la máquina que se conecta fı́sicamente al robot.
timada desde la odometrı́a. No obstante, ARIA permite programar aplicaciones
distribuidas utilizando ArNetworking para mane-
jar comunicaciones remotas, que es un recubrimiento
ARIA Otra plataforma de software libre muy utiliza- de los sockets del sistema operativo subyacente.
da es ARIA (ActivMedia Robotics Interface for Appli-
En cuanto a la multitarea, las aplicaciones sobre ARIA
pueden programarse en monohilo o multihilo. En este
8 http://playerstage.sourceforge.net/ último caso ARIA ofrece infraestructura tanto para
hebras de usuario (ArPeriodicTask) como pa- Existen otras muchas plataformas libres para la pro-
ra hebras kernel (ArThreads). Las ArThreads gramación de robots. Por ejemplo MARIE (Côté et
son un recubrimiento de las Linux-pthreads o al., 2004) que aborda la integración de software de
Win32-threads. Para resolver los problemas de robots utilizando un paradigma de mediador entre
sincronización y concurrencia, ofrece mecanismos co- aplicaciones heterogéneas. JDE (Cañas and Matellán,
mo los ArMutex, y las ArCondition. 2002) es una plataforma cliente-servidor, donde las
aplicaciones se componen de hebras concurrentes que
ARIA contiene comportamientos básicos como la na-
se comunican por memoria compartida. CARMEN
vegación segura, sin chocar contra los obstáculos. Pe-
(Montemerlo et al., 2003) es un conjunto de herra-
ro no incluye funcionalidad común como la construc-
mientas que facilitan la construcción de aplicaciones
ción de mapas o la localización, que se venden por
distribuidas reutilizando módulos existentes de nave-
separado. Por ejemplo, ActivMedia vende el paquete
gación, construcción de mapas y localización.
MAPPER para la construcción de mapas, ARNL (Robot
Navigation and Localization) para la navegación y
Aplicación C++
localización, y ACTS (Color-Tracking Software) para
la identificación de objetos por color y su seguimiento. OPEN−R

APERTOS
Miro Miro 9 (Utz et al., 2002) es una plataforma
basada en objetos distribuidos para la creación de apli-
caciones para robots, desarrollada en la Universidad
de Ulm y publicada bajo licencia GPL. En cuanto a la
distribución de objetos, Miro sigue el estándard COR-
BA, empleando la implementación TAO de CORBA,
ası́ como la librerı́a ACE.
Miro consta de tres niveles: una capa de dispositivos,
una capa de servicios y el entorno de clases. La ca-
pa de dispositivos (Miro Device Layer) proporciona
interfaces en forma de objetos para todos los dispo- Figura 6. Arquitectura de software para el Aibo
sitivos del robot. Es decir, sus sensores y actuadores
se acceden a través de los métodos de ciertos objetos,
que dependen de la plataforma fı́sica. Por ejemplo, la 5. ENTORNOS DE PROGRAMACIÓN
clase RangeSensor define una interfaz para sen-
sores como los sónares, infrarrojos o láser. La cla- Dentro del mercado de robots móviles hay varios
se DifferentialMotion contiene métodos para proveedores mayoritarios a nivel mundial: ActivMe-
desplazar un robot con tracción diferencial. La capa dia 10 , iRobot, Robosoft 11 , K-Team 12 , Sony, LEGO,
de servicios (Miro Services Layer) proporciona des- etc. Cada uno de estos fabricantes incluye un entorno
cripciones de los sensores y actuadores como servicios de programación para sus robots, y lo actualizan a
especificados en forma de CORBA IDL (Interface medida que surgen nuevos diseños o dispositivos. Por
Definition Language). De esta manera su funcionali- ejemplo, ActivMedia comercializa los robots Pioneer,
dad se hace accesible remotamente desde objetos que AmigoBot, etc.; para los cuales están los entornos
residen en otras máquinas interconectadas a la red, in- Saphira y ARIA. iRobot comercializaba los robots
dependientemente de su sistema operativo subyacente. B21, Magellan, etc.; que utilizaban los entornos RAI,
El entorno de clases (Miro Class Framework) contiene Beesoft, y recientemente Mobility. K-Team comercia-
herramientas para la visualización y la generación de liza los robots Khepera y Koala, ası́ como sus platafor-
históricos, ası́ como módulos con funcionalidad de mas de programación y simulación. En esta sección
uso común en aplicaciones robóticas, como la cons- vamos a analizar aquellos en los que tenemos expe-
trucción de mapas, la planificación de caminos o la riencia más directa. Todos ellos confirman la organi-
generación de comportamientos. zación del software de robots en tres niveles diferen-
Dentro de Miro la aplicación robótica tiene la forma ciados: sistema operativo, plataforma y aplicaciones.
de una colección de objetos, remotos o locales. Ca-
da uno ejecuta en su máquina y se comunican entre
sı́ a través de la infraestructura de la plataforma. Los 5.1 Aibo de Sony
objetos se pueden escribir en cualquier lenguaje que
soporte el estándar CORBA, ya que Miro no impone El robot Aibo (figura 6) se vende como mascota, con
ninguno en concreto, aunque ha sido enteramente es- un programa que gobierna su comportamiento para
crita en C++.
10 http://www.activmedia.com
11 http://www.robosoft.fr/
9 http://smart.informatk.uni-ulm.de/MIRO 12 http://www.k-team.com/
Robot Procesador Sistema Operativo Plataforma Simulador
LEGO RCX micro Hitachi BrickOS no legosim webots
Sony Aibo RISC Aperios Open-R webots
ActivMedia Pioneer micro + laptop Linux/MS-Windows ARIA Saphira JDE PSG PSG SRIsim JMR
iRobot (aka RWI) B21 PCs Linux Mobility CARMEN Miro PSG
EyeBot micro Motorola ROBIOS librerı́as EyeSim
K-Team Kephera y Koala micro Motorola KT BIOS SysQuake Korebot webots
Robuter micro Linux/MS-Windows librerı́as no
Nomad PC Linux librerı́as no
ER1 PC Linux/MS-Windows ERSP -
Cuadro 1. Tabla resumen de robots y sus entornos de programación

exhibir conductas de perro (seguir pelota, buscar hue- con 32 KB de memoria RAM, sobre el que se ejecu-
so, bailar, etc.) y le permite incluso aprender con el ta un sistema operativo propio de LEGO (Ferrari et
tiempo. Desde el verano del año 2002 se abrió la al., 2001).
posibilidad de programarlo, disparándose su uso co-
mo plataforma de investigación. El robot tiene como Aplicación C
sensores principales una cámara situada en la cabeza, BrickOS
distintos sensores de contacto (apoyo en las patas, en drivers

la cabeza y lomo) y odometrı́a en cada una de sus


articulaciones. Como actuadores principales tiene las
patas, el cuello y la cola.
El sistema operativo que regula los dispositivos hard-
ware del Aibo es Aperios 13 , un sistema operativo
de tiempo real basado en objetos. Sobre este siste-
ma, Sony incluye la plataforma OPEN-R, que incor-
pora varios objetos especı́ficos, los cuales establecen
una interfaz de acceso al hardware del robot. Exis-
ten objetos para el acceso básico a las imágenes y
Figura 7. Arquitectura de software para el robot LEGO
las articulaciones (objeto OVirtualRobotComm),
para el manejo de la pila TCP/IP (objeto ANT) Hay varias alternativas para programarlo, y todas uti-
y para el manejo del altavoz y micrófono (objeto lizan el PC como entorno de desarrollo, descargando
OVirtualRobotAudioComm). el programa en el RCX a través del enlace de infra-
OPEN-R obliga a que la aplicación se escriba en rrojos que posee (por puerto serie o USB). LEGO
C++, y su arquitectura software hace que consista en ofrece un entorno visual de programación orientado
uno o varios objetos, que utilizan los servicios de los a los niños, llamado RCX-code, que ya describimos
objetos básicos y que pueden intercambiarse datos en la seccion 2. estructuras de control (condicionales,
entre sı́ (Martı́n et al., 2004; Serra and Baillie, 2003). bucles, etc.). Otro entorno gráfico con el que se puede
Adicionalmente, OPEN-R permite la multitarea y la programar es Robolab 14 , una adaptación de LabView,
programación orientada a eventos. de National Instruments. Una posibilidad más de pro-
gramación es el lenguaje NQC, creado por Dave Baum
Para programar al Aibo se utiliza el PC como entorno (Baum, 2000). Este lenguaje textual es una variante re-
de desarrollo y un compilador cruzado para el proce- cortada de C que dispone de instrucciones propias para
sador RISC. El programa generado se escribe desde el el acceso a sensores y actuadores. Tanto los programas
PC en una barra de memoria (memory stick), y ésta se en RCX-code como en NQC se compilan a código
inserta en el propio perro para su ejecución a bordo. intermedio que se interpreta en tiempo de ejecución
en el propio ladrillo.
Debido a la popularidad de este robot, algunos aficio-
5.2 RCX de LEGO
nados han desarrollado sistemas operativos alternati-
vos que reemplazan al nativo de LEGO y exprimen
Este robot (figura 7) se vende como juguete creativo y
mejor las posibilidades del hardware. El sistema ope-
plataforma educativa. Está compuesto por un procesa-
rativo libre BrickOS 15 16 , desarrollado por Markus
dor central (el ladrillo RCX) y un conjunto de piezas
L. Noga (Nielsson, 2000), permite la programación
LEGO que se ensamblan mecánicamente para montar
del ladrillo en lenguaje C. En este caso, el compilador
el cuerpo. Entre los sensores, que se conectan como
cruzado genera código no interpretado, que ejecuta
piezas LEGO, los hay de luz, de choque, de rotación,
directamente sobre el micro, por lo que se gana en
etc. Los actuadores son principalmente motores. El
procesador es un micro Hitachi H8/3297 de 8 bits,
14 http://www.ni.com/company/robolab.htm
15 http://brickos.sourceforge.net/
13 Antes conocido como Apertos, y previamente como Muse 16 antes conocido como LegOS
eficiencia temporal. Del mismo modo, el sistema ope- El fabricante incluye el simulador SRIsim acom-
rativo LeJOS 17 permite la creación de aplicaciones en pañando a ARIA. Este simulador bidimensional per-
JAVA. Todos estos sistemas operativos, incluyendo al mite emular un único Pioneer en un entorno estático
original de LEGO, ofrecen la capacidad de multitarea. y sus sensores más comunes: odometrı́a, sónares y
láser. Recientemente han incorporado a su software
En todos los casos el entorno de programación es muy
el simulador Stage de PSG, renombrándolo como
básico, de sistema operativo. Como es un robot muy
MobileSim, y programando un recubrimiento para
limitado en cuanto a número y calidad de sensores y
que funcione con el código ya existente de ARIA. Esto
de actuadores, los comportamientos generables con él
es un ejemplo nı́tido, a nivel de empresa, de reutiliza-
tienden a ser sencillos. Por eso no es necesaria una
ción de código en aplicaciones de robots, favorecido
plataforma de desarrollo y las aplicaciones se pueden
porque Stage es software libre.
hacer sin problemas programando directamente sobre
la API del sistema operativo.

5.3 Pioneer de ActivMedia 6. PERSPECTIVAS

El robot Pioneer es un robot de tamaño mediano, El mercado de los robots móviles tiene actualmente
según se aprecia en la figura 8, con 26 cm de radio una pujanza creciente, cada vez hay más movimientos
y 22 cm de alto. Consta de una base móvil con un empresariales alrededor de la robótica. Los robots
par de motores, sensores de ultrasonido, odómetros Aibo y LEGO son sólo dos ejemplos de éxitos de
y opcionalmente, sensores de contacto y sensor láser ventas, superando cada uno las cien mil unidades
de proximidad. Tiene un microcontrolador que se en- vendidas.
carga de recoger las medidas sensoriales y enviar las
órdenes de movimiento a los motores, además de es- Además, los prototipos de investigación cada vez tie-
tar gobernado por un sistema operativo de bajo nivel nen mayor funcionalidad, dejando de utilizarse exclu-
(P2OS o AROS, según modelos). En cuanto a la arqui- sivamente en fábricas y aproximando su uso al hogar
tectura de procesadores, el montaje más frecuente del como robots de entretenimiento o de servicio.
Pioneer incorpora un ordenador portátil a bordo, en el Con el paso de los años, el modo de programar los
que se ejecutan las aplicaciones, y en él un sistema robots ha ido evolucionando y se ha ido articulando
operativo generalista como Linux. Las aplicaciones en tres niveles diferenciados: sistemas operativos, pla-
dialogan con el microcontrolador a través del puerto taformas de desarrollo y aplicaciones concretas. En la
serie utilizando un protocolo propio llamado SIP. sección 5 hemos descrito el entorno de programación
de tres robots reales muy difundidos: Aibo, RCX y
Aplicación C++ Pioneer. En todos ellos hemos encontrado esos tres
ARIA niveles de software.
Linux / MS−Windows Otra tendencia confirmada es la extensión del ordena-
P2OS / AROS dor personal (bien PC de sobremesa, bien PC portátil)
como procesador principal de los robots. Más allá de
los sistemas operativos dedicados, esta incorporación
ha traı́do la irrupción en los robots de sistemas ope-
rativos generalistas, como Linux o MS-Windows, y
el uso creciente de lenguajes de alto nivel con sus
herramientas asociadas.
También hemos identificado varias lı́neas comunes en-
tre plataformas: uniforman y simplifican el acceso al
hardware, ofrecen una arquitectura software determi-
nada e incorporan funcionalidad robótica común como
la navegación, la construcción de mapas o la localiza-
ción. A grandes rasgos, las plataformas tratan de fijar
Figura 8. Arquitectura de software para el Pioneer una base estable sobre la cual desarrollar aplicaciones
robóticas, y eso supone un paso hacia la madurez
Para crear aplicaciones se dispone de la plataforma de la programación de robots. Primero, favorecen la
ARIA, publicada con licencia GPL. Como hemos des- portabilidad de aplicaciones entre robots diferentes.
crito profusamente en la sección 4.5, esta plataforma Segundo, fomentan la reutilización de código, con
establece una interfaz abstracta de acceso al hardware lo cual disminuyen los tiempos de desarrollo de las
y una arquitectura software orientada a objetos para nuevas aplicaciones. Y tercero, con su arquitectura
las aplicaciones (forzosamente escritas en C++). software ofrecen una manera de organizar el código,
lo cual permite afrontar la complejidad creciente de
17 http://lejos.sourceforge.net/ las aplicaciones de robots.
Hemos presentado una muestra representativa tanto de Hattig, Myron, Ian Horswill and Jim Butler (2003).
las de software libre (ARIA, PSG, Miro) como de las Roadmap for mobile robot specifications. In:
propietarias (ERSP, OPEN-R). Habrá que ver cuáles Proceedings of the 2003 IEEE/RSJ Internatio-
sobreviven de aquı́ a unos años, y eso dependerá enor- nal Conference on Intelligent Robots and Systems
memente de cuantos usuarios y desarrolladores sean (IROS-03). Vol. 3. Las Vegas (USA). pp. 2410–
capaces de atraer cada una de ellas. 2414.
Lozano Ortega, Miguel Ángel, Ignacio Iborra Baeza
La aparición de las plataformas de desarrollo supone
and Domingo Gallardo López (2001). Entorno
un relevante paso hacia adelante en el largo camino de
Java para simulación y control de robots móviles.
la programación de robots. Sin embargo, aunque la ne-
In: Actas de la IX Conferencia de la Asociación
cesidad de estándares en robótica ha sido identificada
Española Para la Inteligencia Artificial, CAEPIA
por muchos autores, en la actualidad existen muchas
2001. Gijón. pp. 1249–1258.
plataformas diferentes, tal vez demasiadas, reflejo de
Martı́n, Francisco, Rafaela González-Careaga,
que no hay aún un estándar universalmente admitido.
José M. Cañas and Vicente Matellán (2004). Pro-
gramming model based on concurrent objects for
7. REFERENCES the AIBO robot. In: Proceedings of the XII Jor-
nadas de Concurrencia y Sistemas Distribuidos.
ActivMedia (2002). ARIA reference manual. Techni-
pp. 367–379.
cal Report version 1.1.10. ActivMedia Robotics.
Montemerlo, Michael, Nicholas Roy and Sebastian
Baum, Dave (2000). Dave Baum’s definitive guide to
Thrun (2003). Perspectives on standardization in
LEGO MINDSTORMS. APress.
mobile robot programming: the carnegie mellon
Biggs, Geoffrey and Bruce MacDonald (2003). A sur-
navigation (CARMEN) toolkit. In: Proceedings
vey of robot programming systems. In: Procee-
of the 2003 IEEE/RSJ International Conference
dings of the 2003 Australasian Conference on
on Intelligent Robots and Systems (IROS-03).
Robotics and Automation (Jonathan Roberts and
Vol. 3. Las Vegas (USA). pp. 2436–2441.
Gordon Wyeth, Eds.).
Bruyninckx, Herman (2001). Open robot control soft- Nielsson, Stig (2000). Introduction to the LegOS ker-
ware: the OROCOS project. In: Proceedings of nel. Technical report.
the 2001 IEEE/RSJ International Conference on RWI, Real World Interface (1999). Mobility Robot In-
Intelligent Robots and Systems (IROS-01). Vol. 3. tegration software, User’s guide. Technical Re-
Seoul (Korea). pp. 2523–2528. port version 1.1. IS Robotics, Inc.
Bräunl, Thomas (2003). Embedded robotics. Springer Serra, Francois and Jean-Christophe Baillie (2003).
Verlag. Aibo programming using OPEN-R SDK. tutorial.
Cañas, José M. and Vicente Matellán (2002). Dynamic Technical report. ENSTA (Francia).
schema hierarchies for an autonomous robot. In: Simmons, Reid and David Apfelbaum (1998). A Task
Advances in Artificial Intelligence - IBERAMIA Description Language for robot control. In: Pro-
2002 (José C. Riquelme y Miguel Toro Francisco ceedings of the 1998 IEEE/RSJ International
J. Garijo, Ed.). Vol. 2527 of Lecture notes in Conference on Intelligent Robots and Systems
artificial intelligence. pp. 903–912. Springer. (IROS-98). Vol. 3. Victoria (Canada). pp. 1931–
Côté, Carle, Dominic Létourneau, François Michaud, 1937.
Jean-Marc Valin, Yannick Brosseau, Clément Sony (2003). OPEN-R SDK, Programmer’s guide.
Raı̈evsky, Mathieu Lemay and Victor Tran Technical Report 20030201-E-003. Sony Corpo-
(2004). Code reusability tools for programming ration.
mobile robots. In: Proceedings of the 2004 Utz, Hans, Stefan Sablatnög, Stefan Enderle and Ger-
IEEE/RSJ International Conference on Intelli- hard Kraetzschmar (2002). Miro – middleware
gent Robots and Systems (IROS-04). Sendai (Ja- for mobile robot applications. IEEE Transactions
pan). on Robotics and Automation, Special Issue on
Ferrari, Mario, Giulio Ferrari and Ralph Hempel Object-Oriented Distributed Control Architectu-
(2001). Building robots with LEGO MINDS- res 18(4), 493–497.
TORMS: The Ultimate Tool for Mindstorms Ma- Vaughan, Richard T., Brian P. Gerkey and Andrew Ho-
niacs. Syngress. ward (2003). On device abstractions for porta-
Firby, R. James (1994). Task networks for controlling ble, reusable robot code. In: Proceedings of the
continuous processes. In: Proceedings of the 2nd 2003 IEEE/RSJ International Conference on In-
International Conference on AI Planning Sys- telligent Robots and Systems (IROS-03). Vol. 3.
tems AIPS’94. Chicago, IL (USA). pp. 49–54. Las Vegas (USA). pp. 2121–2127.
Gerkey, Brian P., Richard T. Vaughan and Andrew Ho- Woo, Evan, Bruce A. MacDonald and Félix Trépa-
ward (2003). The Player/Stage project: tools for nier (2003). Distributed mobile robot applica-
multi-robot and distributed sensor systems. In: tion infraestructure. In: Proceedings of the 2003
Proceedings of the 11th International Conferen- IEEE/RSJ International Conference on Intelli-
ce on Advanced Robotics ICAR’2003. Coimbra gent Robots and Systems (IROS-03). Vol. 2. Las
(Portugal). pp. 317–323. Vegas (USA). pp. 1475–1480.

You might also like