This page is part of the documentation of auKsys/5

WARNING auKsys/5 has been released as stable, but this documentation has not been fully updated with changes since auKsys/4. In case of questions or mistakes, you can use the support project.

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

agent-tk (agent-toolkit/task-knowledge) is a library to implement light weight task and knowledge base agent. It provides abstract interfaces to integrate knowledge and decision process. The decision process in agent-tk is based on the delegation system proposed in [1].

agent-tk is currently developed for providing support to the matks simulator, and it is planned to extend it for support IOT systems in the future.

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

Overview

The figure below provides an overview of an agent as defined in agent-tk:

image overview of agent-tk

On a high level, an agent is composed of three group of systems:

  • definitions contains static metadata describing the agents, in particular, its capabilities.
  • resources contains dynamic information about the agent and its environment.
    • knowledge base is used to store information about the past and the current state of the world. agent-tk can use a simple in-memory store or connect to an instance of kDB.
    • states contains a snapshot of the current state of the robot, such as position/velocity. The platform is sending update to the states.
    • resources contains the resources of the agent: sensors, actuators… This module allow to lock the resources to avoid concurrent use.
  • components contains active module involves in decision or in execution of task.
    • execution contains a queue of tasks to be executed by the agent. It interracts with the low-level platform.
    • decision takes decision on the feasibility and cost of executing a given task. It use a simulator to estimate the cost of a task.
    • delegation module is used to distribute task among agent. This module can receive goal/tst to execute from the agent or it received call for proposal (CFP) from other agents. Upon receiving a CFP, the delegation module ask the decision module for a cost and feasability to execute a given CFP.

Interfacing with agent-tk (via MQTT)

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.

The default way to send tasks to an agent-tk agent is using the delegation protocol. However, in case it is not desirable to interract directly with protocol, agent-tk provides a delegation server called agent-tk-delegation-server which uses a MQTT-based service call to start a delegation, using the following topic:

  • delegation_server/delegate send a request to delegate a Goal or a TST. This rely on the MQTT v5 Request-Response Pattern, and requires that the correlation ID and response topics are set.

References

  1. High-level Mission Specification and Planning for Collaborative Unmanned Aircraft Systems using Delegation. Doherty, Patrick and Heintz, Fredrik and Kvarnström, Jonas. Unmanned Systems. 2013. DOI: 10.1142/S2301385013500052