Macroprogramming

Rene motes
We are investigating high level languages for programming diverse, distributed networks of sensors. Our goal is to greatly simplify sensor network application design by providing high-level programming abstractions and primitives that automatically compile down to the complex, low-level operations implemented by each sensor node.

We are interested in exploring programming language support for sensor networks. Currently, sensor network applications are implemented as complex, low-level programs that specify the behavior of individual motes. Rather, we would like to provide a high-level, global programming model where the application can be specified in terms of system-wide behavior, which is then compiled down to the per-device program.

Click here for publications

Flask

Flask is a domain specific language embedded in Haskell that seeks to address the challenge of programming sensor networks by making the type of high-level, reusable abstractions commonly developed in the functional programming community available in the sensor network domain. Flask consists of four major components:

  1. A simple intermediate language based on a distributed dataflow graph (DDFG) model;
  2. A rich metaprogramming toolkit allowing both applications and compilers to be developed using this DDFG intermediate form;
  3. A compiler that translates dataflow programs to efficient node-level binaries; and
  4. An extensible runtime system that provides commonly-used services (such as routing, sampling, and data storage), and that can be readily extended with pre-existing runtime code.

Regiment

Regiment is a spatial macroprogramming language that abstracts the sensor network state as time-varying streams, which can be groupd into regions. Regions provide a means of expression spatial and logical relationships between sensor nodes, transparent data sharing between nodes, and efficient reduction operations within regions.

Abstract Regions

Abstract Regions is a spatial programming model that exposes the tradeoff between resource usage and the accuracy of collective operations, allowing applications to tune energy and bandwidth consumption to meet accuracy targets.

SORA: Self-Organizing Resource Allocation

We are also investigating the use of market-based techniques for distributed resource allocation in sensor networks. Such an approach models the network as a set of agents that operate to maximize their profit for performing simple, local actions in response to globally-advertised price information. Sensor nodes run a very simple cost-evaluation function, and global behavior is induced throughout the network by advertising price information that drives nodes to react. For more details see our NSDI 2005 paper on SORA.

Biologically-Inspired Synchronization and Desynchronization in Wireless Sensor Networks

Our group is studying approaches to time synchronization and desynchronization in sensor networks that are inspired by biological mechanisms found, for example, in certain species of fireflies that spontaneously synchronize their flashing activity. Our group is interested in the design of simple, self-organizing algorithms for sensor networks, that can easily adapt and repair to errors and changes in topology. We have shown how firefly-inspired synchronization can be adapted for applications on real wireless sensor networks, with message delays, clock skew, and frequent topology changes. We have also shown one can adapt these principles to solve new problems, such as desynchronization, and we have used this to design a self-repairing TDMA scheme for collision-free wireless transmissions.

People