SlideShare una empresa de Scribd logo
1 de 42
Descargar para leer sin conexión
Programaci´n de robots m´viles
                          o             o
                           Jos´ Mar´ Ca˜as Plaza
                              e     ıa   n
                         Universidad Rey Juan Carlos
                                2 de agosto de 2004


                                       Resumen
          El comportamiento de un robot aut´nomo viene determinado por el pro-
                                               o
      grama que gobierna sus actuaciones. La creaci´n de programas para ro-
                                                          o
      bots debe cumplir con ciertos requisitos espec´ ıficos frente a la programaci´n
                                                                                   o
      en otros entornos m´s tradicionales, como el ordenador personal. En este
                             a
      art´
         ıculo planteamos que el software de los robots se estructura actualmente
      en tres niveles: sistema operativo, plataforma de desarrollo y aplicaciones
      concretas. En los ultimos a˜os, han surgido con fuerza plataformas de de-
                         ´          n
      sarrollo con la idea de facilitar la construcci´n incremental de estas aplica-
                                                     o
      ciones rob´ticas. M´s all´ del acceso b´sico a los sensores y actuadores, las
                 o         a    a              a
      plataformas suelen proporcionar un modelo para la organizaci´n del c´digo
                                                                        o       o
      y bibliotecas con funcionalidades comunes. En este art´     ıculo se identifican
      y analizan esos tres niveles, describiendo desde esta perspectiva los entor-
      nos de desarrollo de los robots reales m´s extendidos, y las tendencias m´s
                                                 a                                 a
      recientes.


´
Indice
1. Introducci´n
             o                                                                                               2

2. Software de robots                                                                                         4
   2.1. Requisitos . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .    5
   2.2. Sistemas operativos, plataformas y aplicaciones          .   .   .   .   .   .   .   .   .   .   .    7
   2.3. Herramientas . . . . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .    8
   2.4. Lenguajes . . . . . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   10

3. Sistemas operativos                                                          12
   3.1. Sistemas operativos dedicados y generalistas . . . . . . . . . . . . . 12
   3.2. Procesadores, sensores y actuadores . . . . . . . . . . . . . . . . . . 15

                                            1
´
1 INTRODUCCION                                                                                                                   2


4. Plataformas de desarrollo                                                                                                    17
   4.1. Abstracci´n del hardware . . .
                 o                          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
   4.2. Arquitectura software . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
   4.3. Funcionalidades de uso com´nu       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
   4.4. Arquitectura cognitiva . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
   4.5. Plataformas de software libre       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25

5. Entornos de programaci´n   o     de    robots                                                                                29
   5.1. Aibo de Sony . . . . . .    . .   . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   30
   5.2. RCX de LEGO . . . . .       . .   . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
   5.3. Pioneer de ActivMedia .     . .   . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
   5.4. B21 de iRobot . . . . . .   . .   . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   34

6. Conclusiones y perspectivas                                                                                                  36


1.     Introducci´n
                 o
    El principal objetivo de la rob´tica es la construcci´n de m´quinas capaces
                                       o                      o       a
de realizar tareas con la flexibilidad, la robustez y la eficiencia que exhiben los
humanos. Los robots son potencialmente utiles en escenarios peligrosos para el ser
                                             ´
humano, aburridos, sucios o dif´   ıciles. En este sentido los brazos rob´ticos que se
                                                                          o
emplean en las f´bricas de coches para soldar y pintar, los robots m´viles que se
                 a                                                        o
env´ a Marte, o los que se utilizan para limpiar centrales nucleares son varios
    ıan
ejemplos de aplicaciones reales en las cuales se utilizan robots hoy d´  ıa.
    Hay muchos tipos de robots: con ruedas, con patas, brazos manipuladores, con
orugas, de forma humanoide, de forma cil´     ındrica, etc. Sin embargo, la morfolog´
                                                                                    ıa
no es una caracter´ıstica esencial, lo que identifica a cualquier robot es que combina
en la misma plataforma a sensores, actuadores y procesadores. Los sensores miden
alguna caracter´ıstica del entorno o propia (e.g. c´maras, sensores de obst´culos,
                                                      a                         a
etc.). Los actuadores permiten al robot hacer algo, llevar a cabo alguna acci´n o o
simplemente desplazarse (e.g. los motores). Los procesadores hacen los c´mputos
                                                                              o
necesarios y realizan el enlace l´gico entre sensores y actuadores, materializando
                                  o
el comportamiento del robot en el entorno en el cual se encuentra inmerso.

Generar comportamiento es programar
    La existencia de robots que realicen aut´nomamente tareas de modo eficiente
                                            o
depende fundamentalmente de su construcci´n mec´nica y de su programaci´n.
                                              o      a                          o
Una vez construido el cuerpo mec´nico del robot, conseguir que realice una tarea
                                    a
se convierte en la pr´ctica en un problema de programaci´n. La generaci´n de com-
                     a                                    o             o
portamiento en un robot consiste entonces en escribir el programa que al ejecutarse
´
1 INTRODUCCION                                                                                3


en el robot causa ese comportamiento cuando ´ste se encuentra en cierto entorno.
                                              e
La autonom´ y la “inteligencia” residen en ese programa. Por ejemplo, en los ro-
             ıa
bots m´viles el comportamiento principal es su movimiento. Los programas que se
        o
ejecutan en el robot determinan c´mo se mueve ´ste por el entorno, reaccionando
                                  o             e
ante obst´culos percibidos por los sensores, acerc´ndose a alg´n destino, etc. y
          a                                       a            u
para ello tienen que enviar continuamente las ´rdenes pertinentes a los motores.
                                              o

El mercado de los robots y la autonom´
                                     ıa
    Muchos de los robots que se venden en la actualidad se compran como produc-
tos cerrados, programados por el fabricante e inalterables, por ejemplo la aspira-
dora rob´tica Roomba de iRobot1 o el perrito Aibo2 de Sony en sus inicios3 . En
         o
contraste, otra parte relevante del mercado son los robots programables. Los prin-
cipales clientes de estos robots son los centros de investigaci´n, que normalmente
                                                                o
est´n interesados en programarlos ellos mismos. En estos casos, el fabricante vende
   a
los robots con un software que permite su programaci´n por el usuario.
                                                           o
    La tendencia actual del mercado de robots es de crecimiento real: cada vez
son m´s los productos rob´ticos que se venden y m´s frecuentes los movimientos
       a                    o                            a
empresariales alrededor de la tecnolog´ rob´tica. Por ejemplo, recientemente Sony
                                        ıa     o
compr´ la licencia del software de visi´n a la peque˜a empresa Evolution Robotics4 ,
       o                               o               n
para usarla en sus robots. Los robots de LEGO como juguetes imaginativos y
los perritos Aibo vendidos como mascotas son ´xitos de ventas significativos, con
                                                     e
centenares de miles de unidades cada uno.
    Aunque est´ en v´ de consolidaci´n, en t´rminos generales el mercado de los
                a     ıas                o         e
robots m´viles est´ inmaduro y todav´ no se ha abierto al gran p´blico. Esto
          o         a                     ıa                             u
se debe en parte a la fragilidad de los resultados (sobre todo comparados con las
expectativas) y las limitaciones en autonom´ que tienen los robots conseguidos
                                                 ıa
hasta la fecha. De hecho, el grado de autonom´ y de fiabilidad que seamos capaces
                                                  ıa
de conseguir en los robots ser´ una cuesti´n determinante en la evoluci´n futura
                                a             o                            o
de ese mercado. El crecimiento en autonom´ abre la puerta a nuevas aplicaciones
                                               ıa
comerciales rob´ticas, como los robots de servicio y los de entretenimiento. Avances
                 o
recientes en esta l´
                   ınea son los ya mencionados de la aspiradora rob´tica Roomba
                                                                       o
y la mascota Aibo.
    Sin embargo la autonom´ es dif´
                              ıa       ıcil, y salvo casos contados, el desarrollo de
aplicaciones con robots sigue siendo materia de investigaci´n. Al d´ de hoy, los
                                                               o       ıa
proveedores de robots hacen negocio vendiendo los componentes hardware (pla-
   1
     http://www.irobot.com
   2
     http://www.aibo-europe.com
   3
     En el verano de 2002 Sony hizo p´blica la interfaz de programaci´n de sus perritos, Open-R,
                                     u                               o
en parte forzados por un hacker que hab´ conseguido desvelar algunas de sus interfaces
                                         ıa
   4
     http://www.evolution.com/
2 SOFTWARE DE ROBOTS                                                                 4


taformas f´ısicas, motores, sensores, etc.) y con algunas soluciones a medida para
clientes espec´ıficos. Tambi´n venden el software de desarrollo, m´s o menos com-
                            e                                       a
pleto, e incluso algunas aplicaciones de ejemplo sencillas y/o m´s maduras, como
                                                                  a
la construcci´n de mapas o el seguimiento de personas.
              o
    Este art´
            ıculo est´ organizado en seis partes contando con esta introducci´n.
                      a                                                          o
En la segunda secci´n se rese˜an las peculiaridades que tiene la programaci´n de
                     o        n                                               o
robots y se presentan los tres niveles identificados en ese software, la evoluci´n o
hist´rica que ha desembocado en ellos y las tendencias actuales. En la tercera
    o
secci´n se describe el nivel m´s bajo: el hardware que conforma t´
     o                         a                                    ıpicamente un
robot y los sistemas operativos que permiten acceder a ´l, repasando dos ejemplos
                                                       e
concretos (ROBIOS y Linux). En el cuarto apartado se detallan las caracter´  ısticas
principales de las plataformas de desarrollo que han aparecido en los ultimos a˜os
                                                                      ´          n
y se analizan varios ejemplos particulares. A modo de ilustraci´n, en la quinta
                                                                 o
secci´n se describen con cierto detalle los entornos de programaci´n de cuatro
     o                                                               o
robots comerciales muy difundidos (LEGO, Aibo, Pioneer y B21) enmarc´ndolosa
en los tres niveles mencionados. Finalizamos con las conclusiones principales de
este trabajo.


2.     Software de robots
    En el manejo de robots conviene diferenciar entre el usuario final y el progra-
mador, pues el robot ofrece interfaces muy distintas a uno y a otro. El usuario es
quien aprovecha las aplicaciones que ha desarrollado el programador. Para ´l la in-
                                                                                e
terfaz de uso suele ser extremadamente sencilla, m´xime si el usuario es el p´blico
                                                      a                           u
en general. Por ejemplo, la interfaz de uso de la aspiradora Roomba es un simple
bot´n. Por el contrario, la interfaz de programaci´n requiere de ciertos conocimien-
    o                                               o
tos por parte del desarrollador, y su objetivo es permitir la creaci´n de programas
                                                                      o
para el robot. A lo largo de este art´ıculo se analizan las diferentes posibilidades de
programaci´n de los robots m´viles que se venden en la actualidad.
            o                   o
    En los ultimos a˜os los avances en aplicaciones de robots m´viles aut´nomos
            ´        n                                               o          o
han sido significativos. Hoy en d´ hay resultados fiables en aplicaciones como
                                    ıa,
la construcci´n de mapas, la navegaci´n autom´tica, la localizaci´n, la detecci´n
              o                           o        a                   o             o
de caras o el procesamiento de visi´n est´reo. Por ejemplo, en algunas f´bricas
                                        o     e                                 a
hay robots que se mueven solos de un punto a otro remoto sin chocar con ning´n       u
obst´culo, transportando piezas pesadas. La funcionalidad de los prototipos de in-
     a
vestigaci´n construidos es cada vez mayor: gu´ de museos, cuidadores de ancia-
          o                                      ıas
nos, etc. No hay magia: detr´s de esas aplicaciones hay programas que determinan
                              a
el comportamiento de esos robots, programas que han escrito los dise˜adores y que
                                                                         n
consiguen que el robot se mueva como lo hace.
    A la hora de crear esas aplicaciones, una primera separaci´n distingue a la
                                                                     o
2 SOFTWARE DE ROBOTS                                                              5


programaci´n autom´tica de la programaci´n manual [BM03]. En la programaci´n
             o        a                      o                                   o
autom´tica se engloban los sistemas con aprendizaje y la programaci´n basada en
       a                                                              o
demostraci´n. Este enfoque es posible en brazos industriales robotizados donde
             o
la ejecuci´n deseada es el recorrido por una secuencia de puntos, los cuales se
           o
pueden introducir en el robot simplemente conduciendo externamente al brazo
por las posiciones deseadas. Sin embargo en robots m´viles, con escenarios m´s
                                                        o                        a
variables, ese planteamiento es inviable y normalmente el dise˜ador escribe a mano
                                                              n
el programa que determina su comportamiento.
     Entre los programadores de robots m´viles figuran los propios fabricantes (co-
                                           o
mo Sony, ActivMedia, iRobot, etc.), algunas empresas dedicadas (como Evolution
Robotics), y los centros de investigaci´n. Gran parte del software existente hoy
                                         o
d´ para robots ha sido desarrollado por grupos de investigaci´n, lo cual est´ en
  ıa                                                            o              a
consonancia con la inmadurez ya comentada del mercado rob´tico. Afortunada-
                                                                o
mente ese software suele estar disponible libremente en Internet, reflejo del deseo
de difusi´n del conocimiento en esos grupos.
         o

2.1.    Requisitos
    Escribir programas para robots es una tarea complicada, porque los robots son
sistemas complejos. De hecho, la programaci´n de robots m´viles suele ser m´s
                                                o                o                a
exigente que la creaci´n de programas tradicionales como aplicaciones de ofim´tica,
                        o                                                     a
bases de datos, etc. En esta secci´n enumeramos algunos condicionantes espec´
                                   o                                           ıficos
diferenciadores.
    En primer lugar, los programas de robots m´viles est´n empotrados en la rea-
                                                  o        a
lidad f´
       ısica, a trav´s de sensores y actuadores. Con los sensores miden alguna
                      e
caracter´ıstica de la realidad y con los actuadores pueden provocar cambios en ella.
Por un lado, esta situaci´n implica que el software de robots m´viles debe ser
                             o                                       o
a
´gil, pues debe tomar decisiones con vivacidad para controlar correctamente cier-
tos actuadores. Por lo tanto se tienen requisitos de tiempo real, si no estricto, al
menos blando. Por otro lado, hay una enorme variedad de dispositivos sensoriales
y de actuaci´n, as´ como de interfaces, que un programador debe dominar si quiere
              o     ı
escribir programas para robots.
    En segundo lugar, una aplicaci´n de robots m´viles t´
                                      o               o      ıpicamente ha de estar
pendiente de varias fuentes de actividad y objetivos a la vez. El programa de un
robot tiene que atender a muchas cosas simult´neamente: recoger nuevos datos
                                                   a
de varios sensores, refrescar la interfaz gr´fica, enviar peri´dicamente consignas
                                              a                o
a los motores, enviar o recibir datos por la red a otro proceso de la aplicaci´n,o
etc. Por ello las aplicaciones de robots suelen ser concurrentes, lo cual les a˜ade
                                                                               n
cierta complejidad. En este sentido los sistemas operativos de robots m´s avanza-
                                                                         a
dos incorporan mecanismos multitarea y de comunicaci´n interprocesos. Con ello
                                                          o
permiten la distribuci´n de las tareas en diferentes hebras que se ejecutan con-
                          o
2 SOFTWARE DE ROBOTS                                                               6


currentemente y una programaci´n modular que se adapta a la naturaleza de las
                                    o
aplicaciones de robots mejor que la estrictamente secuencial.
     Tercero, otra cuesti´n relevante que deben contemplar las aplicaciones que co-
                         o
rren a bordo de los robots es su interfaz gr´fica. Aunque la interfaz gr´fica no
                                                 a                           a
es indispensable para generar y materializar el comportamiento aut´nomo en el
                                                                        o
robot, normalmente resulta muy util como herramienta de depuraci´n. Adem´s de
                                    ´                                 o         a
las posibilidades de interacci´n con el usuario, la interfaz gr´fica permite la visua-
                               o                               a
lizaci´n en tiempo de ejecuci´n de estructuras internas (e.g. representaciones del
       o                        o
mundo), las trazas y el an´lisis de variables internas del programa que pueden afec-
                            a
tar a la conducta observable del robot. El c´digo de la aplicaci´n deber´ encargarse
                                             o                   o      a
de actualizar esa interfaz y de atender la interacci´n por parte del usuario.
                                                      o
     Cuarto, el software de robots es cada vez m´s distribuido, tal y como apuntan
                                                    a
Woo et al.[WMT03]. Es usual que las aplicaciones de robots tengan que establecer
alguna comunicaci´n con otros procesos ejecutando en la misma o en diferente
                     o
m´quina. Para generar comportamiento en un unico robot esta distribuci´n no es
   a                                                ´                       o
imprescindible, pero ofrece posibilidades ventajosas como ubicar la carga compu-
tacional en nodos con mayor capacidad o la visualizaci´n remota; y en sistemas
                                                            o
multirrobot, hace posible la integraci´n sensorial, la centralizaci´n y la coordina-
                                        o                          o
ci´n. Por ejemplo, las comunicaciones permiten el acceso remoto a los sensores del
   o
robot, muy util en aplicaciones de teleoperaci´n. Esta distribuci´n implica que el
              ´                                   o                o
c´digo de la aplicaci´n debe encargarse de mantener la comunicaci´n por red con
  o                    o                                              o
los otros procesos remotos.
     En quinto lugar, las aplicaciones de robots no cuentan con un marco esta-
ble, no hay est´ndares abiertos que propicien la colaboraci´n [USEK02, MRT03,
                 a                                             o
CLM+ 04], la reutilizaci´n de c´digo y la integraci´n. En otros campos de la in-
                          o       o                    o
form´tica hay bibliotecas que un programador puede emplear para construir su
       a
propio programa, ganando en fiabilidad y acortando el tiempo de desarrollo. Por
el contrario, en rob´tica cada aplicaci´n pr´cticamente ha de construirse de cero
                      o                  o     a
para cada robot concreto. No hay una base s´lida y firme para el desarrollo de
                                                   o
nuevas aplicaciones. Esa falta se debe en parte a la heterogeneidad end´mica en
                                                                           e
rob´tica, tanto en hardware como en software, y en parte a la inmadurez del mer-
     o
cado de robots programables. En cualquier caso, esa ausencia est´ frenando las
                                                                      a
posibilidades de crecimiento del mercado rob´tico.
                                                 o
     En la actualidad hay avances hacia la estandarizaci´n, como las plataformas
                                                            o
de desarrollo que veremos en la secci´n 4. La aparici´n de esas plataformas supone
                                      o                 o
un paso m´s hacia la madurez, tratando de estabilizar una interfaz sobre la que
            a
construir aplicaciones de robots, pero queda a´n mucho camino por recorrer.
                                                  u
     En sexto lugar, y ligado con el condicionante anterior, el conocimiento sobre
c´mo generar y descomponer el comportamiento artificial es muy limitado. C´mo
  o                                                                              o
dividir el comportamiento de robots en unidades b´sicas sigue siendo materia de
                                                        a
