AGI-SIM Task List
From AGIRI.org
Contents |
Tasks Required for Version 0.95
"Version 0.95" is informally defined as an AGISim version that might actually be useful to AI researchers wanting to try out their AI system on some simple tasks in a simulation world -- but not wanting to hack arouund with graphics or devote extensive coding or fiddling time to the sim-world aspect.
Smooth performance of the client world view
For this task, we have 2 suggestions:
- Use of the CS engine in the client GUI.
- Use of video streaming techniques
The viability of the second approach is not clear at the moment, due to the nature of CS.
Easing and Documentation of Compilation Process Under Linux and Windows
My understanding is that AGISim should compile under Windows, but it seems to be hard to find the right versions of all the libraries. So, for starters, the basic task is to come up with a detailed set of instructions including a description of the right versions of all the necessary libraries.
On Linux, I'm not sure what if anything needs to be done in terms of documentation or otherwise to make the compilation/installation process less painful.
- I'll take on these tasks. I'm working up standard Linux and Windows configs at AGISimBuildbot. David Hart 22:37, 13 August 2007 (EDT)
Creation of an Automated Teacher Agent
Currently, for our experiments with Novamente and AGISim, we use an automated teacher that rewards Novamente for doing the right things in the sim world.
However, the teacher agent resides within the Novamente system itself, which is a bit of a hack.
It seems desirable to have a separate teacher agent, either an internal one (within the AGISim server) or an external one (a process communicating with the AGISim server).
All in all... this is not the long-term most-important use case of AGISim --- we want AGISim to be used for humans to interact with various AGI agents, and for the agents to interact with each other.
But in the short term, it is an important use case, because repetitively training simple AI systems to carry out simple tasks is too boring for any human, and plus we do it too slowly.
The "fetch" scenario we have been using for testing in the Novamente context, could be used as the initial content for a sample teacher agent.
In this text I will pursue the idea of an "internal teacher agent" first, just for concreteness. This is a slightly different scenario from an external teacher agent, which I will discuss afterwards
The basic idea is that for training AI's to do simple tasks we need to use an "automated fitness function" for each task, one that
- controls the teacher
- sends partial or full rewards
- possibly, in some cases, controls other things in the environment as well
So, the AGISim release could come with a set of automated fitness functions, e.g. one for each task such as
- fetch
- tag
- object recognition
- blabla
Potentially, the user could then
- start up the AGISim server
- send it a command such as "load fetch_scenario", telling it to load in the fetch scenario, which consists of a certain set of objects, and also a certain automated fitness function and proceed to have his AI system interact with the AGISim server within the "fetch" context...
The code that now exists in NM for controlling the teacher and rewards would exist in the AGISim server.
On the other hand, in the case of an external teacher agent, the basic functionality would be the same, but the software architecture and the procedure for the user would be different.
There would be an AutomatedTeacherServer or some such, and then the user would
- start up the AGISim server
- start up the AutomatedTeacherServer, perhaps with a command- line parameter telling it what script to run (fetch, tag, whatever)
Regardless of whether the teacher is internal or external, some functionality needs to be added to AGISim to handle rewards differently. Right now Novamente is rewarded within the Novamente server, but rewarding should be handled within AGISim.
In AGISim, there should be a mechanism for one agent to send a text message to another. There should similarly be a mechanism for one agent to send a Reward to another (with an amount btw 0 and 1, to account for partial rewarding).
When agent A sends a reward to agent B, then agent B receives this reward (together with information on who sent it) as a perception In the cases we have been discussing, agent A would be the automated teacher agent, whereas agent B would be NM or the other agent being taught.
Animation clock system working smoothly
From Ari: Welter, the final status of the clock system was never clear to me. Do we still see major performance problems and problems with the 2 clocks (animations and world) being out of synch, or do we nowadays have only 1 world clock in place, as I very much would prefer?
Tasks Required for Version 1.0
"Version 1.0" is supposed to be, not only functional and useful, but fully professional and without obvious and glaring gaps.
A benchmark task for version 1.0 is "the agent can play with blocks and build towers and structures thereof, in a childlike way."
This will be a system we can sell hard to the AI research community, with no reservations, as a polished system that everyone should use to train their AI systems to carry out embodied tasks.
Integration of a Physics Engine
It appears that ODE has been integrated with CS before, and I suppose we can do so within an AGISim context.
The result will require careful testing and documentation I suppose. I am not sure what level of functionality will be achieved.
Inverse Kinematics
Integration of some code for inverse kinematics seems necessary for making the humanoid agent capable of a wide range of movements.
Many code libraries for inverse kinematics exist. For example, this one (IKAN)
http://hms.upenn.edu/software/ik/
looks good. It handles IK for arms and legs of humanoid robots specifically, but that is the hardest part. We could make do with animations for movements of other body parts, just fine....
NOTE: We have obtained the IKAN code and if you want to get it for use on AGISim please email Ben Goertzel.
Beautification of Agent Movements
My understanding is that to make the agent move really nicely we will need to use a combination of inverse kinematics with animations.
The goal is that the humanoid agent should fluidly carry out a variety of humanlike movements.
Manipulation of Toy Building Blocks
The agent should be able to pick up blocks, build structures out of them, then knock them down, and build new structures, etc.
This is a classic "AI teaching scenario" for collaborative play. Marvin Minsky has mentioned it as a key task for which 3D simulation worlds will be useful.
This seems to require physics plus possibly some improvements to humanoid movements (grasping, picking up, positioning objects, etc.)
Other Tasks
Replacing CrystalSpace with another 3D library
OGRE for example has been discussed for this role. CS is pretty good but is not that actively developed compared to OGRE and some other platforms, at the moment; it has various shortcomings that are fixed at a decent but not blithering speed....
Adding more agent types
It would be worthwhile to add a simpler (perhaps "R2D2 with a grabber arm"?) robotic agent that moves fluently because it has fewer degrees of freedom...
Also, agent types corresponding to simple mobile robots
Pyro integration
The Pyro language for mobile robot control could be integrated with AGISim, so that folks could use the same Pyro scripts to control real mobile robots and simulated mobile robots in AGISim

