In many proposed applications of sensor networks, domain scientists will eventually be required to program and tune sensor network deployments. However, existing programming tools are extremely low level, suitable only for experts in sensor networks and embedded systems. This project develops a macroprogramming language and runtime system that is intended to greatly simplify the development of sensor network applications. In a macroprogramming system, the global behavior of the entire sensor network is written in a high-level language which is compiled into efficient per-node code. Such an approach allows programmers to focus on the domain-specific aspects of sampling, data aggregation, and coordinated node activity without concerning themselves with the low-level details of sensor hardware and radio communication.
This project develops a high-level language, called Regiment, based on ideas from functional reactive programming. In Regiment, the programmer manipulates time-varying signals that represent sensor network state, such as individual sensors or aggregate values. Signals can be grouped into regions that represent topological relationships between sensor nodes, such as the set of nodes within a geographic area. The Regiment language and runtime system will be developed in the context of a wireless sensor network for monitoring volcanic eruptions, and will be evaluated through a network deployment at Volcan Tungurahua, Ecuador.