2 SOFTWARE DE ROBOTS                                                                7


investigaci´n, y no hay una gu´ universalmente admitida sobre c´mo organizar el
           o                    ıa                                  o
c´digo de las aplicaciones de robots para que sea escalable y se puedan reutilizar sus
 o
partes. Cada desarrollador programa su aplicaci´n combinando ad hoc los bloques
                                                  o
de c´digo que puedan existir en su entorno.
    o

2.2.    Sistemas operativos, plataformas y aplicaciones
    El modo en que se programan los robots ha ido evolucionando con el paso de los
a˜os. Hist´ricamente los robots eran desarrollos unicos, no se produc´ en serie,
 n        o                                      ´                    ıan
y los programas de control se sol´ construir empleando directamente los drivers
                                 ıan
para acceder a los dispositivos sensoriales y de actuaci´n. El sistema operativo
                                                         o
era m´ınimo, b´sicamente una colecci´n de drivers con rutinas para leer datos de
               a                     o
los sensores y enviar consignas a los actuadores. En este contexto, el programa
de aplicaci´n le´ las medidas obtenidas por los sensores y escrib´ las ´rdenes
           o     ıa                                                ıa     o
de movimiento a los motores invocando directamente las funciones de librer´ que
                                                                            ıa
ofrec´ el fabricante en sus drivers. Como muestra la figura 1(a), en este caso la
     ıa
aplicaci´n se situaba directamente encima del sistema operativo.
        o


                                                          Aplicación

            Aplicación                             Plataforma
                                                   desarrollo

              drivers                                 Sistema Operativo




          Hardware del robot                            Hardware del robot

                  (a)                                          (b)


Figura 1: Programaci´n de robots: (a) sobre drivers espec´
                     o                                   ıficos de sensores y ac-
tuadores. (b) sobre una plataforma de desarrollo

    Con el asentamiento de los fabricantes, el trabajo de muchos grupos de investi-
gaci´n y la evoluci´n de los a˜os han ido apareciendo plataformas de desarrollo que
    o              o          n
simplifican la programaci´n de aplicaciones rob´ticas. Estas plataformas ofrecen
                           o                      o
acceso m´s sencillo a sensores y actuadores, suelen incluir un modelo de programa-
         a
ci´n que establece una determinada organizaci´n del software y permite manejar la
  o                                             o
2 SOFTWARE DE ROBOTS                                                              8


creciente complejidad del c´digo cuando se incrementa la funcionalidad del robot.
                            o
El dise˜ador programa sus aplicaciones rob´ticas finales sobre esa plataforma de
        n                                    o
desarrollo.
    Las aplicaciones suelen resolver un problema concreto e incluir t´cnicas es-
                                                                         e
pec´ıficas: de extracci´n de informaci´n, de toma de decisiones, etc. A la hora de
                      o               o
su programaci´n el usuario tiene hoy dos alternativas: la tradicional de programar
               o
directamente sobre el sistema operativo, y la m´s reciente de programar dentro
                                                  a
de la plataforma de desarrollo, utilizando sus abstracciones. La primera interfaz
suele ofrecer m´s flexibilidad, con el coste de mayor complejidad en la progra-
                 a
maci´n, pues es el propio programador de la aplicaci´n quien debe cuidar que su
      o                                               o
c´digo realice las tareas de las que se podr´ encargar la plataforma. La figura
 o                                            ıa
1(b) ilustra estas dos posibilidades. En ambos casos las aplicaciones se apoyan en
una infraestructura de programaci´n, bien sea b´sica como el sistema operativo, o
                                    o            a
m´s abstracta como la plataforma de desarrollo. En las secciones 3 y 4 se detallan
  a
ampliamente las caracter´ ısticas de ambas infraestructuras.

2.3.    Herramientas
    El procedimiento de creaci´n de aplicaciones para robots no difiere especial-
                               o
mente del de otras aplicaciones. El programador tiene que escribir la aplicaci´n  o
en cierto lenguaje, compilar y enlazar su c´digo con las librer´ de la plataforma
                                            o                   ıas
y/o del sistema operativo, y finalmente ejecutarla en los computadores a bordo
del robot. Esa ejecuci´n genera el comportamiento deseado cuando el robot se
                       o
encuentra en el entorno adecuado. Para todos estos pasos el dise˜ador cuenta con
                                                                    n
varias herramientas: editores para escribir el programa fuente en el lenguaje elegi-
do, compilador, simuladores, depuradores espec´  ıficos, compilador cruzado, etc.
    Muchos robots tienen recursos computacionales y de almacenamiento limitados:
carecen de disco duro, pantalla suficiente, etc. En estos casos se utiliza el PC como
entorno de desarrollo y se emplean compiladores cruzados para generar en el PC
el programa ejecutable que correr´ sobre el procesador a bordo del robot. Es el
                                   a
caso de la mayor´ de robots peque˜os, como el RCX de LEGO, Aibo de Sony,
                  ıa                 n
EyeBot5 , Kephera de K-Team6 , Pekee de Wany Robotics7 , etc.
    Una herramienta particular, muy util en la programaci´n de robots son los
                                       ´                    o
simuladores. Los simuladores ofrecen un entorno virtual en el que emulan las ob-
servaciones de los sensores y los efectos de las ´rdenes a los actuadores. Sirven
                                                 o
como evaluaci´n, depuraci´n y ajuste del programa de control antes de llevar la
               o          o
aplicaci´n al robot real.
        o
  5
    http://www.ee.uwa.edu.au/~braunl/eyebot
  6
    http://www.k-team.com
  7
    http://www.wanyrobotics.com
2 SOFTWARE DE ROBOTS                                                            9


    Los buenos robots no son baratos y necesitan mantenimiento. Los simuladores
son una opci´n econ´mica para quienes quieren investigar programando robots pe-
              o     o
ro no cuentan con el dinero o el material necesario. Esto se hace a´n m´s patente
                                                                   u    a
en el caso de investigar con poblaciones grandes de robots. Aunque actualmen-
te han perdido credibilidad como demostrador de resultados experimentales, los
simuladores no han perdido valor como herramienta util.
                                                      ´
    Los primeros simuladores eran poco realistas y almacenaban mundos planos
donde hab´ obst´culos bidimensionales. Con los a˜os se ha ido ganando en rea-
           ıa     a                                 n
lismo, incorporando ruido en los sensores y en las actuaciones. Hoy d´ se tienen
                                                                      ıa
simuladores tridimensionales, como Gazebo8 (en la figura 2(b) se puede observar
un mundo simulado con Gazebo) y JMR [LOIBGL01], capaces de simular senso-
res tan complejos como la visi´n. Tambi´n se ha incluido en los simuladores m´s
                              o          e                                     a
potentes la capacidad de representar un conjunto de robots operando en el mismo
escenario, simult´neamente.
                 a




                   (a)                                      (b)


             Figura 2: Simuladores de robots: (a) SRIsim c (b) Gazebo

    Muchos fabricantes de robots incluyen un simulador para sus robots (e.g.
EyeSim para el robot EyeBot, Webots para Kephera y Koala) aunque tambi´n        e
hay muchos desarrollos libres (Stage, Gazebo, JMR). Los simuladores libres tratan
de incluir soporte para los robots de varios fabricantes. La configuraci´n concreta
                                                                       o
de el/los robot/s a simular, la disposici´n y par´metros de sus sensores se suele
                                         o         a
especificar en un fichero de configuraci´n. Algunos simuladores relevantes son el
                                        o
SRIsim9 de Kurt Konolige, que se emplea en los robots de ActivMedia (en la fi-
gura 2(a) se puede ver un mundo simulado con SRIsim), los simuladores Stage y
  8
      http://playerstage.sourceforge.net
  9
      http://www.ai.sri.com/~konolige/saphira
2 SOFTWARE DE ROBOTS                                                              10


Gazebo de software libre orientados a multirrobot (Stage soporta 2D y colonias
numerosas de robots, y Gazebo soporta 3D). Tambi´n incluye visi´n y realidad
                                                    e             o
tridimensional el simulador JMR [LOIBGL01], que est´ escrito en Java.
                                                    a

2.4.    Lenguajes
    En cuanto a los lenguajes que se emplean para programar robots, no hay dife-
rencias significativas con los utilizados en otras aplicaciones m´s tradicionales. Si
                                                                  a
bien hay casos de programaci´n funcional y programaci´n l´gica de robots, sin nin-
                              o                          o o
guna duda los m´s utilizados son los lenguajes gen´ricos procedimentales. Normal-
                  a                                 e
mente los lenguajes utilizados son gen´ricos, es decir, se usan en otras aplicaciones
                                        e
inform´ticas, y la parte espec´
       a                      ıfica de rob´tica se encapsula en bibliotecas u objetos
                                          o
particulares. Tambi´n ha habido intentos de establecer lenguajes espec´
                     e                                                     ıficos para
robots, como Task Description Language (TDL) de Simmons [SA98] o Reactive
Action Packages (RAP) de Firby [Fir94], que tratan de incluir en la propia sin-
taxis del lenguaje primitivas ventajosas para la programaci´n de robots, como la
                                                               o
descomposici´n de tareas, la monitorizaci´n de ejecuci´n, la sincronizaci´n, etc.
              o                             o              o                  o
Estos lenguajes llevan asociada una sem´ntica que es una apuesta cognitiva sobre
                                          a
c´mo generar el comportamiento en los robots.
 o
    En los brazos robotizados industriales es frecuente el uso de lenguajes de ba-
jo nivel, pr´cticamente ensamblador [BM03] del microprocesador de turno. Por
            a
el contrario, en los robots m´viles quedan lejos los tiempos de programaci´n en
                               o                                                o
ensamblador para hacer un c´digo eficiente en extremo. La incorporaci´n creciente
                              o                                          o
del ordenador personal como procesador principal ha abierto el paso a toda suerte
de lenguajes de alto nivel. Hay robots programados con JAVA, con Python, con
C, con C++, Visual Basic, etc. Incluso para robots con microprocesadores suele
haber compiladores cruzados espec´   ıficos que permiten la programaci´n en lengua-
                                                                       o
jes de alto nivel. Por ejemplo, el robot EyeBot que incorpora el microcontrolador
Motorola 68332, se programa en C.
    Normalmente la plataforma de desarrollo suele determinar el lenguaje en el
que se escribe la aplicaci´n, pues se obliga a ello para reutilizar la funcionalidad
                          o
ya resuelta en la plataforma. Del mismo modo, un conjunto amplio de grupos de
investigaci´n realiza sus desarrollos en C/C++, y la reutilizaci´n e integraci´n
           o                                                        o              o
de su software es m´s sencilla en este lenguaje com´n. Tambi´n hay platafor-
                       a                                 u          e
mas que no imponen un lenguaje determinado a las aplicaciones. Por ejemplo, en
Player/Stage/Gazebo (PSG) [GVH03, VGH03] la funcionalidad se ofrece a trav´s       e
de mensajes de red a un servidor, la aplicaci´n puede estar escrita en cualquier
                                                o
lenguaje siempre que respete el protocolo, y existen librer´ hechas en C, C++,
                                                             ıas
Tcl, Python, Java y Common Lisp que encapsulan ese di´logo en el cliente. En
                                                              a
la plataforma Miro [USEK02] la funcionalidad se ofrece a trav´s de objetos COR-
                                                                 e
BA que exportan sus interfaces, las aplicaciones pueden escribirse en cualquier
2 SOFTWARE DE ROBOTS                                                             11


lenguaje en el que exista soporte para el estandard CORBA.
     Sin duda los lenguajes m´s utilizados en la programaci´n de robots son los
                               a                              o
basados en texto, por su flexibilidad y potencia expresiva. Sin embargo, un caso
curioso de lenguaje es el que incluye LEGO para que los ni˜os programen sus
                                                                n
robots RCX [BM03], c´digo-RCX, que es completamente visual. En c´digo-RCX un
                       o                                             o
programa consiste en una columna que se forma encadenando en secuencia bloques
gr´ficos que son instrucciones. Estas instrucciones son de espera, de actuaci´n,
   a                                                                             o
de suma a una variable, etc. Se incluyen bloques condicionales, con dos ramas
salientes, que hacen avanzar el flujo de programa por una de ellas, dependiendo
de alguna condici´n sensorial. Se pueden incluir varias columnas, a modo de hilos
                   o
de ejecuci´n concurrentes. Tambi´n se utiliza un lenguaje visual en los entornos
           o                      e
Robolab10 y RobotFlow/FlowDesigner [CLM+ 04], que permiten encadenar bloques
gr´ficos funcionales con entradas y salidas. El programa del robot se materializa
   a
en una red de bloques que configura un determinado flujo de la informaci´n desde
                                                                           o
los sensores a los actuadores.
     Un lenguaje que tuvo mucha presencia en los primeros a˜os de la rob´tica, y que
                                                            n           o
rezuma la influencia de los trabajos en Inteligencia Artificial es Lisp. Actualmente
uno de los lenguajes m´s extendidos para programar robots es C. Este lenguaje
                         a
supone un buen compromiso entre potencia expresiva y rapidez. Como lenguaje
compilado su eficiencia temporal es superior a otros lenguajes interpretados. Hasta
hace unos a˜os gran parte del software proporcionado por los fabricantes de robots
             n
estaba codificado en C, como las librer´ de Saphira [Act99] con que se vend´ los
                                      ıas                                    ıan
robots de Activmedia, o el entorno de desarrollo de los robots de RWI [RWI96].
Muchos robots peque˜os se programan en C, como el robot EyeBot [Br¨03] y
                       n                                                     a
el robot LEGO RCX, que se puede programar con una variante recortada de C
llamada NQC [Bau00].
     Recientemente se puede observar un crecimiento en los desarrollos y aplica-
ciones en C++. Por ejemplo, el entorno ARIA [Act02] para programar robots de
ActivMedia, el entorno OPEN-R [Son03a, Son03b] de programaci´n del perrito Ai-
                                                                  o
bo de Sony, la plataforma Miro [USEK02], la plataforma Mobility [RWI99], etc. El
principal avance sobre C es que proporciona la abstracci´n de orientaci´n objetos,
                                                         o              o
con los mecanismos de herencia y polimorfismo asociados. Potencialmente tambi´n    e
simplifica la reutilizaci´n de componentes. Una ventaja m´s es que la portabilidad
                        o                                  a
desde C a C++ es relativamente sencilla. Este crecimiento refleja la tendencia en
la programaci´n de robots a la orientaci´n a objetos, a encapsular la funcionalidad
               o                        o
en forma de objetos con m´todos que se pueden invocar.
                            e
 10
      http://www.ni.com/company/robolab.htm
3 SISTEMAS OPERATIVOS                                                                12


3.     Sistemas operativos
    Como hemos mencionado, la primera opci´n para el desarrollador de aplicacio-
                                                 o
nes rob´ticas consiste en escribir su c´digo sobre la funcionalidad que le proporcio-
         o                               o
na el sistema operativo de la computadora a bordo del robot. La misi´n principal
                                                                            o
de ese sistema operativo es ofrecer a los programas acceso b´sico al hardware del
                                                                  a
robot, permitir su manipulaci´n y uso desde los programas. Fundamentalmente
                                   o
debe permitir recoger lecturas de los sensores y enviar ´rdenes a los actuadores.
                                                              o
Para ´sto el sistema operativo incorpora drivers que dan soporte software de bajo
       e
nivel a los dispositivos f´
                          ısicos. Por ejemplo, en el B21 [RWI94] el kernel de Linux in-
corpora el driver de la tarjeta ISA a la que se conectan los sensores de ultrasonidos
(Access Bus Card ), y que permite al programa obtener sus medidas.
    Si el robot tiene hardware de comunicaciones, t´      ıpicamente inal´mbrico para
                                                                          a
mayor movilidad, el sistema operativo ofrece el soporte para utilizarlo desde el
programa de aplicaci´n. Por ejemplo, el perrito Aibo incorpora en sus ultimos
                        o                                                      ´
modelos una tarjeta wireless 802.11 para comunicaci´n inal´mbrica. Su sistema
                                                           o       a
operativo permite al programa el env´ y recepci´n de datos a trav´s de esa tarjeta,
                                         ıo          o                 e
implementando una pila de TCP/IP.
    En cuanto a la multitarea, el sistema operativo y las librer´ que los acom-
                                                                     ıas
pa˜an suele ofrecer la posibilidad de programar con distintos procesos y/o con
   n
varias hebras, ya sean con o sin desalojo. Tambi´n suele incluir mecanismos de co-
                                                     e
municaci´n interprocesos como la memoria compartida, las tuber´ (pipes), etc. y
           o                                                          ıas
recursos t´ ıpicos de concurrencia (como los sem´foros y los monitores) para la sin-
                                                   a
cronizaci´n, para evitar las condiciones de carrera y los interbloqueos, garantizar
           o
exclusi´n mutua, etc.
         o
    Los sistemas operativos y las librer´ que los acompa˜an suelen incluir tam-
                                            ıas                 n
bi´n soporte para los elementos de interacci´n del robot, ya sean botones f´
  e                                             o                                ısicos,
pantallas peque˜as, pantallas normales de ordenador, etc. Este soporte permite la
                  n
creaci´n de interfaces gr´ficas, lo que combinado con las comunicaciones, puede
       o                    a
facilitar la visualizaci´n remota en un ordenador externo.
                        o
    Adem´s de las interfaces de programaci´n, el sistema operativo de un robot
           a                                    o
ofrece siempre los medios para cargar distintos programas en ´l y ejecutarlos en los
                                                                  e
procesadores de a bordo. Esta funci´n es necesaria porque los robots programables,
                                       o
por su propia definici´n, no tienen un c´digo inalterable sino que pueden ejecutar
                        o                    o
diferentes programas.

3.1.    Sistemas operativos dedicados y generalistas
    En el mercado de robots m´viles programables gran parte de los robots pe-
                                 o
que˜os tienen su propio sistema operativo dedicado, muy ligado al procesador, a
    n
los sensores y a los actuadores concretos. El sistema operativo ROBIOS en el robot
3 SISTEMAS OPERATIVOS                                                                     13


EyeBot [Br¨03] (en la figura 3), Aperios en el Aibo (en la figura 7), o BrickOS11
             a
[Nie00] para el LEGO RCX (en la figura 8) son ejemplos relevantes.
    Con la irrupci´n de los ordenadores personales (port´tiles o no) como procesa-
                   o                                      a
dores principales en los robots, los sistemas operativos de prop´sito general como
                                                                  o
Linux o MS-Windows han entrado en el mundo de los robots. Estos sistemas,
adem´s de los drivers del hardware, incluyen abstracciones y un conjunto muy
      a
extenso de bibliotecas gen´ricas, que tambi´n son utiles para la programaci´n de
                           e                  e      ´                        o
robots. Por ejemplo, bibliotecas e interfaces para la multitarea, las comunicaciones
y las interfaces gr´ficas.
                   a




        Figura 3: Robot EyeBot en el corre el sistema operativo ROBIOS


ROBIOS
    ROBIOS es una muestra significativa de sistema operativo dedicado. El robot
