A migration-based approach towards resource-efficient wireless structural health monitoring Kay Smarsly*, Kincho H. Law Department of Civil and Environmental Engineering Stanford University Stanford, CA, USA Abstract Wireless sensor networks have emerged as a complementary technology to conventional, cable-based systems for structural health monitoring. However, the wireless transmission of sensor data and the on-board execution of engineering analyses directly on the sensor nodes can consume a significant amount of the inherently restricted node resources. This paper presents an agent migration approach towards resource-efficient wireless sensor networks. Autonomous software agents, referred to as “on-board agents”, are embedded into the wireless sensor nodes employed for structural health monitoring performing simple resource-efficient routines to continuously analyze, aggregate, and communicate the sensor data to a central server. Once potential anomalies are detected in the observed structural system, the on-board agents autonomously request for specialized software programs * Corresponding author; Department of Civil and Environmental Engineering; Yang & Yamazaki Environment & Energy Building (Y2E2); 473 Via Ortega, Room 279; Stanford University; Stanford, CA 94305-4020; USA; phone: +1-650-283-5586; email: smarsly@stanford.edu 1/46 (“migrating agents”) that physically migrate to the sensor nodes to analyze the suspected anomaly on demand. In addition to the localized data analyses, a central information pool available on the central server is accessible by the software agents (and by human users), facilitating a distributed-cooperative assessment of the global condition of the monitored structure. As a result of this study, a 95% reduction of memory utilization and a 96% reduction of power consumption of the wireless sensor nodes have been achieved as compared with traditional approaches. Keywords Structural Health Monitoring, Wireless Sensor Networks, Smart Structures, Distributed Artificial Intelligence, Mobile Multi-Agent Systems, Dynamic Wireless Code Migration 1 Introduction According to the American Society of Civil Engineers (ASCE), deficient and deteriorating surface transportation infrastructure in the United States is expected to cost $912.0 billion by 2020 and more than $2.9 trillion by 2040 [1]. As the Urban Land Institute (ULI) reveals in its “Infrastructure 2012” report [2], the situation in other regions is similar, for example in China and India – countries that are rapidly urbanizing – or in Europe, where investments for infrastructure improvements of more than $2.6 trillion (€2.0 trillion) are needed. Other infrastructure systems, such as dams, buildings or wind turbines, face similar problems as they are subjected to ageing and other environmental factors. Therefore, future 2/46 generations of civil engineering structures, termed “smart structures”, are expected to be instrumented with structural health monitoring (SHM) systems so that the structures are capable of continuously monitoring and assessing their own structural conditions [3-5]. Structural health monitoring systems, consisting of sensors, data acquisition units, computer systems and connecting cables, are designed to detect structural changes before they reach critical states. By analyzing the sensor data recorded from the structures, SHM systems provide the opportunities to enhance the safety and reliability of engineering structures and to reduce the costs for management, maintenance and repair throughout the structures’ life cycles [6]. However, in conventional SHM systems the installation of cables can be expensive, time-consuming and labor-intensive, entailing high maintenance costs for the SHM systems. Eliminating the need for connecting cables, wireless sensor networks have emerged as a cost-effective and reliable alternative to conventional, cable-based SHM systems [7-11]. Composed of numerous wirelessly connected sensor nodes, wireless sensor networks are installed in the structure to automatically collect, analyze, aggregate and communicate vast amounts of sensor data. The sensor nodes, integrating advanced embedded systems technologies, are capable of self-interrogating collected sensor data for signs of structural changes [12, 13]. In essence, the sensor data is first analyzed and aggregated on the nodes, from high-bandwidth raw sensor data to low-bandwidth streams of processed results. The analysis results are then transferred to centralized computer systems, or to adjacent sensor nodes, for further processing. 3/46 By first analyzing the data sets locally and then communicating the results to the connected computer systems, transmissions of large records of raw sensor data can be avoided. As a result, the energy consumption for wireless data transmission is substantially reduced. However, considerable computational power is needed for the local execution of complex engineering analyses. Therefore, there have been active research efforts in the past several years towards reducing the power consumption of wireless sensor nodes by optimizing the sensor node hardware as well as the software embedded into the nodes. For example, new software approaches, such as energy-efficient source coding and resource-efficient network protocols, and new concepts on hardware circuitry and transmitter modules for improving energy-consuming node components have been proposed [14-16]. Besides the resource consumption, a second major issue when deploying wireless sensor networks for structural health monitoring is the isolated, limited view of a wireless sensor node on a small area of the total structure. It is well known that changes in the global structural response and behavior (such as altered stiffnesses and structural stability) should also be considered in addition to the detection of local damages and deteriorations (e.g. corrosion, cracks, etc.). Since the sensor data is usually collected at critical locations, individual sensor information does not provide a global picture of the structural condition. In summary, besides making the hardware and software more resource-efficient, holistic (local/global) strategies are needed to assess local and global structural changes. The goals of the research presented herein are twofold. First, the resource consumption of the sensor nodes is to be reduced with respect to memory utilization and power 4/46 consumption. Second, a SHM system prototype, capable of holistically monitoring local as well as global structural phenomena, is to be implemented. To achieve these goals, this study integrates mobile multi-agent systems and dynamic wireless code migration into a wireless sensor network. The paper begins with a background on mobile multi-agent systems. Then, the migration-based monitoring concept is described in detail, and the architecture and prototype implementation of the agent-based SHM system are shown. Next, laboratory tests are presented validating the feasibility of the newly proposed concept as well as the performance of the prototype system. The paper concludes with a discussion of the test results and a comparison of the proposed migration-based concept with conventional approaches currently used in structural health monitoring. 2 Background on mobile multi-agent systems Multi-agent technology, originating from distributed artificial intelligence research, is a rapidly developing research area that is of practical relevance since many years [17]. The broad range of application domains of multi-agent systems includes, e.g., process control, air traffic control, business process management, health care, water resource management, traffic and transportation engineering, building control, power engineering applications, and structural design [18-25]. More recently, multi-agent systems have also been applied in different branches of structural health monitoring, such as monitoring of bridges, dams, and wind turbines [26-29]. 5/46 Although the term “agent” has often been misused as well as overused [30], one definition has been widely accepted in the artificial intelligence community; the “weak notion of agency”, proposed by Wooldridge and Jennings [31], defines an agent as a computer program possessing four essential properties. An agent operates without the direct intervention of humans and, unlike a common software object, has control over its actions and internal states (“autonomy”), interacts with other agents through agent communication languages (“social ability”), perceives its environment, e.g. the physical world or a software environment, and responds in a timely fashion to environmental changes (“reactivity”) and exhibits goal-directed behavior by taking initiatives (“pro-activeness”). Multiple interacting software agents in association with the agent environment form a multi-agent system. Due to the above mentioned agent properties, multi-agent systems are characterized by a high degree of scalability, modularity, flexibility and extensibility, which makes multi-agent technology a suitable basis for solving distributed engineering problems as in structural health monitoring. 6/46 In the last decade, considerable success has been reported in porting multi-agent technology on mobile devices such as cell phones, smart phones, or wireless sensor nodes (“mobile multi-agent systems”) [32-34]. The distinctive strengths of multi-agent systems – scalability, modularity, flexibility and extensibility – are utilized in mobile applications facilitating distributed-cooperative problem solving in highly dynamic environments. To adequately deal with the constraints associated with developing applications on small devices, the majority of mobile devices supports some form of the Java programming language [35]. Accordingly, most approaches towards mobile multi-agent systems are based on Java, typically using the Connected Limited Device Configuration (CLDC) [36]. CLDC, a fundamental part of the “Java Platform, Micro Edition” (Java ME), defines the most basic libraries and virtual machine features for resource-constrained devices. It is worth mentioning that CLDC, although offering all major advantages provided by the Java language such as object orientation, portability, robustness and security, in its current version 1.1 requires only 160 kB of non-volatile memory to be allocated for the CLDC libraries and for the Java virtual machine, and needs only 32 kB of volatile memory for the virtual machine runtime [36]. As can be seen from Table 1, the total memory budget needed by the CLDC specification, compared with the “Java Platform, Standard Edition” (Java SE) for desktop and server environments, is as little as 0.07 % [37] Table 1. Minimum system requirements of Java SE and Java ME. Java Platform, Standard Edition Java Platform, Mirco Edition (Java SE 7) (Java ME, CLDC 1.1) Processor 266 MHz 16 MHz Disk space 126 MB 32 kB Memory 128 MB1 160 kB 7/46 1Windows 64-bit operating systems. Several Java-based agent platforms for mobile devices, supporting the development of mobile multi-agent systems, are currently available. Examples include DARPA CougaarME [32], AFME [38], SPRINGS [39], 3APL-M [40], JADE-LEAP [41, 42], and MAPS [43]. Agent platforms for mobile devices essentially provide lightweight subsets of Java classes supporting basic agent services for communication, for multitasking, or – if embedded into wireless sensor nodes – for accessing the node resources (e.g. sensors or memory). Detailed reviews as well as comparisons of architectures, programming models and performances of agent platforms for mobile devices can be found in [34, 44, 45]. It has been recognized in recent years that the performance and the dynamic behavior of mobile multi-agent systems can further be enhanced by wireless code migration [46]. Having demonstrated high effectiveness in conventional wired decentralized systems, code migration represents an emerging and powerful paradigm, which is already supported by some state-of-the-art Java-based agent platforms [38, 43, 47]. Wireless code migration, i.e. agents physically migrating from one mobile device to another including dynamic agent behavior, actual state and specific knowledge, enables mobile multi-agent systems to dynamically adapt to changes and altered conditions of their environment, resulting in a substantial reduction of network load, latency, and resource consumption. While agent migration in mobile multi-agent systems has already been developed and prototypically implemented in related research areas [48], agent migration in wireless sensor networks deployed for structural health monitoring has received little attention. 8/46 3 An agent-based structural health monitoring system This section describes the basic concept, the architecture, and the prototype implementation of an agent-based wireless SHM system. When developing the SHM system, two main goals are pursued, (i) to reduce the resource consumption of the sensor nodes with respect to onboard memory utilization and wireless data communication, and (ii) to enhance the reliability of the SHM system enabling automated assessment of both local and global conditions of the observed structural system. These goals are to be achieved by integrating a mobile multi-agent system, allowing for dynamic agent migration, into the wireless sensor nodes. In addition, a central information pool is installed on the local computer. The information pool, facilitating a collaborative assessment of the global structural condition, provides information on modal properties of the structural system, information on sensor nodes installed, and a catalog of data analysis algorithms. Last but not least, a monitoring database is deployed to persistently store the sensor data that is continuously recorded from the structural system. 3.1 Architecture of the structural health monitoring system 9/46 As depicted in Fig. 1, the agent-based SHM system is composed of three basic components, wireless sensor nodes, a base station, and the local computer. Each sensor node hosts a set of mobile agents and forms a cluster together with other sensor nodes. A cluster is managed by a head node, which performs administrative tasks, such as management of hardware and network features, but does not collect or analyze sensor data. The base station, serving as an interface between the wireless sensor nodes and the local computer, forwards sensor data and information, assembled by the agents, from the wireless sensor nodes to the local computer for persistent storage and further processing. Vice versa, commands sent from the local computer are communicated via the base station to the wireless sensor nodes. Furthermore, the local computer provides user interfaces, and external resources can be connected to the wireless sensor network. Fig. 1. Architecture of the agent-based wireless SHM system. 10/46 To reduce the quantities of communicated sensor data and to economically utilize the restricted computing resources, two types of mobile agents, “on-board agents” and “migrating agents”, are embedded into the nodes. Fig. 2 illustrates the dynamic interaction of the agents involved and the proposed operational workflow. The on-board agents, autonomously executing relatively simple yet resource-efficient algorithms at relatively low sampling rates, are installed on the wireless sensor nodes to continuously collect, analyze, aggregate and communicate the sensor data. If having detected (potential) anomalies on a sensor node, the on-board agents proactively adapt their behavior to the new situation, e.g. by modifying the sensor sampling rates. Thereupon, specific algorithms and further knowledge, required for more comprehensive analyses of the sensor data, are requested by the on-board agents from the head nodes of the SHM system; instead of heaving extensive collections of engineering algorithms installed on every wireless sensor node a priori, specialized migrating agents are requested on demand to physically migrate to the respective sensor node. Automatically composed during runtime, the migrating agents are assembled with the required algorithms and specific expert knowledge, which enables the agents making appropriate decisions directly on a wireless sensor node. 11/46 Fig. 2. Proposed operational workflow in the agent-based SHM system. 3.2 Hardware of the wireless sensor network For the prototype implementation of the wireless sensor network, Java-based Oracle SunSPOT sensing units are deployed [49, 50]. The sensing units have already proven their practicability and performance in a multitude of scientific projects [51-57]. As a distinct advantage, unlike common embedded applications for wireless sensor networks that are usually written in low-level native languages such as C/C++ and assembly language, the sensing units comprise of a fully capable J2ME CLDC 1.1 Java virtual machine. 12/46 The computational core of the sensing units is an Atmel AT91RM9200 system on a chip (SoC) incorporating a 32-bit ARM920T ARM processor with 16 kB instruction and 16 kB data cache executing at 180 MHz maximum internal clock speed [58]. The SoC includes several peripheral interface units such as USB host port, USB device port, Ethernet MAC, programmable I/O controller, serial peripheral interface controller, I2C bus, etc. Memory of the sensing units is a Spansion S71PL032J40 with 4 MB flash memory and 512 kB RAM. For wireless communication, an integrated radio transceiver, the IEEE 802.15.4-compliant Texas Instruments (Chipcon) CC2420 single-chip transceiver, is deployed, operating on the 2.4 GHz unregulated industrial, scientific and medical (ISM) band. Power supply is provided by an internal, rechargeable lithium-ion battery (3.7 V, 720 mAh). For acceleration measurements, a low-power three-axis linear accelerometer, type LIS3L02AQ manufactured by STMicroelectronics, is integrated into the sensing units [59]. Consisting of a micro-electro-mechanical system (MEMS) sensor element, the accelerometer measures a bandwidth of 4.0 kHz in x- and y-axis and 2.5 kHz in z-axis over a scale of ± 6 g. It has a noise density of 50 μg/Hz1/2 enabling a resolution of 0.5 mg over 100 Hz. In addition to the three-axis accelerometer, the sensing units comprise of an integrated temperature sensor operating from −40°C to 125°C, two momentary switches for user interaction, 5 general purpose I/O pins, 4 high current output pins, and 6 analog inputs. On the software side, a Squawk virtual machine, running without an underlying operating system, ensures a lightweight execution of multiple embedded applications on the sensing units [60]. Operating system functionalities are provided by the Squawk virtual machine, 13/46 which executes directly out of the flash memory. The Squawk virtual machine offers features relevant to resource-efficient, agent-based SHM, such as garbage collector, thread scheduler, and interrupt handler. By running without an underlying operating system, memory of the sensing units is saved that would otherwise be consumed by the operating system. As Squawk is mostly written in Java, additional memory savings arise because Java byte code is a more efficient representation than its equivalent in machine code. Furthermore, whereas most Java virtual machines run a single application, the Squawk virtual machine can run multiple applications, each being represented as a Java object and completely isolated from all other applications [61]. In total, a high degree of portability, flexibility, extendibility and maintainability as well as an ease of debugging is achieved, which makes Squawk a powerful basis for prototyping mobile multi-agent systems for wireless structural health monitoring. 3.3 Prototype implementation of the structural health monitoring system The mobile multi-agent system is implemented and embedded into the wireless sensor nodes following the multi-agent architecture proposed by Smarsly et al. [62]. The architecture, based on the MAPS platform [43], is characterized by components that interact through events. As shown in Fig. 3, the main components include (i) the mobile agents, (ii) the mobile agent execution engine for executing mobile agents and fulfilling service requests issued by the agents, (iii) the resource manager for accessing sensor node resources (e.g. sensors, actuators, battery, or flash memory), (iv) the timer manager for timing agent actions, (v) the mobile agent naming for consistent naming of agents and 14/46 dynamic management of sensor nodes, (vi) the mobile agent communication channel for inter-agent communication, and (vii) the mobile agent migration manager for executing the migration of agents. Fig. 3. Main components of the MAPS-based multi-agent architecture. While the mobile agents, both on-board agents and migrating agents, are implemented as components, the dynamic agent behaviors are modeled through multi-plane state machines that consist of several functions, variables, and planes [64, 65]. One plane represents one behavior of a mobile agent corresponding to the agent’s role in the mobile multi-agent system. A fundamental part of a plane is an automaton that controls the dynamic agent behavior using Event-Condition-Action (ECA) rules. ECA rules within the mobile multiagent system are represented by the triplet rMMAS = (E, C, A), where E is the event set, C is the condition set and A are the atomic actions to be taken. An action of an ECA rule, transferring the automaton in the next state, is triggered when the event is detected and the condition is satisfied. In the implemented mobile multi-agent system, the events of an 15/46 agent, triggering actions of other agents, are delivered by the mobile agent execution engine and communicated asynchronously between the agents using unicast or broadcast interagent communication. Fig. 4 shows an abridged diagram of the main classes of the mobile multi-agent system, illustrated using the Unified Modeling Language (UML). The class diagram will be used in the following subsections to describe the prototype implementation of the on-board and the migrating agents in more detail. Fig. 4. Abridged UML class diagram of the mobile multi-agent system. On-board agents 16/46 As shown in Fig. 4, two categories of on-board agents, the AdministratorAgent and the TemperatureAnalysisAgent, are prototypically implemented into the wireless nodes. The AdministratorAgent, running on every head and sensor node, is responsible for the administration of a node; it manages, for example, hardware and network features and provides information about memory usage, battery status, and radio configurations. The TemperatureAnalysisAgent, prototypically embedded into the sensor nodes, is designed to continuously collect and analyze temperature data from the observed structural system. Its purpose is to detect anomalies, i.e. abnormal temperature changes, based on resourceefficient embedded algorithms. For continuous temperature interrogations, the TemperatureAnalysisAgent periodically senses temperature data by accessing the sensor node’s temperature sensors and compares the recorded measurements with threshold values. Threshold values as well as sensor sampling rates can be modified by the agent itself or, through the local computer, by human individuals. In case of detected anomalies, the TemperatureAnalysisAgent communicates the observed symptoms from the sensor node to a head node and requests specialized migrating agents to investigate the observed anomaly in detail. Simultaneously, the TemperatureAnalysisAgent increases the temperature sampling rate. The dynamic agent behavior described is modularly implemented in the TemperatureAnalysisCompositeBehavior class (Fig. 4) in terms of a state machine, as illustrated in Fig. 5. 17/46 Fig. 5. Dynamic agent behavior implemented as ECA automaton. Migrating agents As described earlier, the migrating agents are capable of physically migrating on request of the on-board agents from one node to another, including their dynamic behavior, actual state, and specific knowledge. Upon arrival on a sensor node, the migrating agents apply their inherent analysis capabilities to achieve new information about the structural condition and send the analysis results to the connected local computer. On the local computer, the information, together with further information received from other sensor nodes, is assembled to provide a holistic picture about the current global condition of the monitored structural system. To implement the agent migration, the characteristics of the Squawk Java virtual machine are advantageously utilized. Squawk employs an application isolation mechanism that represents each application as an object being completely isolated from other objects. Consequently, objects running on a wireless sensor node, such as migrating agents, can be 18/46 paused, serialized and – together with agent behaviors, agent states and required algorithms – physically transferred to Squawk instances running on other nodes. Assuming agent migration from a head node H (source node) to a regular sensor node S (destination node), the destination node is contacted by the source node through a message. Next, a socket is opened based on the radiostream protocol. The radiostream protocol, which is a peer-to-peer protocol implemented on top of the MAC layer of the standard IEEE 802.15.4, ensures a reliable, buffered and stream-based communication between S and H. After having received the message from the source node H, the destination node S sends an acknowledgement back to the node H, whereupon H establishes a radiostream connection with node S. The migrating agent assembled on node H is paused, hibernated, serialized into a byte array and sent in a message to the destination node S (including all relevant data and execution state). After having received the message, the destination node S deserializes, dehibernates and activates the migrating agent. Now operating on node S, the migrating agent starts analyzing the local sensor data. For the prototype implementation of the agent-based SHM system, the so called FFTAgent is implemented; the FFTAgent is a migrating agent capable of analyzing modal properties of structural systems based on fast Fourier transforms (FFT) that allow converting sensor measurements from the time domain into the frequency domain [66]. Specifically, for calculating the frequency response functions from time history data, the FFTAgent uses the computationally efficient Cooley-Tukey FFT algorithm [67] upon migrating to sensor node S. Thus, the FFTAgent is capable to compute the frequency response functions of the 19/46 structure as well as the primary modal frequencies at the given location, and it can compare the actual frequencies to those of the healthy (i.e. undamaged) structure at the location of sensor node S. As shown in Fig. 4, the corresponding agent behavior is encoded in the class FFTAgentBehavior, which aggregates the CooleyTukey class and is associated with the FrequencyResponse class that handles the calculated frequency response functions. Upon completion of the on-board analyses, the diagnostic results obtained by the FFTAgent are sent to the local computer for further processing. Monitoring database and information pool Both the monitoring database and the information pool of the agent-based SHM system are implemented using a relational MySQL database management system. The database management system, installed on the local computer, is accessible by human users and by the mobile agents. To enable human users online accessing the database management system, the “phpMyAdmin” online tool, which allows remotely performing administrative tasks such as creating, modifying or deleting data, is integrated into the SHM system. Furthermore, to enable the mobile agents autonomously accessing the database management system, the Java-based data access technology “JDBC” (Java Database Connectivity) is utilized. 20/46 Technically, the monitoring database and the information pool in the current prototype are implemented in one single database (Fig. 6). The sensor data recorded and pre-processed by the mobile agents is handled and stored on the wireless sensor nodes in the form of Java objects. The Java objects, after being transmitted from a wireless sensor node to the base station, are converted into database tables, i.e. into relations, in which one single object, such as a measurement, is represented as a tuple (a1, ..., an) being stored in a row of a database table. The elements ai of a tuple represent the attributes of the object defining its properties, such as time and value of a measurement. The basic structure of the monitoring database and the information pool is illustrated in Fig. 6. Exemplarily, one database table of the monitoring database (“t_a1”) and one database table of the information pool (“topology”) are shown. While the first table contains sensor data recorded by a sensor labeled “t_a1”, the second table specifies the system topology defining, for example, sensor IDs, their locations within the monitored structural system, and the natural frequencies of the undamaged structural system observed. Fig. 6. Monitoring database and information pool. 21/46 As can be seen from Fig. 6, for every sensor of the SHM system one table is designated. The reason for using one table for each sensor, as opposed to using one single table for several sensors, is the autonomy of the wireless sensor network: Unlike conventional SHM systems, in which centralized data acquisition units are deployed to collect sensor data from different sensors in a synchronized fashion, the mobile agents of the wireless sensor network collect and analyze the sensor data independently from each other (and, for example, change the sensor sampling rates if required). Consequently, the measurements are usually collected asynchronously at different timestamps, which makes the utilization of different, independent database tables the most efficient alternative. As an example, the following listing shows the modular implementation enabling the base station to insert various measurements, received as Java objects from the mobile agents, into the monitoring database. 1 public void insertMeasurement(String id, long timestamp, double value){ 2 ... 3 try{ 4 Statement statement = connection.createStatement(); 5 statement.executeUpdate("INSERT INTO `"+DATABASE+"`.`"+ id+"` (`"+TIMESTAMP+"`, `"+VALUE+"`) VALUES ('"+timestamp+"', '"+value+"');"); 6 }catch (SQLException sqlException){ 7 ... 8 11 } } 22/46 In the example, the attributes “timestamp” and “value” of a received measurement are stored as a tuple in a row of the database table, which is specified by the attribute “id”. Vice versa, data stored in the monitoring database or in the information pool, if requested by the mobile agents, is selected from the database in the same way, converted into Java objects, and sent to the agents. 4 Laboratory tests Laboratory tests are conducted serving as a proof of concept of the agent-based SHM system. Corresponding to the main goals of this research, two major objectives are pursued when conducting the laboratory tests. First, system performance data is collected for evaluating the resource efficiency achieved by the SHM system. Second, the reliability of the mobile multi-agent system embedded into the wireless sensor nodes is examined with respect to detecting changes in the monitored structural system in a decentralizedcooperative fashion. A test set-up is devised as follows: An aluminum plate serving as a test structure is exposed to heat that is to be detected by the on-board agents in real time. Heat is induced, because the natural frequencies vary more with temperature than with other damage. Furthermore, the temperature increases slowly by time, which can be advantageously used to verify the capabilities of the mobile agents. The structural condition of the test structure that may be changed due to the induced heat is to be assessed by migrating agents, which are automatically assembled during runtime, based on acceleration response data taken from the test structure. 23/46 4.1 Laboratory test setup The test structure, a 900 mm × 540 mm aluminum plate (t = 0.635 mm) with one edge being clamped, is instrumented with an array of 9 precision temperature sensors and 3 accelerometers. For the experimental test, the agent-based SHM system is composed of one head node and three sensor nodes forming a cluster as well as a base station for connecting the wireless sensor nodes to the local computer. As illustrated in Fig. 7, the test structure is subdivided into three monitoring sections A, B, and C. The sensor nodes, labeled SA, SB and SC, are installed on the fixed end, in the middle, and on the free end of the structure. Each of the three sensor nodes is responsible for monitoring that section, in which it is installed. Every sensor node hosts the previously introduced (and relatively simple) on-board agents, namely the TemperatureAnalysisAgent and the AdministratorAgent. The head node hosts, besides an AdministratorAgent, the prototypically implemented (and relatively complex) migrating FFTAgent, such that the mobile multi-agent system, in total, is composed of the agents that are situated on the sensor nodes and on the head node. 24/46 Fig. 7. Overview of the prototype SHM system For the acceleration measurements, the integrated three-axis accelerometers of the sensor nodes, labeled as aA, aB and aC in Fig. 7, are utilized. For the temperature measurements, three external temperature sensors (tA,1, ..., tC,3) are attached to every sensor node through the analog inputs. For that purpose, LM335A precision temperature sensors, manufactured by National Semiconductor, are selected, which operate from −40°C to 100°C [68]. The LM335A sensors have a linear output and produce an output voltage of about 3 V, which makes the LM335A a perfect match for the sensor nodes, whose analog inputs are designed to measure a voltage range between 0 V and 3 V. Fig. 8 shows the assembly of the wireless sensor nodes and the external temperature sensor as well as the fully instrumented test structure. (a) Wireless sensor node and external (b) SHM system mounted on the test structure. temperature sensor. Fig. 8. Installation of the agent-based SHM system for validation tests. 25/46 4.2 Autonomous monitoring based on agent migration In the laboratory tests, the on-board agents operating on the sensor nodes are continuously sensing temperature measurements using the externally attached temperature sensors. The collected temperature measurements are locally analyzed based on simple threshold computations, forwarded to the local computer, and stored in the monitoring database. As depicted in Fig. 7, heat is introduced underneath the aluminum plate in monitoring section B below temperature sensor tB,1. For the laboratory tests, a critical plate temperature Tcrit = 60°C is pre-defined, indicating that an anomaly may occur and that further action may be required by the SHM system. The value Tcrit, that is pre-defined based on the physical limitations of the nodes, is given to the on-board agents. Fig. 9 shows the temperature distribution at the time t = t(Tcrit) as calculated from the temperature measurements collected by the on-board agents. Fig. 9. Temperature distribution (°C) on the upper side of the test structure. 26/46 The monitoring procedure carried out in response to the detection of the abnormal increase in temperature is shown in Fig. 10. As Tcrit is first exceeded in monitoring section B (Fig. 9), the on-board agents of sensor node SB notify the head node about the observed abnormal situation. As soon as having received this information, on the head node a migrating agent is individually composed and instantiated in order to analyze the current condition of the test structure in more detail. First, the information pool installed on the local computer is queried for appropriate actions to be undertaken. In this example, the Cooley-Tukey FFT algorithm [67], and consequently the FFTAgent, is selected to analyze the structural condition by determining the actual modal parameters of the test structure. Based on the information provided by the information pool, modal properties of the undamaged test structure, such as first modal frequencies, are passed to the FFTAgent on the head node. Furthermore, details on the migration are specified; in this case, sensor node SC, instead of sensor node SB where the anomaly has first been detected, is defined as the target node for the agent migration. The reason is that sensor node SC along with its internal accelerometer is installed at the free end of the aluminum test structure and can most likely generate more sensitive results than SB when acquiring acceleration measurements for analyzing the modal properties of the structure. 27/46 Fig. 10. Monitoring procedure automatically executed in consequence of the detected anomaly. After having migrated to sensor node SC, the FFTAgent accesses the sensor node’s internal accelerometer, senses acceleration measurements and computes the frequency response function at location SC from the acceleration time history data. Using the calculated frequency response function, the agent identifies the first modal frequency as 1.6 Hz, which does not significantly differ from the first modal frequency of the undamaged structure. The diagrams in Fig. 11 show the frequency response functions of the test structure before and after exposing it to heat. It should be mentioned that the corresponding data sets used for visualizing the diagrams have been transmitted solely for documentation purposes within this study. The results of the on-board analyses are sent by the FFTAgent from sensor node SC via the base station to the local computer, where they are stored in the form of a safety report that is accessible by any responsible individuals (Fig. 12). 28/46 Fig. 11. Frequency response function for sensor location SC before (left) and after exposing the test structure to heat (right). Fig. 12. Example safety report generated on behalf of the migrating agent. 4.3 Experimental results In the laboratory tests, performance data collected from the agent-based SHM system has been compared to current approaches commonly implemented in wireless SHM systems. In particular, the size of the transmitted data sets and the utilized internal node memory have been recorded. As a result of the performance analyses, a total of 71 kB on-board memory 29/46 was needed for the migration-based monitoring procedure conducted in the laboratory tests, including agent migration and on-board FFT analysis. More specifically, the objects representing the acceleration measurements on the nodes, which are required for data analysis, had a size of 0.02 kB (17 B) each, resulting in a total of 67.8 kB needed for the on-board FFT analysis. 3.2 kB (3,276 B) were needed for all other objects that were automatically created on a wireless sensor node within the migration-based monitoring procedure (including migrating agent, agent behavior, and further agent attributes). As a result, a reduction of wirelessly transmitted data of more than 95% was achieved as compared with conventional approaches that send the collected sensor data, here 67.8 kB, to a remote computer for centralized data analyses. While the performance data on the memory consumption and on the data transmission recorded in the laboratory tests is very accurate, the laboratory tests – even if conducted several times – do not provide performance data on the power consumption reliable enough to be representative; due to the limited quantities of performance data that can be collected in the laboratory tests, the measurable power consumptions are too small to be captured accurately. Therefore, performance tests on the power consumption were conducted in addition to the laboratory tests simulating the migration-based data processing. The performance tests on the power consumption included 100 migration procedures in order to obtain sufficient performance data. In total, 3 tests were conducted, resulting in 300 migration procedures. Essentially, the performance tests were composed of a simulated migration-based procedure (Fig. 10) and, for comparison, a conventional monitoring procedure, in which all raw data was sent to a central server. As a result, the battery 30/46 capacity consumed in one migration-based procedure was on the average 0.14 mAh, as opposed to 3.70 mAh consumed in the conventional case, which is a 96% reduction of power consumption. The reasons for the achieved resource efficiency are twofold: First, sensing and on-board storage of unnecessary measurements as well as wireless transmissions of these data sets are largely avoided. Second, on-board calculations are only executed by specialized migrating agents if anomalies are suspected. As described earlier, both the collected measurements and the migrating agents are technically realized as Java objects. These objects are not a priori initialized on a wireless sensor node. Rather, the initialization of individual objects is performed on the head nodes – only if necessary – using the central information pool. As a result, no on-board memory is allocated for the objects unless a migrating agent has been sent from a head node to the respective sensor node. Furthermore, all objects related to the migration-based monitoring procedure, if no longer needed, are automatically marked and swept by the garbage collector of the embedded virtual machines. Last but not least, the central information pool installed on the local computer incorporates global information on the observed structure and a catalog of engineering algorithms suitable for efficiently analyzing suspected anomalies. As has been demonstrated in the laboratory tests, it was possible to achieve a holistic picture during runtime, which would not be possible without dynamic agent migration using static objects and algorithms that are stored on each wireless sensor node a priori. 31/46 5 Summary and conclusions In this paper, the design and implementation of an agent-based wireless structural health monitoring system, comprising of a wireless sensor network and software programs running on a connected computer, have been presented. To achieve resource efficiency and reliability of the agent-based SHM system, a mobile multi-agent system composed of several autonomous software entities, referred to as “mobile agents”, has been embedded into the wireless sensor network. Whereas some mobile agents (“on-board agents”) permanently reside on the wireless sensor nodes for continuous, autonomous monitoring, other mobile agents (“migrating agents”) physically migrate from one sensor node to another on demand. Instead of having extensive collections of engineering algorithms installed on every sensor node a priori, the specialized migrating agents are requested in real time if anomalies of the monitored structural system are suspected. Without the need for transmitting large amounts of sensor data, the migrating agents – assembled during runtime and provided with specific expert knowledge – execute individual engineering algorithms directly on the sensor nodes analyzing the local sensor data according to the suspected anomaly. For the proof of concept of the proposed approach, laboratory tests have been conducted (i) to collect system performance data for evaluating the resource efficiency achieved by the prototype SHM system and (ii) to examine the reliability of the mobile multi-agent system embedded into the wireless sensor nodes. In the laboratory tests, the agent-based SHM 32/46 system has been installed on an aluminum plate serving as a test structure. Because natural frequencies vary more with temperature than with damage, heat has been induced into the test structure to evaluate the dynamic, cooperative behavior of the mobile agents. As a result, the changes in temperature, slowly increasing over time, have been detected by the mobile agents. Furthermore, the condition of the test structure has autonomously been assessed by migrating agents based on modal analyses of acceleration response data recorded from the structure on demand. In summary, the resource consumption of the wireless sensor nodes, compared with traditional approaches commonly implemented in wireless SHM systems, could significantly be reduced. The wirelessly transmitted data and the power consumption have been reduced by 95% and by 96%, respectively, as compared with transmitting all raw sensor data to a remote computer for central data analysis. At the same time, as compared with conventional approaches hosting data analysis algorithms directly on board, the accuracy and the reliability of monitoring could be increased, because the agent-based condition assessment is performed in a distributed-cooperative fashion incorporating global properties of the observed structural system taken from the information pool. Therefore, with respect to scaling up from the laboratory tests to relatively complex real-world SHM problems, the efficiency of the proposed approach could likely increase with increasing complexity of the SHM system, the observed structure, and the collection of data analysis and structural monitoring algorithms. Acknowledgments 33/46 This research is partially funded by the German Research Foundation (DFG) under grant SM 281/1-1 and under grant SM 281/2-1, awarded to Dr. Kay Smarsly. The research is also partially supported by the U.S. National Science Foundation under grant CMMI-0824977, awarded to Professor Kincho H. Law. Any opinions expressed in this paper are those of the authors and do not necessarily reflect the opinions of the German Research Foundation and the National Science Foundation. References 1 American Society of Civil Engineers. Failure to Act: The Economic Impact of Current Investment Trends in Surface Transportation Infrastructure. Report. Reston, VA, USA: American Society of Civil Engineers; 2011. 2 Urban Land Institute and Ernst & Young. Infrastructure 2012: Spotlight on Leadership. Report. Washington, DC, USA: Urban Land Institute; 2012. 3 Ni YQ, Li B, Lam KH, Zhu DP, Wang Y, Lynch JP, et al. In-construction vibration monitoring of a supertall structure using a long-range wireless sensing system. Smart Struct Syst 2011; 7:83-19. 4 Chong KP, Carino NJ, Washer G. Health monitoring of civil infrastructures, Smart Mater Struct 2003; 12:483-11. 34/46 5 Farrar CR, Sohn H, Hemez FM, Anderson MC, Bement MT, Cornwell PJ, et al. Damage Prognosis: Current Status and Future Needs. Report. Los Alamos, NM, USA: Los Alamos National Laboratory; 2003. 6 Smarsly K, Law KH, Hartmann D. Towards Life-Cycle Management of Wind Turbines based on Structural Health Monitoring. In: Proceedings of the First International Conference on Performance-Based Life-Cycle Structural Engineering. Hong Kong, China; 2012. pp. 1066-9. 7 Lynch JP, Law KH., Kiremidjian AS, Carryer E, Farrar CR, Sohn H, et al. Design and performance validation of a wireless sensing unit for structural monitoring applications, Struct Eng Mech 2004; 17:393-16. 8 Spencer BF, Ruiz-Sandoval ME, Kurata N. Smart sensing technology: opportunities and challenges, Struct Control Hlth 2004; 11:349-20. 9 Zimmerman AT, Shiraishi M, Swartz RA, Lynch JP. Automated modal parameter estimation by parallel processing within wireless monitoring systems. J Infrastruct Syst 2008; 14:102-12. 35/46 10 Rice JA, Mechitov K, Sim SH, Nagayama T, Jang S, Kim R, et al. Flexible smart sensor framework for autonomous structural health monitoring. Smart Struct Syst 2010; 6:423-16. 11 Kim J, Swartz RA, Lynch JP, Lee JJ, Lee CG. Rapid-to-deploy reconfigurable wireless structural monitoring systems using extended-range wireless sensors. Smart Struct Syst 2010; 6:505-20. 12 Lynch JP, Loh K. A Summary Review of Wireless Sensors and Sensor Networks for Structural Health Monitoring. Shock Vib 2006; 38:91-38. 13 Wang Y, Swartz RA, Lynch JP, Law KH, Lu KC, Loh CH. Decentralized civil structural control using real-time wireless sensing and embedded computing. Smart Struct Syst 2007; 3:321-20. 14 Tang Q, Yang L, Giannakis GB, Qin, T. Battery Power Efficiency of PPM and FSK in Wireless Sensor Networks. IEEE T Wirel Commun 2007; 6:1308-11. 15 Prakash Y, Gupta SKS. Energy Efficient Source Coding and Modulation for Wireless Applications. In: Proceedings of the Wireless Communications and Networking Conference. New Orleans, LA, USA; 2003. pp. 212-6. 36/46 16 Laneman JN, Tse DNC, Wornell GW. Cooperative Diversity in Wireless Networks: Efficient Protocols and Outage Behavior. IEEE T Inform Theory 2004; 50:3062-19. 17 Nwana HS, Ndumu DT. A brief introduction to software agent technology. In: Jennings NR, Wooldridge MJ, editors. Agent Technology – Foundations, Applications, and Markets, Berlin, Germany: Springer; 1998, p. 29-19. 18 Jennings NR, Wooldridge MJ. Applications of Intelligent Agents. In: Jennings NR, Wooldridge MJ, editors. Agent Technology – Foundations, Applications, and Markets, Berlin, Germany: Springer; 1998, p. 3-26 19 Fuhrmann T, Neuhofer B. Multi-agent systems for environmental control and intelligent buildings. Report. Salzburg, Austria: Department of Computer Science, University of Salzburg; 2006. 20 Gunkel A. The application of multi-agent systems for water resources research – Possibilities and limits. Diploma Thesis. Freiburg, Germany: Institut für Hydrologie der Albert-Ludwigs-Universität Freiburg i. Br.; 2005. 21 Klügl F, Bazzan ALC. Multi-Agent Systems for Traffic and Transportation Engineering. 1st ed. Hershey, PA, USA: Information Science Reference; 2009. 37/46 22 Qiao B, Liu K, Guy C. A multi-agent system for building control. In: Proceedings of the IEEE/WIC/ACM International Conference on Intelligent Agent Technology. Hong Kong, China; 2006. pp. 653-7. 23 McArthur SDJ, Davidson EM, Catterson VM, Dimeas AL, Hatziargyriou ND, Ponci F, et al. Multi-Agent Systems for Power Engineering Applications—Part I: Concepts, Approaches, and Technical Challenges. IEEE T Power Syst 2007; 22:1743-10. 24 McArthur SDJ, Davidson EM, Catterson VM, Dimeas AL, Hatziargyriou ND, Ponci F, et al. Multi-Agent Systems for Power Engineering Applications—Part II: Technologies, Standards, and Tools for Building Multi-agent Systems, IEEE T Power Syst 2007; 22:1753-7. 25 Bilek J, Mittrup I, Smarsly K, Hartmann D. Agent-based Concepts for the Holistic Modeling of Concurrent Processes in Structural Engineering. In: Proceedings of the 10th ISPE International Conference on Concurrent Engineering. Madeira, Portugal; 2003. pp. 47-7. 26 Smarsly K, Lehner K, Hartmann D. Structural Health Monitoring based on Artificial Intelligence Techniques. In: Proceedings of the International Workshop on Computing in Civil Engineering. Pittsburgh, PA, USA; 2007. pp. 111-8. 38/46 27 Mittrup I, Smarsly K, Hartmann D, Bettzieche V. An Agent-based Approach to Dam Monitoring. In: Proceedingy of the 20th CIB W78 Conference on Information Technology in Construction. Auckland, New Zealand; 2003. pp. 239-8. 28 Smarsly K, Law KH, Hartmann D. Multiagent-Based Collaborative Framework for a Self-Managing Structural Health Monitoring System. J Comput Civil Eng 2012; 26:76-15. 29 Smarsly K, Law KH, Hartmann D. Implementing a Multiagent-Based SelfManaging Structural Health Monitoring System on a Wind Turbine. In: Proceedings of the 2011 NSF Engineering Research and Innovation Conference. Atlanta, GA, USA; 2011. Digital proceedings. 30 Nwana HS. Software agents: An overview. Knowl Eng Rev 1996; 11:1-41. 31 Wooldridge MJ, Jennings NR. Intelligent agents: Theory and practice. Knowl Eng Rev 1995; 10:115-38. 32 Wright W, Moore D. Design considerations for multiagent systems on very small platforms. In: Proceedings of the Second International Joint Conference on Autonomous Agents and Multi-Agent Systems. Melbourne, Australia; 2003. pp. 1160-2. 39/46 33 Cao J, Tse DCK, Chan ATS. PDAgent: A Platform for Developing and Deploying Mobile Agent-enabled Applications for Wireless Devices. In: Proceedings of the 2004 International Conference on Parallel Processing. Montreal, Canada; 2004. pp. 510-8. 34 Shepherdson J, Lee H, Mihailescu P. Multi-agent Systems as a Middleware to Automate Mobile Business Processes: State of the Art. In: Proceedings of the 5th International Conference on Applied Informatics and Communications. Malta; 2007. pp. 187-5. 35 O’Hare GMP, O’Grady MJ, Muldoon C, Bradley JF. Embedded Agents: A Paradigm for Mobile Services. Int J Web and Grid Services 2006; 2:379-27. 36 Sun Microsystems, Inc. JSR-000139 Connected Limited Device Configuration, Specification Version 1.1.1, Java Platform, Micro Edition (Java ME). Specification. Santa Clara, CA, USA: Sun Microsystems, Inc.; 2007. 37 Oracle Corporation. Java SE Documentation - Windows System Requirements for JDK and JRE. [online] Redwood Shores, CA, USA: Oracle Corporation; 2013. Available at: <http://docs.oracle.com/javase/7/docs/webnotes/install/windows/- windows-system-requirements.html> [Accessed January 1, 2013]. 40/46 38 Muldoon C, O’Hare GMP, Collier RW, O’Grady MJ. Agent Factory Micro Edition: A Framework for Ambient Applications. In: Proceedings of The Intelligent Agents in Computing Systems Workshop. Reading, UK; 2006. pp. 727-8. 39 Illari S, Trillo R, Mena E. SPRINGS: A Scalable Platform for Highly Mobile Agents in Distributed Computing Environments. In: Proceedings of the 2006 International Symposium on a World of Wireless, Mobile and Multimedia Networks. Buffalo, NY, USA; 2006. pp. 633-5. 40 Koch F. 3APLM Platform for Deliberative Agents in Mobile Devices. In: Proceedings of the International Joint Conference on Autonomous Agents and Multiagent Systems. Utrecht, The Netherlands; 2005. pp. 153-2. 41 Caire G., Pieri, F. LEAP User Guide. LEAP 4.1.1. Torino, Italy: Telecom Italia S.p.A.; 2011. 42 Bellifemine F, Caire G, Trucco T, Rimassa G. JADE Programmer’s Guide. Torino, Italy: Telecom Italia S.p.A.; 2010. 43 Aiello F, Fortino G, Gravina R, Guerrieri A. A Java-Based Agent Platform for Programming Wireless Sensor Networks. Comput J 2011; 54:439-16. 41/46 44 Urra O, Ilarri S, Trillo R, Mena E. Mobile Agents and Mobile Devices: Friendship or Difficult Relationship? J Phys Agents 2009; 3:27-11. 45 Aiello F, Carbone A, Fortino G, Galzarano S. Java-based Mobile Agent Platforms for Wireless Sensor Networks. In: Proceedings of the International Multiconference on Computer Science and Information Technology. Wisla, Poland; 2010. pp. 165-8. 46 Cucurull J, Overeinder BJ, Oey MA, Borrell J, Brazier FMT. Abstract software migration architecture towards agent middleware interoperability. In: Proceedings of the International Multiconference on Computer Science and Information Technology. Wisla, Poland; 2007. pp. 27-11. 47 Warnier M, Oey MA, Timmer RJ, Overeinder BJ, Brazier FMT. Enforcing Integrity of Agent Migration Paths by Distribution of Trust. Int J of Intelligent Information and Database Systems 2009; 3:382-15. 48 Herbert J, O’Donoghue J, Ling G, Fei K, Fok CL. Mobile Agent Architecture Integration for a Wireless Sensor Medical Application. In: Proceedings of the 2006 IEEE/WIC/ACM International Conference on Web Intelligence and Intelligent Agent Technology. Hong Kong, China; 2006. pp. 235-4. 49 Sun Microsystems, Inc. Sun Small Programmable Object Technology (Sun SPOT). Developer’s Guide. Santa Clara, CA, USA: Sun Microsystems, Inc.; 2009. 42/46 50 Sun Microsystems, Inc. Sun SPOT Owner’s Manual. Owner’s Manual. Santa Clara, CA, USA: Sun Microsystems, Inc.; 2009. 51 Gupta V. Experiments with a Solar-powered Sun SPOT. Technical Report. Menlo Park, CA, USA: Sun Microsystems Laboratories; 2009. 52 Bortenschlager M, Haid, E, Wagner A. Rapid Prototyping of Sensor-Based Applications with SunSPOTs. ERCIM News 2009; 76:36-2. 53 Smarsly K, Law KH, König M. Resource-Efficient Wireless Monitoring based on Mobile Agent Migration. In: Proceedings of the SPIE (Vol. 7984): Health Monitoring of Structural and Biological Systems. San Diego, CA, USA; 2011. pp. 26-12. 54 Mahadeokar J. Java Sun SPOTS in the Rain Forests of India. [online] Cary, NC, USA: DZone, Inc. Available at: <http://www.dzone.com/links/java_sun_spots_in_the_rain_forests_of_india.html> [Accessed January 3, 2013]. 55 Smarsly K., Georgieva K., König M, Law KH. Monitoring of Slope Movements coupling Autonomous Wireless Sensor Networks and Web Services. In: Proceedings of the First International Conference on Performance-Based Life-Cycle Structural Engineering. Hong Kong, China; 2012. pp. 1096-7. 43/46 56 Georgieva K, Smarsly K, König M, Law KH. An Autonomous Landslide Monitoring System based on Wireless Sensor Networks. In: Proceedings of the 2012 ASCE International Conference on Computing in Civil Engineering. Clearwater Beach, FL, USA; 2012. pp. 145-8. 57 Alarcon-Ramirez A, Martinez-Pabon M, Kim C. Design and Prototype of a Wireless Tailgate Detection System Using Sun Spot Platform. Int J Embedded Systems and Applications 2011; 1:1-14. 58 Sun Microsystems, Inc. SunSPOT Theory of Operation. Specification. Santa Clara, CA, USA: Sun Microsystems, Inc.; 2009. 59 STMicroelectronics. LIS3L02AQ. Datasheet. Geneva, Switzerland: STMicroelectronics N.V.; 2004. 60 Simon D, Cifuentes C, Cleal D, Daniels J, White D. Java on the bare metal of wireless sensor devices: the Squawk Java virtual machine. In: Proceedings of the 2nd international conference on Virtual execution environments. Ottawa, Canada; 2006. pp. 78-11. 44/46 61 Simon D, Cifuentes C. The Squawk virtual machine: Java on the bare metal. In: Proceedings of the 20th Conference on Object-Oriented Programming, Systems, Languages, and Applications. San Diego, CA, USA; 2005. pp. 150-2. 62 Smarsly K, Law KH, König M. Autonomous Structural Condition Monitoring based on Dynamic Code Migration and Cooperative Information Processing in Wireless Sensor Networks. In: Proceedings of the 8th International Workshop on Structural Health Monitoring. Stanford, CA, USA; 2011. pp. 1996-8. 63 Aiello F, Carbone A, Fortino G, Galzarano S. Java-based Mobile Agent Platforms for Wireless Sensor Networks. In: Proceedings of the International Multiconference on Computer Science and Information Technology. Wisla, Poland; 2010. pp. 165-8. 64 Bölöni L, Marinescu DC. A Multi-Plane State Machine Agent Model. Technical Report. West Lafayette, IN, USA: Purdue University; 1999. 65 Bölöni L, Marinescu DC. A Multi-Plane State Machine Agent Model. In: Proceedings of Fourth International Conference on Autonomous Agents. Barcelona, Spain; 2000. pp. 80-1. 66 Press, WH, Teukolsky, SA, Vetterling, WT. Numerical Recipes in C: The Art of Scientific Computing. Second edition. Cambridge, UK: Cambridge University Press, 2002. 45/46 67 Cooley JW, Tukey JW. An Algorithm for the Machine Calculation of Complex Fourier Series. Math Comput 1965; 19:297-5. 68 National Semiconductor Corporation. LM135/LM235/LM335, LM135A/LM235A/LM335A Precision Temperature Sensors. Datasheet. Santa Clara, CA, USA: National Semiconductor Corporation; 1999. 46/46