En este caso pr´actico se plantea un sistema de navegaci´on aut´onoma en el que un robot est´a programado para transportar objetos en un entorno conocido. Este robot dispone de varios sensores e inputs que le proporcionan la siguiente infor- maci´on:
• Un sensor de rango que le permitir´a detectar obst´aculos y distancias. • Imagen de una c´amara a color para identificar objetos y lugares mediante
el uso de landmarks o marcadores.
• Una representaci´on interna o mapa del entorno en el cual se va a mover. • Instrucciones de un supervisor humano, el cual podr´a ´unicamente podr´a dar
´ordenes de alto nivel, como por ejemplo detener la tarea actual o empezar una nueva tarea.
Esta informaci´on ser´a combinada utilizando un algoritmo multimodal basado en prioridades [30], para que el robot pueda atender las ´ordenes del supervisor y a la vez utilizar la informaci´on de sus sensores para evitar obst´aculos, e indentificar objetos o lugares.
Un sistema de este tipo se puede modelar utilizando un esquema h´ıbrido cl´asico, como el que se muestra en la figura 4.1, basado en la combinaci´on de comportamientos reactivos y proactivos.
Se pretende adaptar este esquema y sus componentes al lenguaje de modela- do GMV para aprovechar algunas de sus ventajas: independencia de los dispo- sitivos de entrada y del sistema de representaci´on. En la figura 4.1 el “Mundo” representa el entorno real y el “modelo del mundo” el mapa interno del que dis- pone el robot. El sistema reactivo estar´ıa constituido por varios generadores de eventos para los sensores y las instrucciones del supervisor. El sistema proactivo
Figura 4.1: Esquema de un sistema rob´otico h´ıbrido.
representar´ıa la inteligencia del robot. El estado actual es el conjunto de atributos del robot y el proceso de fusi´on ser´ıa llevado a cabo por su funci´on de evoluci´on.
Primitivas y transformaciones
En este sistema solo necesitamos una primitiva para representar al robot, la cual puede ser modificada por dos posibles transformaciones: mover y girar (tabla 4.1). Cuando el sistema sea ejecutado en un entorno real la primitiva del robot representar´a el robot real, y las transformaciones a las acciones reales de mo- vimiento realizadas por el robot. Si se utiliza en un simulador estas primitivas y transformaciones representar´an instrucciones de visualizaci´on en el sistema gr´afico (SG).
Entorno real Simulador
PRobot Ninguna acci´on Dibujar el robot en el SG
T Move<dist> Mover una distancia dist Mover una distancia dist en el SG
T Rotate<angle> Girar un ´angulo angle Girar un ´angulo angle en el SG
Tabla 4.1: Primitivas y transformaciones del sistema rob´otico.
Eventos y generadores
En el sistema rob´otico propuesto se van a definir los siguientes generadores de eventos:
• gCamera: Genera un evento eCamera cuando se detecta un marcador en la imagen. Estos marcadores se utilizan para identificar las localizaciones en el entorno.
• gDecide: Genera un evento de tipo eDecide en cada frame para activar en el robot la acci´on de toma de decisiones.
• gExecute: Genera un evento eExecute que indica al sistema que tiene que llevar a cabo las acciones del robot en el espacio de representaci´on ac- tual. Si este espacio de representaci´on es el entorno real se realizar´an las operaciones reales sobre la plataforma rob´otica (mover, rotar, etc.), y si es el simulado se utilizar´an las operaciones de representaci´on en el sistema gr´afico.
• gObjective: Genera un evento eObjective para establecer un nuevo mar- cador objetivo. Este generador ser´a activado cuando el supervisor d´e la instrucci´on de cambio de objetivo.
En la tabla 4.2 se muestra un resumen de los generadores de eventos del sistema y los eventos asociados.
Adem´as se tiene que establecer un orden de prioridad entre los generadores. Este orden se ha definido como: gLaser, gCamera, gObjective, gDecide, gE-
xecute. Por lo que los eventos relacionados con los sensores tienen una mayor
prioridad que los de toma de decisiones y de ejecuci´on.
Actores
En el sistema planteado el ´unico actor es el propio robot, que se define como:
ARobot<grid,row,column,angle,ob jective,action>eLaser,eCamera,eDecide,eExecute,eOb jective (4.9) donde el super´ındice son los eventos para los que est´a preparado el robot y el sub´ındice sus atributos, cuyo significado es:
Generadores y eventos
Descripci´on Datos asociados
gLaser =
eLaser<dist,angle>
Evento generado cuan- do el l´aser detecta un obst´aculo
dist: distancia hasta el obst´aculo; angle: ´angulo con respecto al obst´aculo
gCamera =
eCamera<marker>
Evento producido cuando la c´amara detecta un mar- cador
marker: marcador detectado
gDecide = eDecide
Evento generado en cada frame para indicar al ro- bot la toma de decisiones
Sin datos
gExecute = eExecute
Evento generado cada fra- me para ejecutar las ac- ciones del robot en el en- torno real o en el simula- dor
Sin datos
gOb jective =
eOb jective<mrkr>
Evento producido cuando el supervisor cambia el marcador objetivo
marker: marcador objetivo
Tabla 4.2: Generadores y eventos del sistema rob´otico
• El grid o rejilla representa el entorno en el que se mueve el robot. En cada celda de la rejilla se almacenan los datos obtenidos por los sensores para esa regi´on del espacio (si por ejemplo se ha detectado un obst´aculo o un marcador).
• Row y column son la posici´on ocupada por el robot en el grid. • Angle es la orientaci´on del robot.
• Objective es el marcador objetivo.
Para simplificar, en la siguiente ecuaci´on este actor ser´a referido como:
ARobot<g,r,c,an,o,ac>E
En la funci´on de evoluci´on del robot definiremos su comportamiento, que en este caso comprender´a tambi´en su inteligencia artificial ante determinados eventos. Esta funci´on se define como:
λ(ARobotE <g,r,c,an,o,act>, e) = ARobotE
<g′,r,c,an,o,ac> if e= eLaser<dist,angle>
ARobotE
<g′,r,c,an,o,ac> if e= eCamera<marker>
ARobot<g,rE ′,c′,an′,o,ac′> if e= eDecide α(ARobotE
<g,r,c,an,o,ac>) if e = eExecute
ARobot<g,r,c,an,oE ′,ac> if e= eOb jective<marker>
ARobot<g,r,c,an,o,ac>E otherwise
(4.10)
donde e es el evento recibido por el actor y el s´ımbolo de ap´ostrofe (’) en un atributo indica que ese valor se ve modificado como consecuencia del evento recibido. A continuaci´on se describe la forma en que cambian estos atributos:
• Si e= eLaser<dist,angle> se actualiza el grid (g) para indicar que se ha detectado un obst´aculo. La celda a marcar se encontrar´a en la posici´on: (r + dist cos(ang + angle), c + dist sin(ang + angle)).
• Si e= eCamera<marker> se actualiza el grid (g) para indicar que se ha detectado un marcado. La celda a marcar ser´a: (r + dist cos(ang), c +
dist sin(ang)).
• Si e= eDecide se actualiza la posici´on y orientaci´on actual del robot (fila r, columna c y ´angulo ang) y las acciones a realizar. En esta funci´on es donde se podr´a incluir la inteligencia del robot, para que tome una decisi´on u otra dependiendo del estado de todos sus atributos.
• Si e= eExecute se representar´an las acciones del robot en el espacio de visualizaci´on utilizado.
• Si e= eOb jective<marker> significa que el supervisor ha seleccionado un nuevo objetivo, por lo que se asignar´a al objetivo actual “o” el nuevo valor (marker).
Cadena inicial
La cadena inicial del sistema se define de la forma:
ARobot<grid,row,column,angle,eLaser,eCam.,eDecide,eExec.,eOb jct.ε,ε> (4.11)
An ´alisis y resultados
Para el an´alisis del sistema se propusieron un conjunto de pruebas para la vali- daci´on de diferentes caracter´ısticas:
• Test de la funci´on de evoluci´on: se probaron varios algoritmos de inteli- gencia artificial implementados en esta funci´on.
• Independencia de los dispositivos de entrada: esto se realiz´o a˜nadiendo nuevos tipos de sensores, como la c´amara Kinect.
• Independencia del sistema de visualizaci´on: se probaron diferentes siste- mas 2D, 3D y entorno real.
• Test de simulaci´on: se substituyeron algunos sensores por simuladores. • Test de extensibilidad: se prob´o que con simples modificaciones en la ca-
dena de entrada se pod´ıa a˜nadir nuevas instancias de robots y crear de esta forma un sistema multi-rob´otico.
En la p´agina 237 se puede consultar una descripci´on m´as detallada de la experimentaci´on realizada y de los resultados obtenidos.
En la figura 4.2 se muestran un par de capturas del sistema desarrollado uti- lizando modelos de visualizaci´on 2D y 3D.
Otros casos de estudio
Adem´as del ejemplo aqu´ı propuesto se pueden consultar otros casos de estudio en los art´ıculos correspondientes, como la simulaci´on de incendios forestales producidos por tormentas (p´agina 194) o la utilizaci´on del modelo GMV para trabajar con sistemas multiagente (p´agina 209).
Figura 4.2: Resultados de la simulaci´on con diferentes sistemas de visualizaci´on 2D y
3D.