EyeBot [Br¨03] es un robot de peque˜o tama˜o que viene equipado con un mi-
            a                           n        n
croprocesador Motorola 68332 a 35 MHz. Al robot se le conectan dos motores con
encoders, tres sensores de infrarrojos y una c´mara digital. Su hardware tambi´n
                                               a                                 e
incluye una peque˜a pantalla, cuatro botones y un radioenlace. El sistema ope-
                   n
rativo permite la carga de programas a trav´s de un puerto serie y su ejecuci´n
                                               e                                 o
pulsando los botones. Como acceso b´sico al hardware desde los programas, RO-
                                       a
BIOS incluye una API (Application Programming Interface) con funciones para
recoger las lecturas de los sensores de infrarrojos, para obtener las im´genes de la
                                                                        a
c´mara y para hacer girar los motores a cierta velocidad.
 a
    En cuanto a comunicaciones, ROBIOS incluye dos funciones que le permiten
enviar y recibir bytes a trav´s del radioenlace, a otros EyeBots o un PC que se
                              e
  11
    El sistema operativo libre para el RCX se llamaba inicialmente LegOS, posteriormente cam-
bi´ su nombre oficial a BrickOS
  o
3 SISTEMAS OPERATIVOS                                                            14


encuentren dentro del alcance radio de su antena. En cuanto a la interfaz gr´fica,
                                                                               a
ROBIOS incluye primitivas para muestrear si los botones est´n pulsados, pintar y
                                                               a
refrescar la pantalla.
    Con respecto a la multitarea, ROBIOS tiene primitivas para crear hebras, de-
tenerlas durante un tiempo, matarlas, etc. Adem´s ofrece dos modos de repartir el
                                                  a
tiempo de procesador entre ellas: con desalojo (en rodajas de tiempo) y sin desalojo
(con un testigo que va pas´ndose de una hebra a la siguiente). Correspondi´ndose
                           a                                                 e
a las hebras de kernel o de usuario t´ ıpicas de sistemas operativos tradicionales.
Tambi´n ofrece sem´foros para coordinar la ejecuci´n concurrente de esas hebras
       e             a                               o
y el acceso a variables compartidas.

GNU/Linux
     Un sistema operativo generalista que ha ganado gran aceptaci´n en la comuni-
                                                                  o
dad rob´tica es GNU/Linux [RWI99, GVH03, MRT03]. Este sistema es software
          o
libre y cuenta con una comunidad muy activa y amplia de desarrolladores, lo
cual garantiza en la pr´ctica la incorporaci´n al sistema del soporte de los nuevos
                        a                    o
dispositivos hardware que van ofreciendo los avances tecnol´gicos. Este sistema
                                                               o
operativo es muy potente y robusto, y ofrece sus servicios en forma de llamadas
al sistema y de funciones de biblioteca. Hay llamadas para crear procesos, hebras,
controlar su coordinaci´n, comunicaciones, etc. Adem´s incluye un amplio abanico
                        o                              a
de herramientas de desarrollo, como el compilador de C/C++ gcc, el editor emacs,
etc.
     Respecto a la multitarea, GNU/Linux incluye la biblioteca Pthreads como re-
ferencia para materializar las hebras de las aplicaciones. Este paquete genera he-
bras POSIX de kernel que se pueden comunicar a trav´s de memoria compartida.
                                                         e
GNU/Linux tambi´n ofrece sem´foros para controlar el acceso a esas variables
                    e              a
compartidas o resolver problemas de concurrencia que puedan aparecer. Estos me-
canismos se suman a los que ya ofrece GNU/Linux como creaci´n de procesos,
                                                                   o
tuber´ fifos, memoria mapeada, etc., que siempre est´n disponibles.
       ıas,                                                a
     En cuando a comunicaciones GNU/Linux ofrece los sockets para la comunica-
ci´n interm´quina entre varios programas, una abstracci´n que permite olvidarse
  o          a                                             o
de los detalles de red, protocolos 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 programador de la aplicaci´n no debe preocuparse de localizar la
                                            o
m´quina destino, ni modificar su c´digo cuando, por ejemplo, el robot se conecta
   a                                 o
a la red por ethernet en vez de red inal´mbrica.
                                         a
     GNU/Linux ofrece tambi´n las librer´ necesarias para crear y manejar inter-
                              e           ıas
faces gr´ficas en X-Window, que es el sistema m´s extendido en el mundo Unix.
          a                                       a
Encima de las librer´ b´sicas (Xlib y Xt-intrinsics), que son flexibles pero
                      ıas a
complejas, GNU/Linux dispone de varias librer´ que simplifican el manejo de
                                                  ıas
3 SISTEMAS OPERATIVOS                                                              15


la interfaz gr´fica, como Qt, XForms, GTK, etc. Una ventaja natural de las inter-
              a
faces en X-Window es la visualizaci´n remota: es muy sencillo que un programa
                                     o
ejecut´ndose en un ordenador GNU/Linux (e.g. el ordenador a bordo del robot)
      a
vuelque su interfaz gr´fica a otro ordenador GNU/Linux (e.g. el PC de trabajo del
                      a
programador).
    Una de las desventajas del uso de GNU/Linux en rob´tica es que no es un
                                                             o
sistema de tiempo real, pues no permite acotar plazos. No ofrece garant´ de plazos
                                                                       ıa
(tiempo real duro) porque su sistema de planificaci´n de procesos no implementa
                                                     o
esas garant´ En este sentido contrasta con sistemas operativos similares como
            ıas.
QNX, o la variante RT-Linux. Sin embargo, GNU/Linux resulta suficientemente
a
´gil para los requisitos de aplicaciones no cr´
                                              ıticas. Por ejemplo, permite detener
hebras durante milisegundos.

3.2.    Procesadores, sensores y actuadores
    El hardware de los robots consiste principalmente en un conjunto de procesa-
dores, sensores y actuadores, y puede incorporar tambi´n elementos de comuni-
                                                            e
caciones e interacci´n. Adem´s de ser muy heterog´neo, este hardware evoluciona
                     o          a                     e
r´pidamente, porque los avances tecnol´gicos proporcionan nuevos y mejores dis-
 a                                        o
positivos a un ritmo alto. Este dinamismo se contagia al software, que debe evo-
lucionar continuamente para asimilar el soporte a las prestaciones de los nuevos
dispositivos.
    En cuanto a sensores, la tendencia reciente m´s marcada es la incorporaci´n de
                                                   a                            o
la visi´n y del l´ser al equipamiento sensorial de los robots. En primer lugar, las
       o         a
c´maras son cada vez m´s frecuentes en los robots, tanto monoculares como pares
 a                        a
est´reo. Hasta ahora las m´s utilizadas eran anal´gicas, las cuales sol´ ser caras y
   e                        a                      o                    ıan
necesitaban de tarjetas capturadoras (Matrox, BTTV, etc.) con drivers espec´     ıficos
para digitalizar la imagen. En los ultimos a˜os la tecnolog´ ha proporcionado
                                      ´          n               ıa
c´maras digitales a un precio razonable (principalmente destinadas a aplicaciones
 a
multimedia), que se han introducido en los robots como otro sensor m´s. Las   a
prestaciones de esas c´maras siguen mejorando r´pidamente, hacia mayor calidad
                        a                           a
de imagen, mayor frecuencia, etc. Para dar soporte a estas c´maras y las anteriores
                                                               a
en Linux se ha estandarizado la interfaz video4linux. Tambi´n hay soporte para
                                                                  e
el bus IEEE-1394 (firewire), con el cual se pueden tener dos c´maras digitales
                                                                      a
capturando a 30 fps sin apenas consumo computacional. La principal dificultad
asociada a las c´maras es que resulta dif´ extraer informaci´n util del enorme
                 a                          ıcil                    o ´
flujo de datos que proporcionan. En segundo lugar, desde finales de los a˜os 90  n
se ha difundido enormemente el empleo del sensor l´ser (por ejemplo de la casa
                                                        a
SICK) como sensor de obst´culos en los robots de interiores. Este dispositivo mide
                              a
la distancia a obst´culos en un haz de 180o , con una resoluci´n de 1-2 cm y precisi´n
                   a                                          o                     o
inferior a 1 grado. El l´ser proporciona informaci´n muy precisa de obst´culos, con
                        a                          o                        a
3 SISTEMAS OPERATIVOS                                                             16


una interpretaci´n directa para la navegaci´n.
                  o                            o
     En cuanto a los actuadores, se ha observado un crecimiento en el n´mero de
                                                                            u
robots con patas, tanto en productos comerciales (los Aibo de Sony) como en los
prototipos b´ ıpedos (Asimo de Honda, Qrio de Sony). Sin embargo sigue siendo
mayoritario el uso de robots con ruedas, que obvian los problemas de equilibrio
y ofrecen una interfaz m´s sencilla para el movimiento. Tambi´n se aprecia una
                           a                                       e
tendencia a la miniaturizaci´n: mientras a principios de los a˜os 90 los robots m´s
                               o                                n                  a
exitosos en entornos de investigaci´n eran el B21 o los Nomad, en los ultimos a˜os
                                      o                                  ´        n
son m´s frecuentes robots menores como el Pioneer o incluso los Aibo.
       a
     En cuanto a los procesadores, antes de 1970 los c´mputos se realizaban fuera del
                                                       o
robot. Los ordenadores eran demasiado grandes y pesados para pensar en ponerlos
sobre un robot m´vil. Por ejemplo, el robot pionero Shakey utilizaba una placa
                     o
de control l´gico en el veh´
             o                ıculo y un computador SDS-940 fuera para realizar el
an´lisis de im´genes y los c´lculos necesarios. Con el avance de la tecnolog´ (e.g.
   a           a               a                                              ıa
bater´ m´s peque˜as) y la reducci´n en el tama˜o de los ordenadores se tendi´ a
      ıas a            n                o            n                            o
incluir todo el c´mputo necesario a bordo del robot m´vil. Por ejemplo, en los
                   o                                        o
a˜os 80 el robot Hilare ya utilizaba una red de procesadores espec´
 n                                                                    ıficos dentro de
su estructura mec´nica: IBM 30/33, Intel 8085/86, Sel 32 77/80, etc.
                     a
     Desde comienzo de los a˜os 90 los ordenadores personales (PC) se han insertado
                              n
como elementos principales de c´mputo en los robots de investigaci´n, primero los
                                   o                                   o
PCs de sobremesa y despu´s los PC port´tiles. El precio relativamente asequible y
                             e              a
el crecimiento exponencial de su capacidad de c´lculo han favorecido esa irrupci´n.
                                                   a                              o
Los procesadores espec´  ıficos son cada vez m´s escasos y se han dejado para tareas
                                                a
de bajo nivel, muy concretas. Por ejemplo, los procesadores digitales de se˜al    n
dedicados al procesamiento espec´    ıfico de im´genes; o los microcontroladores para
                                                a
controlar los motores y recoger medidas de sensores con poco ancho de banda
(como los ultrasonidos, los od´metros y los de contacto) que incorporan robots
                                  o
como el Pioneer o el B21 (figura 4).
     La configuraci´n de un PC y varios microcontroladores es muy frecuente hoy
                    o
d´ En los microcontroladores se ejecuta un sistema operativo de bajo nivel, como
  ıa.
el P2OS en los Pioneer [Act03], o rFLEX en los B21 [RWI99], y la comunicaci´n      o
con el PC se realiza a trav´s del puerto serie RS232, respetando cierto protocolo
                              e
estable. Esta configuraci´n concentra la mayor parte del c´mputo en el PC, que
                           o                                  o
es el procesador m´s poderoso, y ofrece la ventaja de que actualizar el PC cuando
                     a
se queda obsoleto es muy f´cil.
                              a
     En cuanto a la conexi´n de sensores y actuadores con el procesador del PC,
                             o
el puerto serie es una buena opci´n. Es el caso de los cuellos mec´nicos (pantilt),
                                     o                               a
los esc´neres l´ser de SICK, sensores de GPS, etc. Otras interfaces estandarizadas
       a        a
son el bus USB o el bus IEEE-1394. Una opci´n m´s de conexi´n son las tarjetas
                                                  o    a          o
especiales dedicadas, que se enganchan a alg´n bus del PC (ISA, PCI o incluso
                                                  u
4 PLATAFORMAS DE DESARROLLO                                                                                               17

                                                                                               red inalámbrica
                                                                                                        802.11b

                                 radioenlace                                                 Pentium III
                                                                                               portátil
              red ethernet interna

                                                                                RS232                   RS232 RS232 USB
                    Intel 486                    Pentium Pro                  paquetes SIP
                                                                                                       pantilt
                                                                            Microcontrolador
                                                                                                             láser
                             RS232                                          Siemens 88C166
                                               RS232
        bus de acceso                                                                                            cámara
                        microcontroladores                        sónares
  odómetros                                                                                  motores
   contacto                     PWM                                  odómetros
                           motores             PanTilt   cámara
   sónares                                                                   contacto



     Figura 4: Arquitectura de computadores (a) de un B21 (b) de un Pioneer

PCMCIA). Es el caso de la tarjeta que hay en el B21 para s´nares, las tarjetas
                                                                o
digitalizadoras de im´genes, etc. Una tercera opci´n son las tarjetas de adquisici´n
                     a                            o                               o
de datos que incorporan conversores A/D, D/A, entradas y salidas tanto digitales
como anal´gicas. Estas tarjetas permiten integrar sensores a muy bajo nivel.
           o


4.      Plataformas de desarrollo
    Las aplicaciones con robots presentan cada vez de mayor complejidad y ofrecen
mayor funcionalidad. Como hemos argumentado en la secci´n 2, escribir programas
                                                            o
para robots es complicado. En muchos campos del software se ha ido implantando
middleware que simplifica el desarrollo de nuevas aplicaciones en esos campos; por
ejemplo, Matlab para aplicaciones de ingenier´ CORBA o ACE para aplicaciones
                                               ıa,
distribuidas, J2EE para aplicaciones y servicios web, etc. Este middleware propor-
ciona contextos n´ıtidos, estructuras de datos predefinidas, bloques muy depurados
de c´digo de uso frecuente, protocolos est´ndard de comunicaciones, mecanismos
    o                                       a
de sincronizaci´n, etc. Del mismo modo, a medida que el desarrollo de software
                o
para robots m´viles ha ido madurando han ido apareciendo diferentes plataformas
               o
middleware [USEK02].
    Hoy d´ los fabricantes m´s avanzados incluyen plataformas de desarrollo para
          ıa                   a
simplificar a los usarios la programaci´n de sus robots. Por ejemplo, Activmedia
                                        o
ofrece la plataforma ARIA [Act02] para sus robots Pioneer, PeopleBot, etc.; iRo-
bot ofrece Mobility [RWI99] para sus B21, B14, etc.; Evolution Robotics vende
su plataforma ERSP; y Sony ofrece OPEN-R [MGCCM04] para sus Aibo. Otros
fabricantes menos avanzados carecen de plataforma de desarrollo u ofrecen una
4 PLATAFORMAS DE DESARROLLO                                                        18


muy limitada. Por ejemplo, para programar los robots RobuCar y RobuLab de
Robosoft el desarrollador s´lo dispone de unas bibliotecas con primitivas en C que
                            o
ofrecen una interfaz b´sica, de sistema operativo.
                        a
    Adem´s de los fabricantes, muchos grupos de investigaci´n han creado sus pro-
          a                                                  o
pias plataformas de desarrollo. Varios ejemplos son la suite de navegaci´n CAR-
                                                                           o
      12
MEN [MRT03] de Carnegie Mellon University, Orocos [Bru01], PSG [GVH03],
Miro [USEK02], JDE [CM02], etc. La mayor´ de estas plataformas se distribuyen
                                              ıa
como software libre por los propios creadores. Al igual que ocurre con los simu-
ladores, mientras los fabricantes buscan que su plataforma sirva para todos sus
modelos, los grupos de investigaci´n aspiran a mayor universalidad y sus platafor-
                                    o
mas tratan de incluir soporte para los robots de sus laboratorios, t´ ıpicamente de
diferentes fabricantes.
    El objetivo fundamental de estas plataformas es hacer m´s sencilla la creaci´n
                                                              a                   o
de aplicaciones para robots. Hemos identificado varias caracter´    ısticas que estas
plataformas presentan para lograrlo: uniforman y simplifican el acceso al hard-
ware, ofrecen una arquitectura sofware concreta y proporcionan un conjunto de
bibliotecas o m´dulos con funciones de uso com´n en rob´tica que el cliente pue-
                o                                 u        o
de reutilizar para programar sus propias aplicaciones. Dedicaremos esta secci´n a
                                                                                o
describir estas tres caracter´
                             ısticas.
    Aunque hay plataformas m´s y menos completas, en general aumentan la in-
                                 a
dependencia de las aplicaciones respecto del hardware y de los sistemas operativos
subyacentes. Las plataformas establecen un suelo m´s o menos firme para el de-
                                                       a
sarrollo de aplicaciones con robots. Son ellas las que asimilan los cambios de bajo
nivel, tratando de mantener la misma interfaz abstracta para las aplicaciones,
tanto en el acceso a sensores y actuadores como a los mecanismos multitarea o
funcionalidades ya asentadas en los robots.

4.1.      Abstracci´n del hardware
                   o
    En primer lugar, la plataforma uniforma y simplifica el acceso al bajo nivel.
Normalmente ofrece un acceso a sensores y actuadores m´s abstracto y simple que
                                                            a
el que proporciona el sistema operativo. Por ejemplo, si se dispone de un robot
Pioneer equipado con un sensor l´ser SICK, la aplicaci´n puede acceder a sus
                                     a                       o
medidas a trav´s de las funciones de la plataforma ARIA o pedirlas y recogerlas
                e
directamente a trav´s del puerto serie. Utilizando ARIA basta invocar al m´todo
                     e                                                           e
getRawReadings sobre un objeto de la clase ArSick, la plataforma se encarga de
mantener actualizadas las variables con las lecturas. Utilizando directamente el
sistema operativo la aplicaci´n debe solicitar y recoger peri´dicamente las lecturas
                              o                                o
al sensor l´ser a trav´s del puerto serie, y conocer el protocolo del dispositivo para
           a          e
 12
      http://www-2.cs.cmu.edu/~carmen
4 PLATAFORMAS DE DESARROLLO                                                       19


componer y analizar correctamente los mensajes de bajo nivel.
    El acceso abstracto tambi´n se ofrece para los actuadores. Por ejemplo, en vez
                                e
de ofrecer comandos de velocidad para cada una de las dos ruedas motrices de un
robot Pioneer, la plataforma Miro [USEK02] ofrece una sencilla interfaz de V-W
(velocidad de tracci´n y de giro) para la actuaci´n motriz a trav´s de la clase
                      o                              o                  e
position. Ella se encarga de hacer las transformaciones oportunas, de enviar a
cada rueda las consignas necesarias para que el robot consiga esas velocidades
comandadas de tracci´n (V) y de giro (W).
                        o
    Hattig et al. [HHB03] apuntan que la uniformidad en el acceso al hardware es el
