WARNING this page documents an upcoming component, in early phases of development, subject to change and not ready for production.

matks (multi-agent task and knowledge simulator) is a simulator for agents that simulate task and knowledge. It is intended to simulate large numbers of agents.

Gitlab repository is at https://gitlab.com/auksys/matks/.

Overview

The figure below provides an overview of an agent and the relation to different type of simulator:

image overview of matks

A typical agent is composed of many different layers, from low-level interface to hardware through controlers and drivers to high-level decision layer with task planners and deciders. The Gazebo simulator is an example of low-level simulator, which simulates agents at a driver level. The output of the Gazebo simulator is simulated sensor data and the input is control signals for the actuators. This type of simulation is computationally intensive and very useful to develop the low-level aspects of an agent. matks is a middle-level simulator, it simulates the execution of a task and the generation of high-level knowledge. The main purpose of matks is to enable the simulation of very large number of agents to be able to test and evaluate how high level algorithms scale with a large number of agents.

Interfacing with matks

matks communicate through the following MQTT topics:

  • matks/positions the positions (in longitude/latitude) of all the agents.
  • matks/image (experimental) send simulated images. The images are cropped from an orthographic images.

The delegation system of agents-tk also uses the following topics:

  • delegation/send_cfp is used by the delegation module to broadcast a call for proposals by other agent.
  • delegation/send_offer is used by the delegation module to answer a CFP with a cost proposal.
  • delegation/send_proposal_acceptance is used by the delegation module to select a proposal.
  • delegation/send_execution_acceptance is used by the delegation module to confirm that the proposal acceptance has been received and that the agent will execute the mission.
  • delegation/cancel_acceptance is used to cancel the acceptance, this is send if no execution acceptance is received.