Agent communication and co-operation

Agents may communicate with other agents and non-agent processes directly via asynchronous message communication. This may be addressed communication with the identity of the receiver and sender attached to the message, or indirect communication using a publish/subscribe server. Additionally, agents might communicate indirectly by querying and updating an external shared memory, such as a data base or Linda tuple store[1]. They may even communicate by making certain changes to the environment state, e.g. the analogue of the pheromone trails left by ants.
Figure 1: Three Thread TeleoR Agent Architecture
\includegraphics[width=5.8in,height=3.8in]{ThreeThreadArchComms}

A robotic agent RA queries its DBS to determine which device action A to use next for a particular task, T. If a group of agents are co-operating on T, this might be an action of a device controlled by another agent RA$'$. RA may need to explicitly request that RA$'$ initiate the action, or RA$'$ may automatically do the action when it determines what needs to be done next for shared task T. Either way, A will be sent to the simulation, or to a ROS[6] or MQTT[5] node that has direct non-agent control of the robotic device in question. A is being done to try to bring about a change in the common external environment of RA and RA$'$ that will progress the task T.