• No se han encontrado resultados

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.

Documento similar