1 Introduction
2.4 Agent Technology
2.4.4 Agents in Embedded Systems
Agents offer the means to communicate and operate in new and novel ways. This, and associated technology developments, has enabled Agent research to cover many fields. The latest terrestrial distributed and networked systems are now using Agent systems to cope with large scale remotely located services and systems [79]. Relevant Agents systems are ineluded in groundstations to aid in image signal processing [80] and on-board satellites for in-situ autonomous behaviours [81] Agents are a higher abstraction of programming to deal with complex computing problems. By executing behaviourally and assigning an agent a ‘role’, communication interactions and autonomous actions become easier to realize. This allows them to work proactively and reactively to their environment and to any given task. They ean be proactive when finding new communieations routes in a networked environment and reaetive to disconnections, low bandwidths or high latencies [82].
The current state-of-the-art Agent researeh is disseminated in different fields dependent on the application area. Here, the researeh is divided on either the target platform in hardware or the
Chapter 2. Distributed Computing Systems
Agent funetionality in software. Figure 2-14 shows the streams of Agent research and some of the performance or functional drivers.
Agent Applications
Hardware Software
Embedded ^ ^ Middleware &
D evices Distributed Computing
.
High Performance ---► Web Services
Computing
&... ...
Performance Drivers: - Hard/ Soft Real-time - Low Memory
- Real Implementations
Social & Network Simulation Functional Drivers: - Communications - Control
Figure 2-14. Agent Applications Research Field
Figure 2-14 points out that Agent systems, just like other distributed computing applications, have real-time considerations for both the target hardware and required software stack. The application domains are also very different, from operating on a mobile phone to being abstract software objects in social simulation. Performance driven Agents are discussed along with functionally driven Agent systems, broken down into eommunication and distributed control purposes.
2.4.4.1 Performance Driven Agent Systems
When implementing Agents, they can be defined in hardware logie or as software programs. From the loose definition of Agent terminology, they could potentially be described in hardware description languages (HDL) in LCs of an FPGA. Hardware Agents in [83] by T. Hindam are deseribed as dedicated processors (1 processor per Agent) to provide synchronicity, serve ineoming requests to supply local sharable data, and serve internal threads with data from non- internal hardware Agents. Although there are no results presented for this model, it reeognizes the future work with this hardware agent with intercluster prefetching, major research topics in system-on-a-chip and other multi-core systems. In [84] by M. G. Panteleyev, a Rete algorithm is used to develop a custom processor based on a set of Agent-based rules so that the processor and data can be implemented on a PLD for production systems. This method aims to increase performance by 20% compared with general purpose processors. Even through this design is highly custom, the Agents are still developed initially in software which requires the knowledge of all nodes in a fixed networked to make savings in memory register usage. If implemented on an FPGA, this system could potentially beeome reconfigurable. A self-reconfigurable ageney is proposed in [85] by Y. Meng. Here, a Virtex-2 FPGA is programmed using C++ to create an
Chapter 2.Distributed Computing Systems
Agency and manage sub-sections o f the device to change Agent roles. When reconfiguring in this way, a potential problem would be how to guarantee Agent’s state persistence and memory coherence.
In software, you also have real Agent program implementations for real-time applications or Agents for simulation purposes. For these implementations, there are many ways to implement functionality and layered model such as operating systems or middleware are often included. Notably, K.J. Lin and C. S. Peng in [86] investigate different scheduling algorithms for soft guarantees. The CoBERT Agent [87] offers a similar software route for real-time scheduling and functionality towards simulation. Meta-controls at various time rates are discussed to simulate real-time at node level (in ms) or making and adapting behaviours over a network (in several minutes). Another simulation o f an Agent based software model is presented by L. C. DiPippo in [88] using an operating system and CORBA ORB with an Agent Communication layer. An extension o f KQML is extended to include real-time constraints (albeit measured in seconds). No implementation results o f this system were presented.
2.4.4.2 Function Driven Agent Systems
The embedded wireless community that use multi-agent systems, all concentrate on improving robustness and reliability in mostly the communications realm, where most o f the power consumption is used in embedded devices. But trends in Agent use are primarily in:
• Building blocks for control systems to parallelise a device’s computing functions • Communication techniques and protocols for improved reliability and robustness
An example o f using Agents in complex control is to disseminate between differing features or customer requirements from raw data in satellite imagery in a paper by C. Toomey [89]. Agents systems are broken down from an Agency to the Agent implementation using a wrapped C code with tel scripts and KQML for communication. This is a simple brokering scheme where Agents are static but effectively used to automate customer orders in massive data sets. Brokering was again used by NASA in 2004 for planetary exploration [90], where an astronaut gave voice commands to Agents that then perform tasks and control rovers autonomously whilst allowing feedback from the rovers and health monitoring equipment in the astronauts suit. Another control system is described by K. K. T. Thanapalan in [91], where Agents are used for event based autonomy and sensory data fusion of local instruments. The fused position and attitude data is also distributed to other satellites. No results are shown on the software performance o f JACK for this application. K. Wang [92] describes an Agent as a singular node in a constellation for implementing control laws. This, again, highlights the discrepancy in the Agent definition.
Chapter 2.Distributed Computing Systems
Using Agents for communication applications include Smart Messages (SMs), presented by P. Kang [93], where a Java based portable middleware is used for ad-hoc networking, routing and migration. They share the idea o f code migration with mobile Agents but unlike Agents, SMs are responsible for their own routing in a network. This feature allows SMs to adapt quickly to changes that may occur in network topology and node resources. A mobile Agent usually has a fixed address and often knows the network configuration, while an SM names nodes by content and discovers the network. A ‘mailbox’ scheme is also presented by J. Cao [94] in a two-tiered fault tolerant message passing scheme. Simulation results are provided that shows their fault tolerant architecture can effectively handle both network and host failures while keeping the communication cost low. An improvement to JADE-LEAP’s communication subsystem in described by A. Macfas-Estrada [95] for multicasting messages, where ‘ghost’ Agents are used as an address to various other agents on differing platforms. This involves the starting, managing (registering and deregistering) and destroying o f various ghost Agents and their containers to map addresses from low level components to high level components. This work again concentrates on a more robust communications protocol to save energy otherwise spent retransmitting lost messages. An initial basis for a satellite specific framework is described using Agents systems which was investigated by the Science Applications International Corporation (SAIC) for NASA and, specifically, evolution in an Agent community in [96] by C. Rouff. An ontology is defined here but only asks questions with regards to resource management. They argue that unlike a typical distributed computing platform that typically has fixed network characteristics, Agents could be employed to overcome and discover their given network situation.