primer paso para favorecer la reutilizaci´n de software dentro de la rob´tica. Esta
                                           o                              o
caracter´ıstica est´ presente en todas las plataformas que hemos estudiado, aunque
                   a
cada una lo haga a su manera. En la plataforma ERSP de Evolution Robotics el
acceso al bajo nivel recibe el nombre de Hardware Abstraction Layer, (figura 5)y
en Miro, Service Layer. En OPEN-R, en Mobility y en ARIA la API de acceso a
los sensores y actuadores viene dada por los m´todos de un conjunto objetos. En
                                                  e
JDE [CM02] y en PSG el acceso abstracto al hardware lo marca un protocolo, con
vocaci´n de est´ndard, entre las aplicaciones y los servidores.
       o         a
    Con la interfaz abstracta de acceso a sensores y actuadores, m´s o menos es-
                                                                       a
table, las plataformas favorecen la portabilidad de las aplicaciones entre robots
distintos. Ellas se encargan de materializar la misma interfaz para cada diferente
robot soportado. Por ejemplo, una misma aplicaci´n de movimiento escrita sobre
                                                     o
Miro [USEK02] puede gobernar con m´      ınimas adaptaciones robots diferentes como
el B21, el Pioneer o el robot casero Sparrow porque todos ellos est´n soportados en
                                                                    a
la plataforma. Otro ejemplo m´s, en Miro la clase de sensor distancia vale para
                                  a
dispositivos diferentes como los s´nares, los infrarrojos o el l´ser, cada uno de los
                                    o                           a
cuales proporciona informaci´n de proximidad a objetos, con sus peculiaridades.
                               o

4.2.    Arquitectura software
    En segundo lugar, la plataforma ofrece una arquitectura software determina-
da. Con ello fuerza a escribir las aplicaciones de cierta manera, recortando en
flexibilidad, pero ganando en simplicidad y en portabilidad.
    La arquitectura software fija la manera concreta en la que el c´digo de la
                                                                        o
aplicaci´n debe acceder a las medidas de los sensores, ordenar a los motores, o uti-
         o
lizar la funcionalidad ya desarrollada. Muchas son las alternativas software para
ello: llamar a funciones de biblioteca, leer variables, invocar m´todos de objetos,
                                                                 e
enviar mensajes por la red a servidores, etc. Por ejemplo, la plataforma CAR-
MEN [MRT03] presenta interfaces funcionales, la plataforma Miro la invocaci´n    o
de m´todos de objetos distribuidos, la plataforma TCA [SGFB97] requiere del
       e
paso de mensajes entre distintos m´dulos, la plataforma JDE [Ca˜03] requiere la
                                    o                               n
activaci´n de procesos y la lectura o escritura de variables. Esta apariencia de las
         o
4 PLATAFORMAS DE DESARROLLO                                                      20


interfaces depende de c´mo se encapsule en cada plataforma la funcionalidad ya
                         o
desarrollada.
    Al escribirse dentro de la arquitectura software de la plataforma, el programa
de la aplicaci´n toma una organizaci´n concreta. As´ se puede plantear como una
              o                       o              ı,
colecci´n de objetos (como en OPEN-R), como un conjunto de m´dulos dialogando
        o                                                         o
a trav´s de la red (como en TCA), como un proceso iterativo llamando a funciones,
       e
etc. Esta organizaci´n est´ influida por la arquitectura cognitiva, y supone un mo-
                     o     a
delo de programaci´n, una estructura determinada para escribir las aplicaciones.
                     o
Hay plataformas muy cerradas, que obligan estrictamente a cierto modelo. Por
ejemplo, en la plataforma RAI [RWI96] los clientes han de escribirse forzosamente
como un conjunto de m´dulos RAI (hebras sin desalojo), con ejecuci´n basada en
                         o                                             o
iteraciones. Otras arquitecturas software son deliberadamente abiertas, restringen
lo m´ınimo, como PSG o CARMEN.
    En cuanto al modelo de programaci´n, una opci´n es organizar la aplicaci´n
                                          o            o                         o
como un unico hilo de ejecuci´n que se encarga de todo. Este modelo monohilo es
          ´                    o
muy sencillo para la programaci´n reactiva: muchas iteraciones por segundo com-
                                  o
probando las condiciones relevantes. Sin embargo, cuando la aplicaci´n rob´tica
                                                                        o      o
crece en complejidad, la programaci´n secuencial se queda corta, y entonces resulta
                                     o
m´s natural la programaci´n concurrente. Las arquitecturas software de las pla-
  a                          o
taformas m´s avanzadas establecen mecanismos concretos para que la aplicaci´n
             a                                                                   o
se distribuya en varias unidades concurrentes. Por ejemplo, la plataforma ARIA
ofrece tareas s´ıncronas y as´
                             ıncronas (ArPeriodicTask, ArASyncTask, ArThread),
los objetos distribuidos de Miro y de Mobility pueden ser objetos activos, con hilos
de ejecuci´n en su interior, y pueden notificar eventos de manera as´
           o                                                         ıncrona.
    El mecanismo multitarea que ofrece la plataforma envuelve y simplifica la inter-
faz del kernel subyacente para la multiprogramaci´n, en la cual se apoyan siempre.
                                                   o
Al igual que ocurre con la interfaz abstracta de acceso al hardware, la interfaz
abstracta de multitarea facilita la portabilidad. Por ejemplo, la de ARIA est´ so-
                                                                               a
portada sobre Linux y sobre MS-Windows, es exactamente la misma en ambos
casos.
    La distribuci´n de las aplicaciones rob´ticas en procesos concurrentes es una
                  o                          o
tendencia firmemente confirmada en los ultimos a˜os. La distribuci´n es doble,
                                            ´        n                 o
tanto de un proceso compuesto de varias hebras, como de varios procesos ejecu-
tando en m´quinas diferentes, comunic´ndose a trav´s de la red. Todos los hilos de
             a                          a            e
ejecuci´n interact´an y cooperan para el fin com´n de la aplicaci´n. Los m´dulos
        o           u                             u                o         o
de RAI y las tareas as´ ıncronas de ARIA son ejemplos de hebras, con y sin desa-
lojo respectivamente, dentro del mismo proceso. Los servidores y clientes de RAI,
una aplicaci´n sobre PSG, los objetos distribuidos de CARMEN, de Mobility o
              o
de Miro son muestras de la aplicaci´n compuesta de varios procesos ejecut´ndose
                                     o                                       a
en m´quinas potencialmente diferentes. Esta tendencia a la distribuci´n tiene sus
      a                                                                o
4 PLATAFORMAS DE DESARROLLO                                                       21


ra´ıces cognitivas en las arquitecturas basadas en comportamientos, en contraste
con el desarrollo monohilo secuencial que hab´ predominado hasta principios de
                                                ıa
los a˜os 90.
      n
     La distribuci´n en varias hebras o procesos lleva obligatoriamente a la nece-
                  o
sidad de comunicaci´n y coordinaci´n entre ellos. Para los hilos ejecutando en la
                      o               o
misma m´quina la plataforma ARIA ofrece variables comunes y varios objetos de
          a
sincronizaci´n (ArMutex y ArCondition). Para procesos corriendo en m´quinas
             o                                                             a
diferentes PSG y JDE ofrecen un protocolo sencillo de mensajes de texto a trav´s e
de sockets. PSG incluye unas bibliotecas con una interfaz funcional para el env´ y
                                                                               ıo
recepci´n de mensajes hacia/desde el servidor acorde a ese protocolo. Miro y Mobi-
        o
lity resuelven la comunicacion entre objetos distribuidos con CORBA; CARMEN
con TCX [Fed94]. ARIA ofrece la clase Arsockets con primitivas de apertura, etc.
para que el programa maneje expl´   ıcitamente las comunicaciones.

4.3.    Funcionalidades de uso com´ n
                                  u
    En tercer lugar, las plataformas m´s completas incluyen funcionalidades de uso
                                         a
com´n en rob´tica, ya resueltas. El programador puede incorporarlas sin esfuerzo
     u         o
en su propia aplicaci´n si lo necesita. Adem´s de las librer´ sencillas de apo-
                       o                        a               ıas
yo, como filtros de color y dem´s, estas funcionalidades engloban alguna t´cnica
                                  a                                           e
rob´tica concreta, relativamente madura, ya sea de percepci´n o de algoritmos de
    o                                                          o
control: localizaci´n, navegaci´n local segura, navegaci´n global, seguimiento de
                   o            o                         o
personas, habilidades sociales, construcci´n de mapas, etc.
                                           o
    La ventaja de integrarlas en la plataforma es que el usuario puede reutilizarlas,
enteras o por partes. Esta reutilizaci´n permite acortar los tiempos de desarrollo y
                                      o
reducir el esfuerzo de programaci´n necesario para tener una aplicaci´n. Al incluir
                                    o                                   o
funcionalidad com´n, el desarrollador no tiene que repetir ese trabajo y puede
                    u
construir su programa reutiliz´ndola, concentr´ndose en los aspectos espec´
                                 a                a                             ıficos
de su aplicaci´n. Adem´s, suele estar muy probada, lo cual disminuye el n´mero
               o         a                                                    u
de errores en el programa final.
    La forma concreta en que se reutilizan las funcionalidades depende nuevamente
de la arquitectura software y de c´mo se encapsulen en ella: m´dulos, objetos
                                      o                               o
distribuidos, objetos locales, funciones, etc. Por ejemplo, en PSG se incluye la
localizaci´n como un nuevo sensor y a su funcionalidad se accede intercambiando
           o
mensajes con el servidor Player. En Miro la funcionalidad se encapsula en objetos
distribuidos, con sus propios m´todos que se ponen a disposici´n de los dem´s
                                   e                                o              a
objetos. Por ejemplo, en el robot EyeBot las funcionalidades se ofrecen en forma
de librer´ El sistema operativo ROBIOS ofrece primitivas para leer la imagen
          ıas.
que est´ capturando la c´mara, y para girar cada rueda motriz a cierta velocidad.
        a                 a
Sobre esas primitivas hay una librer´ que ofrece control V-W y otra con varios
                                        ıa
filtros para las im´genes (filtro Sobel, filtro Laplace, etc.). En Miro, el control V-
                   a
4 PLATAFORMAS DE DESARROLLO                                                       22


W se ofrece en la capa de abstracci´n del hardware, mientras que en el EyeBot se
                                   o
ofrece como librer´ de uso opcional.
                  ıa




 Figura 5: M´dulos de navegaci´n, visi´n e interacci´n en la plataforma ERSP
            o                 o       o             o

    Otras funcionalidades m´s elaboradas son la navegaci´n de un lugar a otro pla-
                              a                            o
nificando trayectorias, la construcci´n de mapas basados en rejillas, la localizaci´n
                                      o                                           o
basada en correspondencia de segmentos, la localizaci´n con filtros de part´
                                                        o                     ıculas,
el procesamiento visual est´reo, etc. Normalmente estas funcionalidades nacieron
                             e
como t´cnicas novedosas de investigaci´n y al consolidarse van siendo integradas
         e                                o
en las plataformas de desarrollo, tanto en aquellas de grupos de investigaci´n como
                                                                            o
en las de los fabricantes. De esta manera, la cantidad de bibliotecas disponibles va
creciendo a medida que van madurando las t´cnicas concretas.
                                                 e
    La plataforma Miro incluye en su Miro Class Framework [USEK02] clases con
algunos comportamientos, con algoritmos de localizaci´n y est´n trabajando pa-
                                                         o       a
ra incorporar algoritmos de planificaci´n de caminos. La plataforma CARMEN
                                          o
[MRT03] incluye navegaci´n basada en planificaci´n por descenso de gradiente,
                            o                        o
de Konolige, y m´dulos con las t´cnicas m´s exitosas desarrolladas en Carnegie
                    o               e          a
Mellon como la construcci´n probabil´
                            o           ıstica de mapas de ocupaci´n con forma de
                                                                   o
rejilla y la localizaci´n dentro de esos mapas siguiendo t´cnicas de MonteCarlo.
                       o                                     e
Tambi´n incorpora la detecci´n de personas y el seguimiento.
        e                       o
    Los fabricantes suelen vender esas funcionalidades por separado o incluirlas
como valor a˜adido de su propia plataforma. Por ejemplo, la empresa ActivMedia
              n
proporciona gratuitamente la plataforma de desarrollo ARIA, pero vende sepa-
radamente sus paquetes ARNL para navegaci´n y localizaci´n, la utilidad Mapper
                                                o              o
para la construcci´n de mapas y ACTS para el seguimiento de color. La plataforma
                    o
ERSP incluye tres paquetes sobre su arquitectura b´sica: uno de interacci´n, otro
                                                      a                     o
4 PLATAFORMAS DE DESARROLLO                                                       23


de navegaci´n y otro visi´n, seg´n ilustra la figura 5. En el m´dulo de interac-
             o            o      u                             o
ci´n se incluye la capacidad de reconocimiento del habla y s´
  o                                                         ıntesis de voz, para
interactuar de modo verbal con su robot. En el m´dulo de navegaci´n se incluye
                                                  o                o
la capacidad de construcci´n autom´tica de mapas, la localizaci´n en ellos y su
                            o         a                         o
utilizaci´n para planificar trayectorias.
         o

4.4.    Arquitectura cognitiva
    Los comportamientos que se han conseguido en robots reales y a los que se
aspira son cada vez m´s ricos y variados, y con ello m´s dif´
                        a                                   a  ıciles de generar. De
manera que los programas que los causan tienden a ser cada vez m´s complejos. La
                                                                    a
arquitectura software ofrece un modelo de programaci´n, una cierta manera de or-
                                                         o
ganizar ese c´digo. Normalmente este modelo resulta suficiente cuando se persigue
             o
generar un comportamiento espec´     ıfico en el robot, pero no suele escalar cuando
se quiere integrar en un unico sistema un abanico amplio de comportamientos.
                            ´
Es decir, suele resultar insuficiente cuando la aplicaci´n apunta a un repertorio
                                                           o
amplio de conductas artificiales y este repertorio ha de desplegarse coherentemen-
te en cada momento dependiendo de los objetivos del robot y del entorno. Este
problema es muy complejo y al d´ de hoy sigue siendo un tema abierto y activo
                                    ıa
de investigaci´n, no hay una soluci´n universalmente admitida.
              o                       o
    Se denomina arquitectura cognitiva de un robot a la organizaci´n de sus capa-
                                                                     o
cidades sensoriales y de actuaci´n para generar un repertorio de comportamientos
                                 o
[Ca˜03]. Para comportamientos simples casi cualquier organizaci´n resulta v´lida,
    n                                                              o              a
pero para comportamientos complejos se hace patente la necesidad de una bue-
na organizaci´n cognitiva. De hecho, puede llegar a ser un factor cr´
              o                                                        ıtico: con una
buena organizaci´n s´ se puede generar cierto comportamiento y con una mala no,
                  o ı
se tiene un codigo fr´gil y la complejidad se vuelve inmanejable. En la comunidad
                      a
rob´tica han surgido a lo largo de su historia diversas escuelas cognitivas o para-
    o
digmas para orientar la organizaci´n del sistema en esos casos. En [Ca˜03] hay una
                                    o                                   n
buena recopilaci´n de los principales paradigmas con sus arquitecturas cognitivas
                 o
m´s representativas: sistemas deliberativos, reactivos, sistemas h´
  a                                                                  ıbridos (de tres
capas, TCA,...), sistemas basados en comportamientos, basados en etolog´ etc. ıa,
    M´s all´ de la interfaz estable para el acceso a un hardware diverso que propor-
      a    a
cionan las plataformas, la estandarizaci´n del comportamiento artificial, su divisi´n
                                         o                                          o
en unidades reutilizables, es una cuesti´n muy complicada. Hattig et al.[HHB03]
                                          o
opinan que a´n es demasiado pronto para buscar est´ndares en este nivel, en el
              u                                          a
modo de generar comportamientos. Recomiendan ce˜irse por ahora la estanda-
                                                         n
rizaci´n del acceso a los sensores y actuadores, de lo que ellos llaman bloques
      o
constituyentes.
    La relaci´n entre las arquitecturas cognitivas y las de software es m´ltiple.
             o                                                                 u
Las arquitecturas cognitivas se materializan en alguna arquitectura software, de
4 PLATAFORMAS DE DESARROLLO                                                     24


manera que los comportamientos generados siguiendo cierto paradigma acaban im-
plement´ndose con alg´n programa concreto. De hecho, las propuestas cognitivas
         a              u
m´s fiables cuentan con implementaciones pr´cticas relevantes en arquitecturas
  a                                               a
software concretas: deliberativas (SOAR), h´    ıbridas (e.g. TCA [Sim94, SGFB97],
Saphira [KM98]), basadas en comportamientos (subsunci´n [Bro86], JDE), etc.
                                                               o
Una buena arquitectura cognitiva favorece la escalabilidad de la plataforma.
    Hay plataformas software debajo de las cuales subyace un modelo cognitivo,
pero tambi´n hay otras en las que no. No obstante, unas arquitecturas software
             e
cuadran mejor con ciertas escuelas cognitivas que con otras. Los sistemas delibe-
rativos cl´sicos cuadran con la programaci´n l´gica (e.g. Prolog), con una des-
           a                                   o o
composici´n funcional en bibliotecas (m´dulos especialistas) y con las aplicaciones
           o                              o
monohilo con un s´lo flujo iterativo de control (sensar-modelar-planificar-actuar).
                     o
Por el contrario, los sistemas basados en comportamientos cuadran mejor con la
programaci´n concurrente, donde se tienen varios procesos funcionando en parale-
             o
lo y que colaboran al funcionamiento global. Resulta natural asimilar cada unidad
de comportamiento al concepto software de proceso, o incluso al de objeto activo.
    La distinci´n entre arquitectura software y arquitectura cognitiva se hace pa-
                o
tente en el ejemplo de Saphira [KM98]. El nombre Saphira antes designaba a la
propuesta cognitiva y tambi´n la plataforma software13 [Act99] asociada. Ahora
                              e
se han separado, la plataforma se ha reescrito y rebautizado como ARIA [Act02].
Ella ofrece una capa de acceso abstracto al hardware y una arquitectura software
basada en objetos. El nombre de Saphira se ha reservado para el software que ma-
terializa la arquitectura cognitiva h´
                                     ıbrida, la cual se monta encima de ARIA. Esta
separaci´n tambi´n es clara en el caso de JDE [Ca˜03], que ofrece una plataforma
         o         e                                  n
software de servidores por un lado, y un conjunto de esquemas que materializan
la apuesta cognitiva por otro.

4.5.       Plataformas de software libre
    Como ya hemos comentado, existen plataformas de desarrollo creadas por los
fabricantes de robots y otras creadas por grupos de investigaci´n. La mayor´ de
                                                                o             ıa
estas ultimas se publican con licencia de software libre, con la idea de contribuir
      ´
al libre intercambio de conocimiento en el ´rea y con ello al avance de la dis-
                                             a
