FIVE is a multi-platform, distributed software created for testing Multi-Agent Systems that helps you design highly customized 3D intelligent virtual environments.
FIVE is composed by:
- FIVE server, coded in Unity.
- FIVE client, based on SPADE Python agents.
FIVE is available by:
- Cloning the src/server folder.
- Importing the folder into the Unity hub and installing the purposed editor version.
- Opening the project into the Unity editor.
- Select the Menu scene, under the scenes folder.
- You will need three packages to run the simulation:
https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.ros-tcp-connector
https://github.com/Unity-Technologies/ROS-TCP-Connector.git?path=/com.unity.robotics.visualizations
https://github.com/Unity-Technologies/URDF-Importer.git?path=/com.unity.robotics.urdf-importer#v0.5.2
To install these packages you need to open Window > Package Manager, click the + icon and select Add Package from git URL. Then, you have to copy and paste the URLs described above, one by one.
You can click the play button to start the simulation and you can also compile your own version of the FIVE server.
The SPADE agents are required to clone the src/client folder and install the SPADE package. You can install it by executing:
pip install spade==3.2.2
pip install pytz
We can define the agents of our simulation, the IVE features and the objects placed in it. In order to archive this purpose we have to tweak the configuration files:
Note: There is a website under progress that will help you tweak these files in the future.
You have to configure map.txt, map_config.json and map.json files.
- map.txt lets you design an environment map by writing ASCII characters.
- map_config.json is used to create a link between the characters of the map.txt and the object of the environment. For example, you may want to create a forest with a certain distribution of trees, so you can write a 'T' character in map.txt and then create a link with the Unity object (prefab) in map_config.json.
- map.json it is used to instantiate highly customized individual objects and light conditions. For example, you can define an empty object and name it "Agent spawner" and assign a position to it; then, you can reference this empty object by its name in configuration.json file and set it as the starting point of the agents.
Agents only require one configuration file, which is named configuration.json. This file has two sections:
- fiveserver is used to specify the fiveserver name and domain at the XMPP server, so agents can communicate with it.
- agents is a list of agents to set the agent name, avatar, starting position, etc.
We can define the agent behaviour by creating a new Python file in the folder src/client/behaviours and setting the name of the file without the py extension on the behaviour property in the file configuration.json. An example of an agent behaviour is default.py.
To run the IVE with the inhabitant agents you have to:
- Run the XMPP server.
- Run the FIVE server (Unity).
- Run the agents by executing the launcher.py file.
Look at the release version of this GitHub repository to run a compiled version of FIVE.