AF-EIS-OpenSim

From Agent Factory

Jump to: navigation, search

Contents

Introduction

This project outlines an integration between Agent Factory Standard Edition (AFSE), the Environment Interface Standard (EIS), and OpenSim, the technology that underpins Second Life. Due to our use of EIS, our integration is not limited to AFSE, but can be used by any EIS-compliant agent platform.

The underlying implementation combines:

  • OpenMetaverse: A C# interface to OpenSim
  • XStream: Cross-language Object-XML Streaming Framework that allows C# objects to be transferred over a network and reconstructed as Java objects.
  • JOSF: The underlying enabling framework that provides support for gathering and transmitting sensor data and actions to/from OpenSim.

While JOSF has been developed as part of this project, it does not force the use of agent technologies, but is an enabling technology for controlling OpenSim avatars via Java.

Download

You will shortly be able to download both JOSF and our EIS Interface to Second Life via SourceForge.

Example AF-AgentSpeak Agent

To illustrate the simplicity of the approach, the code below is a simple agent that implements a "helper" agent for the scenario shown in the youtube clip below. This agent follows a simulated "user" in an Ambient-Assisted Living (AAL) Scenario and, upon detecting that the user has become immobile, goes to the user to ask if it can help.

#agent agent #extends com.agentfactory.eis.EISAgent

#implements #partial @postInitialize <-
    .println("Initialization Complete"),
    +destination(true);

+beside(?uuid,Start,?type) :destination(true) <-
    eis.perform(say("im here")),
    +ready(true),
    -destination(true);

+selfState(stopped) : destination(true) <-
    eis.perform(say("not here yet")),
    eis.perform(moveTo("Start"));

+selfState(stopped) :true <-
    .println("loop");

+message(request, ?sender, state) : true <-
    eis.perform(say("Im fine thank you robot")),
    .send(request, agentID(".*", addresses("local:testing.eis.ucd.ie")), state(ok));

+ready(true) : true<-
    eis.perform(moveto("tv")),
    +activated(?uuid);

+beside(?uuid,TV,?type) : true <-
    eis.perform(stop(true)),
    eis.perform(use(?uuid)),
    durative(.sleep(5000)),
    eis.perform(moveto("Mat"));

You should be able to trace the activity of this agent by examining the avatar conversation in the bottom left corner of the screen.

<CSO_iFrame>width="640" height="480" src="http://www.youtube.com/embed/r38b_b7IOkc" frameborder="0" allowfullscreen</CSO_iFrame>

Getting Involved

If you are interested in using this project or contributing to its development (either JOSF or EIS-OpenSim), please contact Rem Collier via the following email: Rem dot Collier at ucd dot ie.