ciplina rob´tica. Dedicamos esta secci´n a enumerar las plataformas libres m´s
            o                          o                                         a
importantes; en las referencias se pueden encontrar descripciones m´s detalladas.
                                                                     a
 13
      hasta la versi´n 6.2
                    o
4 PLATAFORMAS DE DESARROLLO                                                     25


 Plataforma              Robots soportados    Sistema Operativo             Sw libre
 Player/Stage              Pioneer, B21             Linux                      s´
                                                                                ı
 Miro                  Pioneer, B21, Sparrow        Linux                      s´
                                                                                ı
 CARMEN                    Pioneer, B21             Linux                      s´
                                                                                ı
 JMR                          Pioneer                                          s´
                                                                                ı
 Robotflow/Flowdesigner        Pioneer                                          s´
                                                                                ı
 Webots, SysQuake         Koala, Kephera                                      no
 ARIA                         Pioneer        Linux/MS-Windows                  s´
                                                                                ı
 OPEN-R                         Aibo               Aperios                    no
 ERSP                           ER1          Linux/MS-Windows                 no
 Mobility                    RWI B21                Linux                     no


              Cuadro 1: Tabla con plataformas de programaci´n robots
                                                           o

Player/Stage/Gazebo
    La plataforma Player/Stage/Gazebo14 (PSG) [GVH03] fue creada inicialmente
en la Universidad de South California. Actualmente est´ mantenida por Richard
                                                           a
Vaughan, Andrew Howard y Brian Gerkey. Se compone de dos simuladores Stage y
Gazebo (que ya fueron comentados en la secci´n 2.3), y un servidor Player al que se
                                              o
conecta el programa de la aplicaci´n para recoger los datos sensoriales o comandar
                                    o
las ´rdenes a los actuadores. El soporte a robots variados como los Pioneer, los
    o
B21, etc. y los simuladores que incorpora la convierten en una plataforma muy
completa. Ha ganado popularidad y usuarios, actualmente m´s de 20 laboratorios
                                                                a
la utilizan en sus proyectos.
    En PSG los sensores y actuadores se contemplan como si fueran ficheros [VGH03],
flujos, dispositivos de modo car´cter al estilo de Unix, y por ello se manipulan a
                                  a
trav´s de cinco operaciones b´sicas: abrir, cerrar, leer, escribir y configurar. Para
    e                          a
usar un sensor, las aplicaciones tienen que abrir el dispositivo, quiz´ configurarlo
                                                                       a
y leer de ´l, cerr´ndolo al final. An´logamente, para utilizar un actuador, las apli-
          e       a                  a
caciones tienen que abrirlo, tal vez configurarlo y escribir datos en ´l, cerr´ndolo
                                                                       e     a
al final. Cada tipo de dispositivo se define en PSG con una interfaz, de manera
que los sensores sonar del robot Pioneer y los sensores sonar del robot B21 son
instancias de la misma interfaz. La unica diferencia, invisible para los programas,
                                       ´
es que las lecturas se obtienen del sensor concreto empleando drivers diferentes.
El conjunto de interfaces posibles presenta una m´quina virtual, con toda suerte
                                                    a
de sensores y actuadores. El robot concreto instancia las interfaces relativas a los
dispositivos realmente existentes.
    Adicionalmente, PSG tiene un dise˜o cliente/servidor: las aplicaciones estable-
                                         n
 14
      http://playerstage.sourceforge.net/
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots
Tr programacionrobots

Más contenido relacionado

Similar a Tr programacionrobots

Similar a Tr programacionrobots (20)

LA ROBÓTICA
LA ROBÓTICALA ROBÓTICA
LA ROBÓTICA
 
LA ROBÓTICA
LA ROBÓTICALA ROBÓTICA
LA ROBÓTICA
 
Robo Taller
Robo TallerRobo Taller
Robo Taller
 
Robótica y Automatización
Robótica y AutomatizaciónRobótica y Automatización
Robótica y Automatización
 
Presentación: Robotica y Automatización
Presentación: Robotica y AutomatizaciónPresentación: Robotica y Automatización
Presentación: Robotica y Automatización
 
Prototipos de robots
Prototipos de robotsPrototipos de robots
Prototipos de robots
 
Master RIAtec 2013 - Bloque 2
Master RIAtec 2013 - Bloque 2Master RIAtec 2013 - Bloque 2
Master RIAtec 2013 - Bloque 2
 
Trabajo escrito de informatica
Trabajo escrito de informaticaTrabajo escrito de informatica
Trabajo escrito de informatica
 
Presentacion: Robotica y Automatización
Presentacion: Robotica y AutomatizaciónPresentacion: Robotica y Automatización
Presentacion: Robotica y Automatización
 
RobotStudio
RobotStudioRobotStudio
RobotStudio
 
Robótica
RobóticaRobótica
Robótica
 
Proyecto robótica, cronología power point
Proyecto robótica, cronología power pointProyecto robótica, cronología power point
Proyecto robótica, cronología power point
 
Proyecto robótica, cronología power point
Proyecto robótica, cronología power pointProyecto robótica, cronología power point
Proyecto robótica, cronología power point
 
Publicidad
PublicidadPublicidad
Publicidad
 
00463531f7b1b6cf3f000000
00463531f7b1b6cf3f00000000463531f7b1b6cf3f000000
00463531f7b1b6cf3f000000
 
Roboticamovil
RoboticamovilRoboticamovil
Roboticamovil
 
Prueba tutor
Prueba tutorPrueba tutor
Prueba tutor
 
Diapositivas Robotica!
Diapositivas Robotica!Diapositivas Robotica!
Diapositivas Robotica!
 
La robótica1.ppt
La robótica1.pptLa robótica1.ppt
La robótica1.ppt
 
Actividad 5 software de sistema y aplicaciones-lina constanza naranjo-13219...
Actividad 5   software de sistema y aplicaciones-lina constanza naranjo-13219...Actividad 5   software de sistema y aplicaciones-lina constanza naranjo-13219...
Actividad 5 software de sistema y aplicaciones-lina constanza naranjo-13219...
 

Último

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (10)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Tr programacionrobots

  • 1. Programaci´n de robots m´viles o o Jos´ Mar´ Ca˜as Plaza e ıa n Universidad Rey Juan Carlos 2 de agosto de 2004 Resumen El comportamiento de un robot aut´nomo viene determinado por el pro- o grama que gobierna sus actuaciones. La creaci´n de programas para ro- o bots debe cumplir con ciertos requisitos espec´ ıficos frente a la programaci´n o en otros entornos m´s tradicionales, como el ordenador personal. En este a art´ ıculo planteamos que el software de los robots se estructura actualmente en tres niveles: sistema operativo, plataforma de desarrollo y aplicaciones concretas. En los ultimos a˜os, han surgido con fuerza plataformas de de- ´ n sarrollo con la idea de facilitar la construcci´n incremental de estas aplica- o ciones rob´ticas. M´s all´ del acceso b´sico a los sensores y actuadores, las o a a a plataformas suelen proporcionar un modelo para la organizaci´n del c´digo o o y bibliotecas con funcionalidades comunes. En este art´ ıculo se identifican y analizan esos tres niveles, describiendo desde esta perspectiva los entor- nos de desarrollo de los robots reales m´s extendidos, y las tendencias m´s a a recientes. ´ Indice 1. Introducci´n o 2 2. Software de robots 4 2.1. Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2. Sistemas operativos, plataformas y aplicaciones . . . . . . . . . . . 7 2.3. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4. Lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3. Sistemas operativos 12 3.1. Sistemas operativos dedicados y generalistas . . . . . . . . . . . . . 12 3.2. Procesadores, sensores y actuadores . . . . . . . . . . . . . . . . . . 15 1
  • 2. ´ 1 INTRODUCCION 2 4. Plataformas de desarrollo 17 4.1. Abstracci´n del hardware . . . o . . . . . . . . . . . . . . . . . . . . . 18 4.2. Arquitectura software . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.3. Funcionalidades de uso com´nu . . . . . . . . . . . . . . . . . . . . . 21 4.4. Arquitectura cognitiva . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.5. Plataformas de software libre . . . . . . . . . . . . . . . . . . . . . 25 5. Entornos de programaci´n o de robots 29 5.1. Aibo de Sony . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 5.2. RCX de LEGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5.3. Pioneer de ActivMedia . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.4. B21 de iRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 6. Conclusiones y perspectivas 36 1. Introducci´n o El principal objetivo de la rob´tica es la construcci´n de m´quinas capaces o o a de realizar tareas con la flexibilidad, la robustez y la eficiencia que exhiben los humanos. Los robots son potencialmente utiles en escenarios peligrosos para el ser ´ humano, aburridos, sucios o dif´ ıciles. En este sentido los brazos rob´ticos que se o emplean en las f´bricas de coches para soldar y pintar, los robots m´viles que se a o env´ a Marte, o los que se utilizan para limpiar centrales nucleares son varios ıan ejemplos de aplicaciones reales en las cuales se utilizan robots hoy d´ ıa. Hay muchos tipos de robots: con ruedas, con patas, brazos manipuladores, con orugas, de forma humanoide, de forma cil´ ındrica, etc. Sin embargo, la morfolog´ ıa no es una caracter´ıstica esencial, lo que identifica a cualquier robot es que combina en la misma plataforma a sensores, actuadores y procesadores. Los sensores miden alguna caracter´ıstica del entorno o propia (e.g. c´maras, sensores de obst´culos, a a etc.). Los actuadores permiten al robot hacer algo, llevar a cabo alguna acci´n o o simplemente desplazarse (e.g. los motores). Los procesadores hacen los c´mputos o necesarios y realizan el enlace l´gico entre sensores y actuadores, materializando o el comportamiento del robot en el entorno en el cual se encuentra inmerso. Generar comportamiento es programar La existencia de robots que realicen aut´nomamente tareas de modo eficiente o depende fundamentalmente de su construcci´n mec´nica y de su programaci´n. o a o Una vez construido el cuerpo mec´nico del robot, conseguir que realice una tarea a se convierte en la pr´ctica en un problema de programaci´n. La generaci´n de com- a o o portamiento en un robot consiste entonces en escribir el programa que al ejecutarse
  • 3. ´ 1 INTRODUCCION 3 en el robot causa ese comportamiento cuando ´ste se encuentra en cierto entorno. e La autonom´ y la “inteligencia” residen en ese programa. Por ejemplo, en los ro- ıa bots m´viles el comportamiento principal es su movimiento. Los programas que se o ejecutan en el robot determinan c´mo se mueve ´ste por el entorno, reaccionando o e ante obst´culos percibidos por los sensores, acerc´ndose a alg´n destino, etc. y a a u para ello tienen que enviar continuamente las ´rdenes pertinentes a los motores. o El mercado de los robots y la autonom´ ıa Muchos de los robots que se venden en la actualidad se compran como produc- tos cerrados, programados por el fabricante e inalterables, por ejemplo la aspira- dora rob´tica Roomba de iRobot1 o el perrito Aibo2 de Sony en sus inicios3 . En o contraste, otra parte relevante del mercado son los robots programables. Los prin- cipales clientes de estos robots son los centros de investigaci´n, que normalmente o est´n interesados en programarlos ellos mismos. En estos casos, el fabricante vende a los robots con un software que permite su programaci´n por el usuario. o La tendencia actual del mercado de robots es de crecimiento real: cada vez son m´s los productos rob´ticos que se venden y m´s frecuentes los movimientos a o a empresariales alrededor de la tecnolog´ rob´tica. Por ejemplo, recientemente Sony ıa o compr´ la licencia del software de visi´n a la peque˜a empresa Evolution Robotics4 , o o n para usarla en sus robots. Los robots de LEGO como juguetes imaginativos y los perritos Aibo vendidos como mascotas son ´xitos de ventas significativos, con e centenares de miles de unidades cada uno. Aunque est´ en v´ de consolidaci´n, en t´rminos generales el mercado de los a ıas o e robots m´viles est´ inmaduro y todav´ no se ha abierto al gran p´blico. Esto o a ıa u se debe en parte a la fragilidad de los resultados (sobre todo comparados con las expectativas) y las limitaciones en autonom´ que tienen los robots conseguidos ıa hasta la fecha. De hecho, el grado de autonom´ y de fiabilidad que seamos capaces ıa de conseguir en los robots ser´ una cuesti´n determinante en la evoluci´n futura a o o de ese mercado. El crecimiento en autonom´ abre la puerta a nuevas aplicaciones ıa comerciales rob´ticas, como los robots de servicio y los de entretenimiento. Avances o recientes en esta l´ ınea son los ya mencionados de la aspiradora rob´tica Roomba o y la mascota Aibo. Sin embargo la autonom´ es dif´ ıa ıcil, y salvo casos contados, el desarrollo de aplicaciones con robots sigue siendo materia de investigaci´n. Al d´ de hoy, los o ıa proveedores de robots hacen negocio vendiendo los componentes hardware (pla- 1 http://www.irobot.com 2 http://www.aibo-europe.com 3 En el verano de 2002 Sony hizo p´blica la interfaz de programaci´n de sus perritos, Open-R, u o en parte forzados por un hacker que hab´ conseguido desvelar algunas de sus interfaces ıa 4 http://www.evolution.com/
  • 4. 2 SOFTWARE DE ROBOTS 4 taformas f´ısicas, motores, sensores, etc.) y con algunas soluciones a medida para clientes espec´ıficos. Tambi´n venden el software de desarrollo, m´s o menos com- e a pleto, e incluso algunas aplicaciones de ejemplo sencillas y/o m´s maduras, como a la construcci´n de mapas o el seguimiento de personas. o Este art´ ıculo est´ organizado en seis partes contando con esta introducci´n. a o En la segunda secci´n se rese˜an las peculiaridades que tiene la programaci´n de o n o robots y se presentan los tres niveles identificados en ese software, la evoluci´n o hist´rica que ha desembocado en ellos y las tendencias actuales. En la tercera o secci´n se describe el nivel m´s bajo: el hardware que conforma t´ o a ıpicamente un robot y los sistemas operativos que permiten acceder a ´l, repasando dos ejemplos e concretos (ROBIOS y Linux). En el cuarto apartado se detallan las caracter´ ısticas principales de las plataformas de desarrollo que han aparecido en los ultimos a˜os ´ n y se analizan varios ejemplos particulares. A modo de ilustraci´n, en la quinta o secci´n se describen con cierto detalle los entornos de programaci´n de cuatro o o robots comerciales muy difundidos (LEGO, Aibo, Pioneer y B21) enmarc´ndolosa en los tres niveles mencionados. Finalizamos con las conclusiones principales de este trabajo. 2. Software de robots En el manejo de robots conviene diferenciar entre el usuario final y el progra- mador, pues el robot ofrece interfaces muy distintas a uno y a otro. El usuario es quien aprovecha las aplicaciones que ha desarrollado el programador. Para ´l la in- e terfaz de uso suele ser extremadamente sencilla, m´xime si el usuario es el p´blico a u en general. Por ejemplo, la interfaz de uso de la aspiradora Roomba es un simple bot´n. Por el contrario, la interfaz de programaci´n requiere de ciertos conocimien- o o tos por parte del desarrollador, y su objetivo es permitir la creaci´n de programas o para el robot. A lo largo de este art´ıculo se analizan las diferentes posibilidades de programaci´n de los robots m´viles que se venden en la actualidad. o o En los ultimos a˜os los avances en aplicaciones de robots m´viles aut´nomos ´ n o o han sido significativos. Hoy en d´ hay resultados fiables en aplicaciones como ıa, la construcci´n de mapas, la navegaci´n autom´tica, la localizaci´n, la detecci´n o o a o o de caras o el procesamiento de visi´n est´reo. Por ejemplo, en algunas f´bricas o e a hay robots que se mueven solos de un punto a otro remoto sin chocar con ning´n u obst´culo, transportando piezas pesadas. La funcionalidad de los prototipos de in- a vestigaci´n construidos es cada vez mayor: gu´ de museos, cuidadores de ancia- o ıas nos, etc. No hay magia: detr´s de esas aplicaciones hay programas que determinan a el comportamiento de esos robots, programas que han escrito los dise˜adores y que n consiguen que el robot se mueva como lo hace. A la hora de crear esas aplicaciones, una primera separaci´n distingue a la o
  • 5. 2 SOFTWARE DE ROBOTS 5 programaci´n autom´tica de la programaci´n manual [BM03]. En la programaci´n o a o o autom´tica se engloban los sistemas con aprendizaje y la programaci´n basada en a o demostraci´n. Este enfoque es posible en brazos industriales robotizados donde o la ejecuci´n deseada es el recorrido por una secuencia de puntos, los cuales se o pueden introducir en el robot simplemente conduciendo externamente al brazo por las posiciones deseadas. Sin embargo en robots m´viles, con escenarios m´s o a variables, ese planteamiento es inviable y normalmente el dise˜ador escribe a mano n el programa que determina su comportamiento. Entre los programadores de robots m´viles figuran los propios fabricantes (co- o mo Sony, ActivMedia, iRobot, etc.), algunas empresas dedicadas (como Evolution Robotics), y los centros de investigaci´n. Gran parte del software existente hoy o d´ para robots ha sido desarrollado por grupos de investigaci´n, lo cual est´ en ıa o a consonancia con la inmadurez ya comentada del mercado rob´tico. Afortunada- o mente ese software suele estar disponible libremente en Internet, reflejo del deseo de difusi´n del conocimiento en esos grupos. o 2.1. Requisitos Escribir programas para robots es una tarea complicada, porque los robots son sistemas complejos. De hecho, la programaci´n de robots m´viles suele ser m´s o o a exigente que la creaci´n de programas tradicionales como aplicaciones de ofim´tica, o a bases de datos, etc. En esta secci´n enumeramos algunos condicionantes espec´ o ıficos diferenciadores. En primer lugar, los programas de robots m´viles est´n empotrados en la rea- o a lidad f´ ısica, a trav´s de sensores y actuadores. Con los sensores miden alguna e caracter´ıstica de la realidad y con los actuadores pueden provocar cambios en ella. Por un lado, esta situaci´n implica que el software de robots m´viles debe ser o o a ´gil, pues debe tomar decisiones con vivacidad para controlar correctamente cier- tos actuadores. Por lo tanto se tienen requisitos de tiempo real, si no estricto, al menos blando. Por otro lado, hay una enorme variedad de dispositivos sensoriales y de actuaci´n, as´ como de interfaces, que un programador debe dominar si quiere o ı escribir programas para robots. En segundo lugar, una aplicaci´n de robots m´viles t´ o o ıpicamente ha de estar pendiente de varias fuentes de actividad y objetivos a la vez. El programa de un robot tiene que atender a muchas cosas simult´neamente: recoger nuevos datos a de varios sensores, refrescar la interfaz gr´fica, enviar peri´dicamente consignas a o a los motores, enviar o recibir datos por la red a otro proceso de la aplicaci´n,o etc. Por ello las aplicaciones de robots suelen ser concurrentes, lo cual les a˜ade n cierta complejidad. En este sentido los sistemas operativos de robots m´s avanza- a dos incorporan mecanismos multitarea y de comunicaci´n interprocesos. Con ello o permiten la distribuci´n de las tareas en diferentes hebras que se ejecutan con- o
  • 6. 2 SOFTWARE DE ROBOTS 6 currentemente y una programaci´n modular que se adapta a la naturaleza de las o aplicaciones de robots mejor que la estrictamente secuencial. Tercero, otra cuesti´n relevante que deben contemplar las aplicaciones que co- o rren a bordo de los robots es su interfaz gr´fica. Aunque la interfaz gr´fica no a a es indispensable para generar y materializar el comportamiento aut´nomo en el o robot, normalmente resulta muy util como herramienta de depuraci´n. Adem´s de ´ o a las posibilidades de interacci´n con el usuario, la interfaz gr´fica permite la visua- o a lizaci´n en tiempo de ejecuci´n de estructuras internas (e.g. representaciones del o o mundo), las trazas y el an´lisis de variables internas del programa que pueden afec- a tar a la conducta observable del robot. El c´digo de la aplicaci´n deber´ encargarse o o a de actualizar esa interfaz y de atender la interacci´n por parte del usuario. o Cuarto, el software de robots es cada vez m´s distribuido, tal y como apuntan a Woo et al.[WMT03]. Es usual que las aplicaciones de robots tengan que establecer alguna comunicaci´n con otros procesos ejecutando en la misma o en diferente o m´quina. Para generar comportamiento en un unico robot esta distribuci´n no es a ´ o imprescindible, pero ofrece posibilidades ventajosas como ubicar la carga compu- tacional en nodos con mayor capacidad o la visualizaci´n remota; y en sistemas o multirrobot, hace posible la integraci´n sensorial, la centralizaci´n y la coordina- o o ci´n. Por ejemplo, las comunicaciones permiten el acceso remoto a los sensores del o robot, muy util en aplicaciones de teleoperaci´n. Esta distribuci´n implica que el ´ o o c´digo de la aplicaci´n debe encargarse de mantener la comunicaci´n por red con o o o los otros procesos remotos. En quinto lugar, las aplicaciones de robots no cuentan con un marco esta- ble, no hay est´ndares abiertos que propicien la colaboraci´n [USEK02, MRT03, a o CLM+ 04], la reutilizaci´n de c´digo y la integraci´n. En otros campos de la in- o o o form´tica hay bibliotecas que un programador puede emplear para construir su a propio programa, ganando en fiabilidad y acortando el tiempo de desarrollo. Por el contrario, en rob´tica cada aplicaci´n pr´cticamente ha de construirse de cero o o a para cada robot concreto. No hay una base s´lida y firme para el desarrollo de o nuevas aplicaciones. Esa falta se debe en parte a la heterogeneidad end´mica en e rob´tica, tanto en hardware como en software, y en parte a la inmadurez del mer- o cado de robots programables. En cualquier caso, esa ausencia est´ frenando las a posibilidades de crecimiento del mercado rob´tico. o En la actualidad hay avances hacia la estandarizaci´n, como las plataformas o de desarrollo que veremos en la secci´n 4. La aparici´n de esas plataformas supone o o un paso m´s hacia la madurez, tratando de estabilizar una interfaz sobre la que a construir aplicaciones de robots, pero queda a´n mucho camino por recorrer. u En sexto lugar, y ligado con el condicionante anterior, el conocimiento sobre c´mo generar y descomponer el comportamiento artificial es muy limitado. C´mo o o dividir el comportamiento de robots en unidades b´sicas sigue siendo materia de a
  • 7. 2 SOFTWARE DE ROBOTS 7 investigaci´n, y no hay una gu´ universalmente admitida sobre c´mo organizar el o ıa o c´digo de las aplicaciones de robots para que sea escalable y se puedan reutilizar sus o partes. Cada desarrollador programa su aplicaci´n combinando ad hoc los bloques o de c´digo que puedan existir en su entorno. o 2.2. Sistemas operativos, plataformas y aplicaciones El modo en que se programan los robots ha ido evolucionando con el paso de los a˜os. Hist´ricamente los robots eran desarrollos unicos, no se produc´ en serie, n o ´ ıan y los programas de control se sol´ construir empleando directamente los drivers ıan para acceder a los dispositivos sensoriales y de actuaci´n. El sistema operativo o era m´ınimo, b´sicamente una colecci´n de drivers con rutinas para leer datos de a o los sensores y enviar consignas a los actuadores. En este contexto, el programa de aplicaci´n le´ las medidas obtenidas por los sensores y escrib´ las ´rdenes o ıa ıa o de movimiento a los motores invocando directamente las funciones de librer´ que ıa ofrec´ el fabricante en sus drivers. Como muestra la figura 1(a), en este caso la ıa aplicaci´n se situaba directamente encima del sistema operativo. o Aplicación Aplicación Plataforma desarrollo drivers Sistema Operativo Hardware del robot Hardware del robot (a) (b) Figura 1: Programaci´n de robots: (a) sobre drivers espec´ o ıficos de sensores y ac- tuadores. (b) sobre una plataforma de desarrollo Con el asentamiento de los fabricantes, el trabajo de muchos grupos de investi- gaci´n y la evoluci´n de los a˜os han ido apareciendo plataformas de desarrollo que o o n simplifican la programaci´n de aplicaciones rob´ticas. Estas plataformas ofrecen o o acceso m´s sencillo a sensores y actuadores, suelen incluir un modelo de programa- a ci´n que establece una determinada organizaci´n del software y permite manejar la o o
  • 8. 2 SOFTWARE DE ROBOTS 8 creciente complejidad del c´digo cuando se incrementa la funcionalidad del robot. o El dise˜ador programa sus aplicaciones rob´ticas finales sobre esa plataforma de n o desarrollo. Las aplicaciones suelen resolver un problema concreto e incluir t´cnicas es- e pec´ıficas: de extracci´n de informaci´n, de toma de decisiones, etc. A la hora de o o su programaci´n el usuario tiene hoy dos alternativas: la tradicional de programar o directamente sobre el sistema operativo, y la m´s reciente de programar dentro a de la plataforma de desarrollo, utilizando sus abstracciones. La primera interfaz suele ofrecer m´s flexibilidad, con el coste de mayor complejidad en la progra- a maci´n, pues es el propio programador de la aplicaci´n quien debe cuidar que su o o c´digo realice las tareas de las que se podr´ encargar la plataforma. La figura o ıa 1(b) ilustra estas dos posibilidades. En ambos casos las aplicaciones se apoyan en una infraestructura de programaci´n, bien sea b´sica como el sistema operativo, o o a m´s abstracta como la plataforma de desarrollo. En las secciones 3 y 4 se detallan a ampliamente las caracter´ ısticas de ambas infraestructuras. 2.3. Herramientas El procedimiento de creaci´n de aplicaciones para robots no difiere especial- o mente del de otras aplicaciones. El programador tiene que escribir la aplicaci´n o en cierto lenguaje, compilar y enlazar su c´digo con las librer´ de la plataforma o ıas y/o del sistema operativo, y finalmente ejecutarla en los computadores a bordo del robot. Esa ejecuci´n genera el comportamiento deseado cuando el robot se o encuentra en el entorno adecuado. Para todos estos pasos el dise˜ador cuenta con n varias herramientas: editores para escribir el programa fuente en el lenguaje elegi- do, compilador, simuladores, depuradores espec´ ıficos, compilador cruzado, etc. Muchos robots tienen recursos computacionales y de almacenamiento limitados: carecen de disco duro, pantalla suficiente, etc. En estos casos se utiliza el PC como entorno de desarrollo y se emplean compiladores cruzados para generar en el PC el programa ejecutable que correr´ sobre el procesador a bordo del robot. Es el a caso de la mayor´ de robots peque˜os, como el RCX de LEGO, Aibo de Sony, ıa n EyeBot5 , Kephera de K-Team6 , Pekee de Wany Robotics7 , etc. Una herramienta particular, muy util en la programaci´n de robots son los ´ o simuladores. Los simuladores ofrecen un entorno virtual en el que emulan las ob- servaciones de los sensores y los efectos de las ´rdenes a los actuadores. Sirven o como evaluaci´n, depuraci´n y ajuste del programa de control antes de llevar la o o aplicaci´n al robot real. o 5 http://www.ee.uwa.edu.au/~braunl/eyebot 6 http://www.k-team.com 7 http://www.wanyrobotics.com
  • 9. 2 SOFTWARE DE ROBOTS 9 Los buenos robots no son baratos y necesitan mantenimiento. Los simuladores son una opci´n econ´mica para quienes quieren investigar programando robots pe- o o ro no cuentan con el dinero o el material necesario. Esto se hace a´n m´s patente u a en el caso de investigar con poblaciones grandes de robots. Aunque actualmen- te han perdido credibilidad como demostrador de resultados experimentales, los simuladores no han perdido valor como herramienta util. ´ Los primeros simuladores eran poco realistas y almacenaban mundos planos donde hab´ obst´culos bidimensionales. Con los a˜os se ha ido ganando en rea- ıa a n lismo, incorporando ruido en los sensores y en las actuaciones. Hoy d´ se tienen ıa simuladores tridimensionales, como Gazebo8 (en la figura 2(b) se puede observar un mundo simulado con Gazebo) y JMR [LOIBGL01], capaces de simular senso- res tan complejos como la visi´n. Tambi´n se ha incluido en los simuladores m´s o e a potentes la capacidad de representar un conjunto de robots operando en el mismo escenario, simult´neamente. a (a) (b) Figura 2: Simuladores de robots: (a) SRIsim c (b) Gazebo Muchos fabricantes de robots incluyen un simulador para sus robots (e.g. EyeSim para el robot EyeBot, Webots para Kephera y Koala) aunque tambi´n e hay muchos desarrollos libres (Stage, Gazebo, JMR). Los simuladores libres tratan de incluir soporte para los robots de varios fabricantes. La configuraci´n concreta o de el/los robot/s a simular, la disposici´n y par´metros de sus sensores se suele o a especificar en un fichero de configuraci´n. Algunos simuladores relevantes son el o SRIsim9 de Kurt Konolige, que se emplea en los robots de ActivMedia (en la fi- gura 2(a) se puede ver un mundo simulado con SRIsim), los simuladores Stage y 8 http://playerstage.sourceforge.net 9 http://www.ai.sri.com/~konolige/saphira
  • 10. 2 SOFTWARE DE ROBOTS 10 Gazebo de software libre orientados a multirrobot (Stage soporta 2D y colonias numerosas de robots, y Gazebo soporta 3D). Tambi´n incluye visi´n y realidad e o tridimensional el simulador JMR [LOIBGL01], que est´ escrito en Java. a 2.4. Lenguajes En cuanto a los lenguajes que se emplean para programar robots, no hay dife- rencias significativas con los utilizados en otras aplicaciones m´s tradicionales. Si a bien hay casos de programaci´n funcional y programaci´n l´gica de robots, sin nin- o o o guna duda los m´s utilizados son los lenguajes gen´ricos procedimentales. Normal- a e mente los lenguajes utilizados son gen´ricos, es decir, se usan en otras aplicaciones e inform´ticas, y la parte espec´ a ıfica de rob´tica se encapsula en bibliotecas u objetos o particulares. Tambi´n ha habido intentos de establecer lenguajes espec´ e ıficos para robots, como Task Description Language (TDL) de Simmons [SA98] o Reactive Action Packages (RAP) de Firby [Fir94], que tratan de incluir en la propia sin- taxis del lenguaje primitivas ventajosas para la programaci´n de robots, como la o descomposici´n de tareas, la monitorizaci´n de ejecuci´n, la sincronizaci´n, etc. o o o o Estos lenguajes llevan asociada una sem´ntica que es una apuesta cognitiva sobre a c´mo generar el comportamiento en los robots. o En los brazos robotizados industriales es frecuente el uso de lenguajes de ba- jo nivel, pr´cticamente ensamblador [BM03] del microprocesador de turno. Por a el contrario, en los robots m´viles quedan lejos los tiempos de programaci´n en o o ensamblador para hacer un c´digo eficiente en extremo. La incorporaci´n creciente o o del ordenador personal como procesador principal ha abierto el paso a toda suerte de lenguajes de alto nivel. Hay robots programados con JAVA, con Python, con C, con C++, Visual Basic, etc. Incluso para robots con microprocesadores suele haber compiladores cruzados espec´ ıficos que permiten la programaci´n en lengua- o jes de alto nivel. Por ejemplo, el robot EyeBot que incorpora el microcontrolador Motorola 68332, se programa en C. Normalmente la plataforma de desarrollo suele determinar el lenguaje en el que se escribe la aplicaci´n, pues se obliga a ello para reutilizar la funcionalidad o ya resuelta en la plataforma. Del mismo modo, un conjunto amplio de grupos de investigaci´n realiza sus desarrollos en C/C++, y la reutilizaci´n e integraci´n o o o de su software es m´s sencilla en este lenguaje com´n. Tambi´n hay platafor- a u e mas que no imponen un lenguaje determinado a las aplicaciones. Por ejemplo, en Player/Stage/Gazebo (PSG) [GVH03, VGH03] la funcionalidad se ofrece a trav´s e de mensajes de red a un servidor, la aplicaci´n puede estar escrita en cualquier o lenguaje siempre que respete el protocolo, y existen librer´ hechas en C, C++, ıas Tcl, Python, Java y Common Lisp que encapsulan ese di´logo en el cliente. En a la plataforma Miro [USEK02] la funcionalidad se ofrece a trav´s de objetos COR- e BA que exportan sus interfaces, las aplicaciones pueden escribirse en cualquier
  • 11. 2 SOFTWARE DE ROBOTS 11 lenguaje en el que exista soporte para el estandard CORBA. Sin duda los lenguajes m´s utilizados en la programaci´n de robots son los a o basados en texto, por su flexibilidad y potencia expresiva. Sin embargo, un caso curioso de lenguaje es el que incluye LEGO para que los ni˜os programen sus n robots RCX [BM03], c´digo-RCX, que es completamente visual. En c´digo-RCX un o o programa consiste en una columna que se forma encadenando en secuencia bloques gr´ficos que son instrucciones. Estas instrucciones son de espera, de actuaci´n, a o de suma a una variable, etc. Se incluyen bloques condicionales, con dos ramas salientes, que hacen avanzar el flujo de programa por una de ellas, dependiendo de alguna condici´n sensorial. Se pueden incluir varias columnas, a modo de hilos o de ejecuci´n concurrentes. Tambi´n se utiliza un lenguaje visual en los entornos o e Robolab10 y RobotFlow/FlowDesigner [CLM+ 04], que permiten encadenar bloques gr´ficos funcionales con entradas y salidas. El programa del robot se materializa a en una red de bloques que configura un determinado flujo de la informaci´n desde o los sensores a los actuadores. Un lenguaje que tuvo mucha presencia en los primeros a˜os de la rob´tica, y que n o rezuma la influencia de los trabajos en Inteligencia Artificial es Lisp. Actualmente uno de los lenguajes m´s extendidos para programar robots es C. Este lenguaje a supone un buen compromiso entre potencia expresiva y rapidez. Como lenguaje compilado su eficiencia temporal es superior a otros lenguajes interpretados. Hasta hace unos a˜os gran parte del software proporcionado por los fabricantes de robots n estaba codificado en C, como las librer´ de Saphira [Act99] con que se vend´ los ıas ıan robots de Activmedia, o el entorno de desarrollo de los robots de RWI [RWI96]. Muchos robots peque˜os se programan en C, como el robot EyeBot [Br¨03] y n a el robot LEGO RCX, que se puede programar con una variante recortada de C llamada NQC [Bau00]. Recientemente se puede observar un crecimiento en los desarrollos y aplica- ciones en C++. Por ejemplo, el entorno ARIA [Act02] para programar robots de ActivMedia, el entorno OPEN-R [Son03a, Son03b] de programaci´n del perrito Ai- o bo de Sony, la plataforma Miro [USEK02], la plataforma Mobility [RWI99], etc. El principal avance sobre C es que proporciona la abstracci´n de orientaci´n objetos, o o con los mecanismos de herencia y polimorfismo asociados. Potencialmente tambi´n e simplifica la reutilizaci´n de componentes. Una ventaja m´s es que la portabilidad o a desde C a C++ es relativamente sencilla. Este crecimiento refleja la tendencia en la programaci´n de robots a la orientaci´n a objetos, a encapsular la funcionalidad o o en forma de objetos con m´todos que se pueden invocar. e 10 http://www.ni.com/company/robolab.htm
  • 12. 3 SISTEMAS OPERATIVOS 12 3. Sistemas operativos Como hemos mencionado, la primera opci´n para el desarrollador de aplicacio- o nes rob´ticas consiste en escribir su c´digo sobre la funcionalidad que le proporcio- o o na el sistema operativo de la computadora a bordo del robot. La misi´n principal o de ese sistema operativo es ofrecer a los programas acceso b´sico al hardware del a robot, permitir su manipulaci´n y uso desde los programas. Fundamentalmente o debe permitir recoger lecturas de los sensores y enviar ´rdenes a los actuadores. o Para ´sto el sistema operativo incorpora drivers que dan soporte software de bajo e nivel a los dispositivos f´ ısicos. Por ejemplo, en el B21 [RWI94] el kernel de Linux in- corpora el driver de la tarjeta ISA a la que se conectan los sensores de ultrasonidos (Access Bus Card ), y que permite al programa obtener sus medidas. Si el robot tiene hardware de comunicaciones, t´ ıpicamente inal´mbrico para a mayor movilidad, el sistema operativo ofrece el soporte para utilizarlo desde el programa de aplicaci´n. Por ejemplo, el perrito Aibo incorpora en sus ultimos o ´ modelos una tarjeta wireless 802.11 para comunicaci´n inal´mbrica. Su sistema o a operativo permite al programa el env´ y recepci´n de datos a trav´s de esa tarjeta, ıo o e implementando una pila de TCP/IP. En cuanto a la multitarea, el sistema operativo y las librer´ que los acom- ıas pa˜an suele ofrecer la posibilidad de programar con distintos procesos y/o con n varias hebras, ya sean con o sin desalojo. Tambi´n suele incluir mecanismos de co- e municaci´n interprocesos como la memoria compartida, las tuber´ (pipes), etc. y o ıas recursos t´ ıpicos de concurrencia (como los sem´foros y los monitores) para la sin- a cronizaci´n, para evitar las condiciones de carrera y los interbloqueos, garantizar o exclusi´n mutua, etc. o Los sistemas operativos y las librer´ que los acompa˜an suelen incluir tam- ıas n bi´n soporte para los elementos de interacci´n del robot, ya sean botones f´ e o ısicos, pantallas peque˜as, pantallas normales de ordenador, etc. Este soporte permite la n creaci´n de interfaces gr´ficas, lo que combinado con las comunicaciones, puede o a facilitar la visualizaci´n remota en un ordenador externo. o Adem´s de las interfaces de programaci´n, el sistema operativo de un robot a o ofrece siempre los medios para cargar distintos programas en ´l y ejecutarlos en los e procesadores de a bordo. Esta funci´n es necesaria porque los robots programables, o por su propia definici´n, no tienen un c´digo inalterable sino que pueden ejecutar o o diferentes programas. 3.1. Sistemas operativos dedicados y generalistas En el mercado de robots m´viles programables gran parte de los robots pe- o que˜os tienen su propio sistema operativo dedicado, muy ligado al procesador, a n los sensores y a los actuadores concretos. El sistema operativo ROBIOS en el robot
  • 13. 3 SISTEMAS OPERATIVOS 13 EyeBot [Br¨03] (en la figura 3), Aperios en el Aibo (en la figura 7), o BrickOS11 a [Nie00] para el LEGO RCX (en la figura 8) son ejemplos relevantes. Con la irrupci´n de los ordenadores personales (port´tiles o no) como procesa- o a dores principales en los robots, los sistemas operativos de prop´sito general como o Linux o MS-Windows han entrado en el mundo de los robots. Estos sistemas, adem´s de los drivers del hardware, incluyen abstracciones y un conjunto muy a extenso de bibliotecas gen´ricas, que tambi´n son utiles para la programaci´n de e e ´ o robots. Por ejemplo, bibliotecas e interfaces para la multitarea, las comunicaciones y las interfaces gr´ficas. a Figura 3: Robot EyeBot en el corre el sistema operativo ROBIOS ROBIOS ROBIOS es una muestra significativa de sistema operativo dedicado. El robot EyeBot [Br¨03] es un robot de peque˜o tama˜o que viene equipado con un mi- a n n croprocesador Motorola 68332 a 35 MHz. Al robot se le conectan dos motores con encoders, tres sensores de infrarrojos y una c´mara digital. Su hardware tambi´n a e incluye una peque˜a pantalla, cuatro botones y un radioenlace. El sistema ope- n rativo permite la carga de programas a trav´s de un puerto serie y su ejecuci´n e o pulsando los botones. Como acceso b´sico al hardware desde los programas, RO- a BIOS incluye una API (Application Programming Interface) con funciones para recoger las lecturas de los sensores de infrarrojos, para obtener las im´genes de la a c´mara y para hacer girar los motores a cierta velocidad. a En cuanto a comunicaciones, ROBIOS incluye dos funciones que le permiten enviar y recibir bytes a trav´s del radioenlace, a otros EyeBots o un PC que se e 11 El sistema operativo libre para el RCX se llamaba inicialmente LegOS, posteriormente cam- bi´ su nombre oficial a BrickOS o
  • 14. 3 SISTEMAS OPERATIVOS 14 encuentren dentro del alcance radio de su antena. En cuanto a la interfaz gr´fica, a ROBIOS incluye primitivas para muestrear si los botones est´n pulsados, pintar y a refrescar la pantalla. Con respecto a la multitarea, ROBIOS tiene primitivas para crear hebras, de- tenerlas durante un tiempo, matarlas, etc. Adem´s ofrece dos modos de repartir el a tiempo de procesador entre ellas: con desalojo (en rodajas de tiempo) y sin desalojo (con un testigo que va pas´ndose de una hebra a la siguiente). Correspondi´ndose a e a las hebras de kernel o de usuario t´ ıpicas de sistemas operativos tradicionales. Tambi´n ofrece sem´foros para coordinar la ejecuci´n concurrente de esas hebras e a o y el acceso a variables compartidas. GNU/Linux Un sistema operativo generalista que ha ganado gran aceptaci´n en la comuni- o dad rob´tica es GNU/Linux [RWI99, GVH03, MRT03]. Este sistema es software o libre y cuenta con una comunidad muy activa y amplia de desarrolladores, lo cual garantiza en la pr´ctica la incorporaci´n al sistema del soporte de los nuevos a o dispositivos hardware que van ofreciendo los avances tecnol´gicos. Este sistema o operativo es muy potente y robusto, y ofrece sus servicios en forma de llamadas al sistema y de funciones de biblioteca. Hay llamadas para crear procesos, hebras, controlar su coordinaci´n, comunicaciones, etc. Adem´s incluye un amplio abanico o a de herramientas de desarrollo, como el compilador de C/C++ gcc, el editor emacs, etc. Respecto a la multitarea, GNU/Linux incluye la biblioteca Pthreads como re- ferencia para materializar las hebras de las aplicaciones. Este paquete genera he- bras POSIX de kernel que se pueden comunicar a trav´s de memoria compartida. e GNU/Linux tambi´n ofrece sem´foros para controlar el acceso a esas variables e a compartidas o resolver problemas de concurrencia que puedan aparecer. Estos me- canismos se suman a los que ya ofrece GNU/Linux como creaci´n de procesos, o tuber´ fifos, memoria mapeada, etc., que siempre est´n disponibles. ıas, a En cuando a comunicaciones GNU/Linux ofrece los sockets para la comunica- ci´n interm´quina entre varios programas, una abstracci´n que permite olvidarse o a o de los detalles de red, protocolos 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 programador de la aplicaci´n no debe preocuparse de localizar la o m´quina destino, ni modificar su c´digo cuando, por ejemplo, el robot se conecta a o a la red por ethernet en vez de red inal´mbrica. a GNU/Linux ofrece tambi´n las librer´ necesarias para crear y manejar inter- e ıas faces gr´ficas en X-Window, que es el sistema m´s extendido en el mundo Unix. a a Encima de las librer´ b´sicas (Xlib y Xt-intrinsics), que son flexibles pero ıas a complejas, GNU/Linux dispone de varias librer´ que simplifican el manejo de ıas
  • 15. 3 SISTEMAS OPERATIVOS 15 la interfaz gr´fica, como Qt, XForms, GTK, etc. Una ventaja natural de las inter- a faces en X-Window es la visualizaci´n remota: es muy sencillo que un programa o ejecut´ndose en un ordenador GNU/Linux (e.g. el ordenador a bordo del robot) a vuelque su interfaz gr´fica a otro ordenador GNU/Linux (e.g. el PC de trabajo del a programador). Una de las desventajas del uso de GNU/Linux en rob´tica es que no es un o sistema de tiempo real, pues no permite acotar plazos. No ofrece garant´ de plazos ıa (tiempo real duro) porque su sistema de planificaci´n de procesos no implementa o esas garant´ En este sentido contrasta con sistemas operativos similares como ıas. QNX, o la variante RT-Linux. Sin embargo, GNU/Linux resulta suficientemente a ´gil para los requisitos de aplicaciones no cr´ ıticas. Por ejemplo, permite detener hebras durante milisegundos. 3.2. Procesadores, sensores y actuadores El hardware de los robots consiste principalmente en un conjunto de procesa- dores, sensores y actuadores, y puede incorporar tambi´n elementos de comuni- e caciones e interacci´n. Adem´s de ser muy heterog´neo, este hardware evoluciona o a e r´pidamente, porque los avances tecnol´gicos proporcionan nuevos y mejores dis- a o positivos a un ritmo alto. Este dinamismo se contagia al software, que debe evo- lucionar continuamente para asimilar el soporte a las prestaciones de los nuevos dispositivos. En cuanto a sensores, la tendencia reciente m´s marcada es la incorporaci´n de a o la visi´n y del l´ser al equipamiento sensorial de los robots. En primer lugar, las o a c´maras son cada vez m´s frecuentes en los robots, tanto monoculares como pares a a est´reo. Hasta ahora las m´s utilizadas eran anal´gicas, las cuales sol´ ser caras y e a o ıan necesitaban de tarjetas capturadoras (Matrox, BTTV, etc.) con drivers espec´ ıficos para digitalizar la imagen. En los ultimos a˜os la tecnolog´ ha proporcionado ´ n ıa c´maras digitales a un precio razonable (principalmente destinadas a aplicaciones a multimedia), que se han introducido en los robots como otro sensor m´s. Las a prestaciones de esas c´maras siguen mejorando r´pidamente, hacia mayor calidad a a de imagen, mayor frecuencia, etc. Para dar soporte a estas c´maras y las anteriores a en Linux se ha estandarizado la interfaz video4linux. Tambi´n hay soporte para e el bus IEEE-1394 (firewire), con el cual se pueden tener dos c´maras digitales a capturando a 30 fps sin apenas consumo computacional. La principal dificultad asociada a las c´maras es que resulta dif´ extraer informaci´n util del enorme a ıcil o ´ flujo de datos que proporcionan. En segundo lugar, desde finales de los a˜os 90 n se ha difundido enormemente el empleo del sensor l´ser (por ejemplo de la casa a SICK) como sensor de obst´culos en los robots de interiores. Este dispositivo mide a la distancia a obst´culos en un haz de 180o , con una resoluci´n de 1-2 cm y precisi´n a o o inferior a 1 grado. El l´ser proporciona informaci´n muy precisa de obst´culos, con a o a
  • 16. 3 SISTEMAS OPERATIVOS 16 una interpretaci´n directa para la navegaci´n. o o En cuanto a los actuadores, se ha observado un crecimiento en el n´mero de u robots con patas, tanto en productos comerciales (los Aibo de Sony) como en los prototipos b´ ıpedos (Asimo de Honda, Qrio de Sony). Sin embargo sigue siendo mayoritario el uso de robots con ruedas, que obvian los problemas de equilibrio y ofrecen una interfaz m´s sencilla para el movimiento. Tambi´n se aprecia una a e tendencia a la miniaturizaci´n: mientras a principios de los a˜os 90 los robots m´s o n a exitosos en entornos de investigaci´n eran el B21 o los Nomad, en los ultimos a˜os o ´ n son m´s frecuentes robots menores como el Pioneer o incluso los Aibo. a En cuanto a los procesadores, antes de 1970 los c´mputos se realizaban fuera del o robot. Los ordenadores eran demasiado grandes y pesados para pensar en ponerlos sobre un robot m´vil. Por ejemplo, el robot pionero Shakey utilizaba una placa o de control l´gico en el veh´ o ıculo y un computador SDS-940 fuera para realizar el an´lisis de im´genes y los c´lculos necesarios. Con el avance de la tecnolog´ (e.g. a a a ıa bater´ m´s peque˜as) y la reducci´n en el tama˜o de los ordenadores se tendi´ a ıas a n o n o incluir todo el c´mputo necesario a bordo del robot m´vil. Por ejemplo, en los o o a˜os 80 el robot Hilare ya utilizaba una red de procesadores espec´ n ıficos dentro de su estructura mec´nica: IBM 30/33, Intel 8085/86, Sel 32 77/80, etc. a Desde comienzo de los a˜os 90 los ordenadores personales (PC) se han insertado n como elementos principales de c´mputo en los robots de investigaci´n, primero los o o PCs de sobremesa y despu´s los PC port´tiles. El precio relativamente asequible y e a el crecimiento exponencial de su capacidad de c´lculo han favorecido esa irrupci´n. a o Los procesadores espec´ ıficos son cada vez m´s escasos y se han dejado para tareas a de bajo nivel, muy concretas. Por ejemplo, los procesadores digitales de se˜al n dedicados al procesamiento espec´ ıfico de im´genes; o los microcontroladores para a controlar los motores y recoger medidas de sensores con poco ancho de banda (como los ultrasonidos, los od´metros y los de contacto) que incorporan robots o como el Pioneer o el B21 (figura 4). La configuraci´n de un PC y varios microcontroladores es muy frecuente hoy o d´ En los microcontroladores se ejecuta un sistema operativo de bajo nivel, como ıa. el P2OS en los Pioneer [Act03], o rFLEX en los B21 [RWI99], y la comunicaci´n o con el PC se realiza a trav´s del puerto serie RS232, respetando cierto protocolo e estable. Esta configuraci´n concentra la mayor parte del c´mputo en el PC, que o o es el procesador m´s poderoso, y ofrece la ventaja de que actualizar el PC cuando a se queda obsoleto es muy f´cil. a En cuanto a la conexi´n de sensores y actuadores con el procesador del PC, o el puerto serie es una buena opci´n. Es el caso de los cuellos mec´nicos (pantilt), o a los esc´neres l´ser de SICK, sensores de GPS, etc. Otras interfaces estandarizadas a a son el bus USB o el bus IEEE-1394. Una opci´n m´s de conexi´n son las tarjetas o a o especiales dedicadas, que se enganchan a alg´n bus del PC (ISA, PCI o incluso u
  • 17. 4 PLATAFORMAS DE DESARROLLO 17 red inalámbrica 802.11b radioenlace Pentium III portátil red ethernet interna RS232 RS232 RS232 USB Intel 486 Pentium Pro paquetes SIP pantilt Microcontrolador láser RS232 Siemens 88C166 RS232 bus de acceso cámara microcontroladores sónares odómetros motores contacto PWM odómetros motores PanTilt cámara sónares contacto Figura 4: Arquitectura de computadores (a) de un B21 (b) de un Pioneer PCMCIA). Es el caso de la tarjeta que hay en el B21 para s´nares, las tarjetas o digitalizadoras de im´genes, etc. Una tercera opci´n son las tarjetas de adquisici´n a o o de datos que incorporan conversores A/D, D/A, entradas y salidas tanto digitales como anal´gicas. Estas tarjetas permiten integrar sensores a muy bajo nivel. o 4. Plataformas de desarrollo Las aplicaciones con robots presentan cada vez de mayor complejidad y ofrecen mayor funcionalidad. Como hemos argumentado en la secci´n 2, escribir programas o para robots es complicado. En muchos campos del software se ha ido implantando middleware que simplifica el desarrollo de nuevas aplicaciones en esos campos; por ejemplo, Matlab para aplicaciones de ingenier´ CORBA o ACE para aplicaciones ıa, distribuidas, J2EE para aplicaciones y servicios web, etc. Este middleware propor- ciona contextos n´ıtidos, estructuras de datos predefinidas, bloques muy depurados de c´digo de uso frecuente, protocolos est´ndard de comunicaciones, mecanismos o a de sincronizaci´n, etc. Del mismo modo, a medida que el desarrollo de software o para robots m´viles ha ido madurando han ido apareciendo diferentes plataformas o middleware [USEK02]. Hoy d´ los fabricantes m´s avanzados incluyen plataformas de desarrollo para ıa a simplificar a los usarios la programaci´n de sus robots. Por ejemplo, Activmedia o ofrece la plataforma ARIA [Act02] para sus robots Pioneer, PeopleBot, etc.; iRo- bot ofrece Mobility [RWI99] para sus B21, B14, etc.; Evolution Robotics vende su plataforma ERSP; y Sony ofrece OPEN-R [MGCCM04] para sus Aibo. Otros fabricantes menos avanzados carecen de plataforma de desarrollo u ofrecen una
  • 18. 4 PLATAFORMAS DE DESARROLLO 18 muy limitada. Por ejemplo, para programar los robots RobuCar y RobuLab de Robosoft el desarrollador s´lo dispone de unas bibliotecas con primitivas en C que o ofrecen una interfaz b´sica, de sistema operativo. a Adem´s de los fabricantes, muchos grupos de investigaci´n han creado sus pro- a o pias plataformas de desarrollo. Varios ejemplos son la suite de navegaci´n CAR- o 12 MEN [MRT03] de Carnegie Mellon University, Orocos [Bru01], PSG [GVH03], Miro [USEK02], JDE [CM02], etc. La mayor´ de estas plataformas se distribuyen ıa como software libre por los propios creadores. Al igual que ocurre con los simu- ladores, mientras los fabricantes buscan que su plataforma sirva para todos sus modelos, los grupos de investigaci´n aspiran a mayor universalidad y sus platafor- o mas tratan de incluir soporte para los robots de sus laboratorios, t´ ıpicamente de diferentes fabricantes. El objetivo fundamental de estas plataformas es hacer m´s sencilla la creaci´n a o de aplicaciones para robots. Hemos identificado varias caracter´ ısticas que estas plataformas presentan para lograrlo: uniforman y simplifican el acceso al hard- ware, ofrecen una arquitectura sofware concreta y proporcionan un conjunto de bibliotecas o m´dulos con funciones de uso com´n en rob´tica que el cliente pue- o u o de reutilizar para programar sus propias aplicaciones. Dedicaremos esta secci´n a o describir estas tres caracter´ ısticas. Aunque hay plataformas m´s y menos completas, en general aumentan la in- a dependencia de las aplicaciones respecto del hardware y de los sistemas operativos subyacentes. Las plataformas establecen un suelo m´s o menos firme para el de- a sarrollo de aplicaciones con robots. Son ellas las que asimilan los cambios de bajo nivel, tratando de mantener la misma interfaz abstracta para las aplicaciones, tanto en el acceso a sensores y actuadores como a los mecanismos multitarea o funcionalidades ya asentadas en los robots. 4.1. Abstracci´n del hardware o En primer lugar, la plataforma uniforma y simplifica el acceso al bajo nivel. Normalmente ofrece un acceso a sensores y actuadores m´s abstracto y simple que a el que proporciona el sistema operativo. Por ejemplo, si se dispone de un robot Pioneer equipado con un sensor l´ser SICK, la aplicaci´n puede acceder a sus a o medidas a trav´s de las funciones de la plataforma ARIA o pedirlas y recogerlas e directamente a trav´s del puerto serie. Utilizando ARIA basta invocar al m´todo e e getRawReadings sobre un objeto de la clase ArSick, la plataforma se encarga de mantener actualizadas las variables con las lecturas. Utilizando directamente el sistema operativo la aplicaci´n debe solicitar y recoger peri´dicamente las lecturas o o al sensor l´ser a trav´s del puerto serie, y conocer el protocolo del dispositivo para a e 12 http://www-2.cs.cmu.edu/~carmen
  • 19. 4 PLATAFORMAS DE DESARROLLO 19 componer y analizar correctamente los mensajes de bajo nivel. El acceso abstracto tambi´n se ofrece para los actuadores. Por ejemplo, en vez e de ofrecer comandos de velocidad para cada una de las dos ruedas motrices de un robot Pioneer, la plataforma Miro [USEK02] ofrece una sencilla interfaz de V-W (velocidad de tracci´n y de giro) para la actuaci´n motriz a trav´s de la clase o o e position. Ella se encarga de hacer las transformaciones oportunas, de enviar a cada rueda las consignas necesarias para que el robot consiga esas velocidades comandadas de tracci´n (V) y de giro (W). o Hattig et al. [HHB03] apuntan que la uniformidad en el acceso al hardware es el primer paso para favorecer la reutilizaci´n de software dentro de la rob´tica. Esta o o caracter´ıstica est´ presente en todas las plataformas que hemos estudiado, aunque a cada una lo haga a su manera. En la plataforma ERSP de Evolution Robotics el acceso al bajo nivel recibe el nombre de Hardware Abstraction Layer, (figura 5)y en Miro, Service Layer. En OPEN-R, en Mobility y en ARIA la API de acceso a los sensores y actuadores viene dada por los m´todos de un conjunto objetos. En e JDE [CM02] y en PSG el acceso abstracto al hardware lo marca un protocolo, con vocaci´n de est´ndard, entre las aplicaciones y los servidores. o a Con la interfaz abstracta de acceso a sensores y actuadores, m´s o menos es- a table, las plataformas favorecen la portabilidad de las aplicaciones entre robots distintos. Ellas se encargan de materializar la misma interfaz para cada diferente robot soportado. Por ejemplo, una misma aplicaci´n de movimiento escrita sobre o Miro [USEK02] puede gobernar con m´ ınimas adaptaciones robots diferentes como el B21, el Pioneer o el robot casero Sparrow porque todos ellos est´n soportados en a la plataforma. Otro ejemplo m´s, en Miro la clase de sensor distancia vale para a dispositivos diferentes como los s´nares, los infrarrojos o el l´ser, cada uno de los o a cuales proporciona informaci´n de proximidad a objetos, con sus peculiaridades. o 4.2. Arquitectura software En segundo lugar, la plataforma ofrece una arquitectura software determina- da. Con ello fuerza a escribir las aplicaciones de cierta manera, recortando en flexibilidad, pero ganando en simplicidad y en portabilidad. La arquitectura software fija la manera concreta en la que el c´digo de la o aplicaci´n debe acceder a las medidas de los sensores, ordenar a los motores, o uti- o lizar la funcionalidad ya desarrollada. Muchas son las alternativas software para ello: llamar a funciones de biblioteca, leer variables, invocar m´todos de objetos, e enviar mensajes por la red a servidores, etc. Por ejemplo, la plataforma CAR- MEN [MRT03] presenta interfaces funcionales, la plataforma Miro la invocaci´n o de m´todos de objetos distribuidos, la plataforma TCA [SGFB97] requiere del e paso de mensajes entre distintos m´dulos, la plataforma JDE [Ca˜03] requiere la o n activaci´n de procesos y la lectura o escritura de variables. Esta apariencia de las o
  • 20. 4 PLATAFORMAS DE DESARROLLO 20 interfaces depende de c´mo se encapsule en cada plataforma la funcionalidad ya o desarrollada. Al escribirse dentro de la arquitectura software de la plataforma, el programa de la aplicaci´n toma una organizaci´n concreta. As´ se puede plantear como una o o ı, colecci´n de objetos (como en OPEN-R), como un conjunto de m´dulos dialogando o o a trav´s de la red (como en TCA), como un proceso iterativo llamando a funciones, e etc. Esta organizaci´n est´ influida por la arquitectura cognitiva, y supone un mo- o a delo de programaci´n, una estructura determinada para escribir las aplicaciones. o Hay plataformas muy cerradas, que obligan estrictamente a cierto modelo. Por ejemplo, en la plataforma RAI [RWI96] los clientes han de escribirse forzosamente como un conjunto de m´dulos RAI (hebras sin desalojo), con ejecuci´n basada en o o iteraciones. Otras arquitecturas software son deliberadamente abiertas, restringen lo m´ınimo, como PSG o CARMEN. En cuanto al modelo de programaci´n, una opci´n es organizar la aplicaci´n o o o como un unico hilo de ejecuci´n que se encarga de todo. Este modelo monohilo es ´ o muy sencillo para la programaci´n reactiva: muchas iteraciones por segundo com- o probando las condiciones relevantes. Sin embargo, cuando la aplicaci´n rob´tica o o crece en complejidad, la programaci´n secuencial se queda corta, y entonces resulta o m´s natural la programaci´n concurrente. Las arquitecturas software de las pla- a o taformas m´s avanzadas establecen mecanismos concretos para que la aplicaci´n a o se distribuya en varias unidades concurrentes. Por ejemplo, la plataforma ARIA ofrece tareas s´ıncronas y as´ ıncronas (ArPeriodicTask, ArASyncTask, ArThread), los objetos distribuidos de Miro y de Mobility pueden ser objetos activos, con hilos de ejecuci´n en su interior, y pueden notificar eventos de manera as´ o ıncrona. El mecanismo multitarea que ofrece la plataforma envuelve y simplifica la inter- faz del kernel subyacente para la multiprogramaci´n, en la cual se apoyan siempre. o Al igual que ocurre con la interfaz abstracta de acceso al hardware, la interfaz abstracta de multitarea facilita la portabilidad. Por ejemplo, la de ARIA est´ so- a portada sobre Linux y sobre MS-Windows, es exactamente la misma en ambos casos. La distribuci´n de las aplicaciones rob´ticas en procesos concurrentes es una o o tendencia firmemente confirmada en los ultimos a˜os. La distribuci´n es doble, ´ n o tanto de un proceso compuesto de varias hebras, como de varios procesos ejecu- tando en m´quinas diferentes, comunic´ndose a trav´s de la red. Todos los hilos de a a e ejecuci´n interact´an y cooperan para el fin com´n de la aplicaci´n. Los m´dulos o u u o o de RAI y las tareas as´ ıncronas de ARIA son ejemplos de hebras, con y sin desa- lojo respectivamente, dentro del mismo proceso. Los servidores y clientes de RAI, una aplicaci´n sobre PSG, los objetos distribuidos de CARMEN, de Mobility o o de Miro son muestras de la aplicaci´n compuesta de varios procesos ejecut´ndose o a en m´quinas potencialmente diferentes. Esta tendencia a la distribuci´n tiene sus a o
  • 21. 4 PLATAFORMAS DE DESARROLLO 21 ra´ıces cognitivas en las arquitecturas basadas en comportamientos, en contraste con el desarrollo monohilo secuencial que hab´ predominado hasta principios de ıa los a˜os 90. n La distribuci´n en varias hebras o procesos lleva obligatoriamente a la nece- o sidad de comunicaci´n y coordinaci´n entre ellos. Para los hilos ejecutando en la o o misma m´quina la plataforma ARIA ofrece variables comunes y varios objetos de a sincronizaci´n (ArMutex y ArCondition). Para procesos corriendo en m´quinas o a diferentes PSG y JDE ofrecen un protocolo sencillo de mensajes de texto a trav´s e de sockets. PSG incluye unas bibliotecas con una interfaz funcional para el env´ y ıo recepci´n de mensajes hacia/desde el servidor acorde a ese protocolo. Miro y Mobi- o lity resuelven la comunicacion entre objetos distribuidos con CORBA; CARMEN con TCX [Fed94]. ARIA ofrece la clase Arsockets con primitivas de apertura, etc. para que el programa maneje expl´ ıcitamente las comunicaciones. 4.3. Funcionalidades de uso com´ n u En tercer lugar, las plataformas m´s completas incluyen funcionalidades de uso a com´n en rob´tica, ya resueltas. El programador puede incorporarlas sin esfuerzo u o en su propia aplicaci´n si lo necesita. Adem´s de las librer´ sencillas de apo- o a ıas yo, como filtros de color y dem´s, estas funcionalidades engloban alguna t´cnica a e rob´tica concreta, relativamente madura, ya sea de percepci´n o de algoritmos de o o control: localizaci´n, navegaci´n local segura, navegaci´n global, seguimiento de o o o personas, habilidades sociales, construcci´n de mapas, etc. o La ventaja de integrarlas en la plataforma es que el usuario puede reutilizarlas, enteras o por partes. Esta reutilizaci´n permite acortar los tiempos de desarrollo y o reducir el esfuerzo de programaci´n necesario para tener una aplicaci´n. Al incluir o o funcionalidad com´n, el desarrollador no tiene que repetir ese trabajo y puede u construir su programa reutiliz´ndola, concentr´ndose en los aspectos espec´ a a ıficos de su aplicaci´n. Adem´s, suele estar muy probada, lo cual disminuye el n´mero o a u de errores en el programa final. La forma concreta en que se reutilizan las funcionalidades depende nuevamente de la arquitectura software y de c´mo se encapsulen en ella: m´dulos, objetos o o distribuidos, objetos locales, funciones, etc. Por ejemplo, en PSG se incluye la localizaci´n como un nuevo sensor y a su funcionalidad se accede intercambiando o mensajes con el servidor Player. En Miro la funcionalidad se encapsula en objetos distribuidos, con sus propios m´todos que se ponen a disposici´n de los dem´s e o a objetos. Por ejemplo, en el robot EyeBot las funcionalidades se ofrecen en forma de librer´ El sistema operativo ROBIOS ofrece primitivas para leer la imagen ıas. que est´ capturando la c´mara, y para girar cada rueda motriz a cierta velocidad. a a Sobre esas primitivas hay una librer´ que ofrece control V-W y otra con varios ıa filtros para las im´genes (filtro Sobel, filtro Laplace, etc.). En Miro, el control V- a
  • 22. 4 PLATAFORMAS DE DESARROLLO 22 W se ofrece en la capa de abstracci´n del hardware, mientras que en el EyeBot se o ofrece como librer´ de uso opcional. ıa Figura 5: M´dulos de navegaci´n, visi´n e interacci´n en la plataforma ERSP o o o o Otras funcionalidades m´s elaboradas son la navegaci´n de un lugar a otro pla- a o nificando trayectorias, la construcci´n de mapas basados en rejillas, la localizaci´n o o basada en correspondencia de segmentos, la localizaci´n con filtros de part´ o ıculas, el procesamiento visual est´reo, etc. Normalmente estas funcionalidades nacieron e como t´cnicas novedosas de investigaci´n y al consolidarse van siendo integradas e o en las plataformas de desarrollo, tanto en aquellas de grupos de investigaci´n como o en las de los fabricantes. De esta manera, la cantidad de bibliotecas disponibles va creciendo a medida que van madurando las t´cnicas concretas. e La plataforma Miro incluye en su Miro Class Framework [USEK02] clases con algunos comportamientos, con algoritmos de localizaci´n y est´n trabajando pa- o a ra incorporar algoritmos de planificaci´n de caminos. La plataforma CARMEN o [MRT03] incluye navegaci´n basada en planificaci´n por descenso de gradiente, o o de Konolige, y m´dulos con las t´cnicas m´s exitosas desarrolladas en Carnegie o e a Mellon como la construcci´n probabil´ o ıstica de mapas de ocupaci´n con forma de o rejilla y la localizaci´n dentro de esos mapas siguiendo t´cnicas de MonteCarlo. o e Tambi´n incorpora la detecci´n de personas y el seguimiento. e o Los fabricantes suelen vender esas funcionalidades por separado o incluirlas como valor a˜adido de su propia plataforma. Por ejemplo, la empresa ActivMedia n proporciona gratuitamente la plataforma de desarrollo ARIA, pero vende sepa- radamente sus paquetes ARNL para navegaci´n y localizaci´n, la utilidad Mapper o o para la construcci´n de mapas y ACTS para el seguimiento de color. La plataforma o ERSP incluye tres paquetes sobre su arquitectura b´sica: uno de interacci´n, otro a o
  • 23. 4 PLATAFORMAS DE DESARROLLO 23 de navegaci´n y otro visi´n, seg´n ilustra la figura 5. En el m´dulo de interac- o o u o ci´n se incluye la capacidad de reconocimiento del habla y s´ o ıntesis de voz, para interactuar de modo verbal con su robot. En el m´dulo de navegaci´n se incluye o o la capacidad de construcci´n autom´tica de mapas, la localizaci´n en ellos y su o a o utilizaci´n para planificar trayectorias. o 4.4. Arquitectura cognitiva Los comportamientos que se han conseguido en robots reales y a los que se aspira son cada vez m´s ricos y variados, y con ello m´s dif´ a a ıciles de generar. De manera que los programas que los causan tienden a ser cada vez m´s complejos. La a arquitectura software ofrece un modelo de programaci´n, una cierta manera de or- o ganizar ese c´digo. Normalmente este modelo resulta suficiente cuando se persigue o generar un comportamiento espec´ ıfico en el robot, pero no suele escalar cuando se quiere integrar en un unico sistema un abanico amplio de comportamientos. ´ Es decir, suele resultar insuficiente cuando la aplicaci´n apunta a un repertorio o amplio de conductas artificiales y este repertorio ha de desplegarse coherentemen- te en cada momento dependiendo de los objetivos del robot y del entorno. Este problema es muy complejo y al d´ de hoy sigue siendo un tema abierto y activo ıa de investigaci´n, no hay una soluci´n universalmente admitida. o o Se denomina arquitectura cognitiva de un robot a la organizaci´n de sus capa- o cidades sensoriales y de actuaci´n para generar un repertorio de comportamientos o [Ca˜03]. Para comportamientos simples casi cualquier organizaci´n resulta v´lida, n o a pero para comportamientos complejos se hace patente la necesidad de una bue- na organizaci´n cognitiva. De hecho, puede llegar a ser un factor cr´ o ıtico: con una buena organizaci´n s´ se puede generar cierto comportamiento y con una mala no, o ı se tiene un codigo fr´gil y la complejidad se vuelve inmanejable. En la comunidad a rob´tica han surgido a lo largo de su historia diversas escuelas cognitivas o para- o digmas para orientar la organizaci´n del sistema en esos casos. En [Ca˜03] hay una o n buena recopilaci´n de los principales paradigmas con sus arquitecturas cognitivas o m´s representativas: sistemas deliberativos, reactivos, sistemas h´ a ıbridos (de tres capas, TCA,...), sistemas basados en comportamientos, basados en etolog´ etc. ıa, M´s all´ de la interfaz estable para el acceso a un hardware diverso que propor- a a cionan las plataformas, la estandarizaci´n del comportamiento artificial, su divisi´n o o en unidades reutilizables, es una cuesti´n muy complicada. Hattig et al.[HHB03] o opinan que a´n es demasiado pronto para buscar est´ndares en este nivel, en el u a modo de generar comportamientos. Recomiendan ce˜irse por ahora la estanda- n rizaci´n del acceso a los sensores y actuadores, de lo que ellos llaman bloques o constituyentes. La relaci´n entre las arquitecturas cognitivas y las de software es m´ltiple. o u Las arquitecturas cognitivas se materializan en alguna arquitectura software, de
  • 24. 4 PLATAFORMAS DE DESARROLLO 24 manera que los comportamientos generados siguiendo cierto paradigma acaban im- plement´ndose con alg´n programa concreto. De hecho, las propuestas cognitivas a u m´s fiables cuentan con implementaciones pr´cticas relevantes en arquitecturas a a software concretas: deliberativas (SOAR), h´ ıbridas (e.g. TCA [Sim94, SGFB97], Saphira [KM98]), basadas en comportamientos (subsunci´n [Bro86], JDE), etc. o Una buena arquitectura cognitiva favorece la escalabilidad de la plataforma. Hay plataformas software debajo de las cuales subyace un modelo cognitivo, pero tambi´n hay otras en las que no. No obstante, unas arquitecturas software e cuadran mejor con ciertas escuelas cognitivas que con otras. Los sistemas delibe- rativos cl´sicos cuadran con la programaci´n l´gica (e.g. Prolog), con una des- a o o composici´n funcional en bibliotecas (m´dulos especialistas) y con las aplicaciones o o monohilo con un s´lo flujo iterativo de control (sensar-modelar-planificar-actuar). o Por el contrario, los sistemas basados en comportamientos cuadran mejor con la programaci´n concurrente, donde se tienen varios procesos funcionando en parale- o lo y que colaboran al funcionamiento global. Resulta natural asimilar cada unidad de comportamiento al concepto software de proceso, o incluso al de objeto activo. La distinci´n entre arquitectura software y arquitectura cognitiva se hace pa- o tente en el ejemplo de Saphira [KM98]. El nombre Saphira antes designaba a la propuesta cognitiva y tambi´n la plataforma software13 [Act99] asociada. Ahora e se han separado, la plataforma se ha reescrito y rebautizado como ARIA [Act02]. Ella ofrece una capa de acceso abstracto al hardware y una arquitectura software basada en objetos. El nombre de Saphira se ha reservado para el software que ma- terializa la arquitectura cognitiva h´ ıbrida, la cual se monta encima de ARIA. Esta separaci´n tambi´n es clara en el caso de JDE [Ca˜03], que ofrece una plataforma o e n software de servidores por un lado, y un conjunto de esquemas que materializan la apuesta cognitiva por otro. 4.5. Plataformas de software libre Como ya hemos comentado, existen plataformas de desarrollo creadas por los fabricantes de robots y otras creadas por grupos de investigaci´n. La mayor´ de o ıa estas ultimas se publican con licencia de software libre, con la idea de contribuir ´ al libre intercambio de conocimiento en el ´rea y con ello al avance de la dis- a ciplina rob´tica. Dedicamos esta secci´n a enumerar las plataformas libres m´s o o a importantes; en las referencias se pueden encontrar descripciones m´s detalladas. a 13 hasta la versi´n 6.2 o
  • 25. 4 PLATAFORMAS DE DESARROLLO 25 Plataforma Robots soportados Sistema Operativo Sw libre Player/Stage Pioneer, B21 Linux s´ ı Miro Pioneer, B21, Sparrow Linux s´ ı CARMEN Pioneer, B21 Linux s´ ı JMR Pioneer s´ ı Robotflow/Flowdesigner Pioneer s´ ı Webots, SysQuake Koala, Kephera no ARIA Pioneer Linux/MS-Windows s´ ı OPEN-R Aibo Aperios no ERSP ER1 Linux/MS-Windows no Mobility RWI B21 Linux no Cuadro 1: Tabla con plataformas de programaci´n robots o Player/Stage/Gazebo La plataforma Player/Stage/Gazebo14 (PSG) [GVH03] fue creada inicialmente en la Universidad de South California. Actualmente est´ mantenida por Richard a Vaughan, Andrew Howard y Brian Gerkey. Se compone de dos simuladores Stage y Gazebo (que ya fueron comentados en la secci´n 2.3), y un servidor Player al que se o conecta el programa de la aplicaci´n para recoger los datos sensoriales o comandar o las ´rdenes a los actuadores. El soporte a robots variados como los Pioneer, los o B21, etc. y los simuladores que incorpora la convierten en una plataforma muy completa. Ha ganado popularidad y usuarios, actualmente m´s de 20 laboratorios a la utilizan en sus proyectos. En PSG los sensores y actuadores se contemplan como si fueran ficheros [VGH03], flujos, dispositivos de modo car´cter al estilo de Unix, y por ello se manipulan a a trav´s de cinco operaciones b´sicas: abrir, cerrar, leer, escribir y configurar. Para e a usar un sensor, las aplicaciones tienen que abrir el dispositivo, quiz´ configurarlo a y leer de ´l, cerr´ndolo al final. An´logamente, para utilizar un actuador, las apli- e a a caciones tienen que abrirlo, tal vez configurarlo y escribir datos en ´l, cerr´ndolo e a al final. Cada tipo de dispositivo se define en PSG con una interfaz, de manera que los sensores sonar del robot Pioneer y los sensores sonar del robot B21 son instancias de la misma interfaz. La unica diferencia, invisible para los programas, ´ es que las lecturas se obtienen del sensor concreto empleando drivers diferentes. El conjunto de interfaces posibles presenta una m´quina virtual, con toda suerte a de sensores y actuadores. El robot concreto instancia las interfaces relativas a los dispositivos realmente existentes. Adicionalmente, PSG tiene un dise˜o cliente/servidor: las aplicaciones estable- n 14 http://playerstage.sourceforge.net/