|
|
Kamin Whitehouse :: Projects
|
|
|
|
Localization
|
Our work in localization has several components:
- hardware and software for acoustic and ultrasonic ranging on the mica and mica2 motes
- large collections of acoustic, ultrasound, and RF ranging data from multiple different environments
- a simulator called "silhouette" that simulates a localization deployment given an empirical ranging profile
- comparison of empirical ranging data with theoretical models
- analysis of dozens of localization deployments (under submission)
- sensitivity analysis of several localization algorithms to ranging irregularities in various empirical profiles (in progress)
The schematics, data, code, paper and presentation for this project are freely available.
|
|
Semantic Streams |
One of the
largest remaining obstacles to the widespread use of sensor
networks is the interpretation of the sensor data; users must be
able to query for high-level facts about the world, not just raw
ADC readings. We designed a framework called Semantic Streams which
allows users to pose declarative queries for semantic values,
such as "the speeds of vehicles near the entrance of the parking
garage." The system combines logical inference with AI planning
techniques to compose a sequence of inference units,
which are stream operators that perform a minimal amount of
sensor fusion or interpretation on incoming event streams and
incorporate newly inferred semantic values into outgoing event
streams. Both the sensor network and the inference units are
logically described in Prolog and the system can reason about
which sensors in space to use and whether the inference units
are being used in an appropriate world context. Typically,
multiple combinations of sensors and inference units can answer
the same query, so users can also declare QoS constraints in
CLP(R) notation to choose between logically equivalent inference
graphs, for example: "the confidence of the speed estimates
should be greater than 90%." or ``I want to minimize the total
number of radio messages.'' This work is patent pending. The
paper, poster, and presentation are freely available.
|
|
Hood: a Distributed Programming Abstraction
|
Traditional distributed programming abstractions such as shared
memory are difficult to apply to sensor networks because of the
unreliable, low-bandwidth, geographically-constrained
communication model. Instead, many distributed sensor network
algorithms are based on the concept of a neighborhood in which
each node selects a set of important neighbors and maintains
state about them. However, programmers must still implement
neighborhoods in terms of their component parts: messaging, data
caching, and membership. We developed an abstraction called Hood that unifies these
fundamental concepts as a distributed programming primitive for
sensor networks. Using Hood, a neighborhood can be defined by a set of criteria
for choosing neighbors and a set of variables to be shared, such
as a one-hop neighborhood over which light readings are shared
and a two-hop neighborhood over which both locations and
temperature are shared. Once the neighborhoods are defined, Hood
provides an interface to read the names and shared values of
each neighbor. Beneath this interface, Hood is hiding the
complexity of discovery and data sharing. We have shown
that this abstraction captures the common usage of neighborhoods
in many publicly available sensor network applications, and it
has been used to implement some of TinyOS's largest
applications. The code,
documentation,
paper and presentation for this work are
freely available.
|
|
Marionette: Embedded Wireless Debugging
|
A main challenge to developing applications for wireless
embedded systems is the lack of run-time visibility and control.
We developed a tool suite called Marionette
which provides an interpreter through which the network
operator can remotely call the node's functions, read and write
its variables, and access its enumerations and data structures.
This interactive and scriptable environment allows the developer
to seamlessly trade off between between writing application
logic on the PC for simplicity and debugging or writing it on
the nodes for increased efficiency. This greatly eases the
development process and we have shown that this tool suite can
reduce code size in several existing applications by up to 75%.
Marionette is actively being used for development on several
testbeds of up to several hundred nodes. Marionette builds upon
my earlier work on the Matlab/TinyOS
development environment, which has been in the main TinyOS
distribution for years. The code,
screenshots,
documentation
and presentation for this
project are freely available.
|
|
Calibration
|
Instead of using a single, highly-engineered sensor, sensor
networks monitor the world through hundreds of cheap,
assembly-line components. Many such devices have poor factory
calibration and drift over time during use. Because sensor
networks can contain thousands of such sensors and can be
influenced by the environment, they should be self-calibrated
after deployment. Unfortunately, pairing each sensor with an
actuator to provide a known stimulus does not solve this problem
because the actuators must also be calibrated. We developed a
technique in which, instead, each node calibrates its sensor
using the actuators of all of its neighbors. This creates an
over-constrained system from which calibration coefficients can
be inferred even in the face of some noise from both the sensors
and actuators. We demonstrated the calibration technique on a
36 node testbed with microphones and acoustic actuators. The code, paper and presentation for this project
are freely available.
|
|
Mutation Routing
|
One of the biggest challenges in a distributed tracking
application such as the Pursuer-Evader Game (PEG) is
mobile-mobile routing: routing from a source node to a
destination while both are changing location in the network
topology. Mutation Routing is
an algorithm that finds a route once and then mutates it
when nodes move. The algorithm can be proven never to mutate to
an inconsistent state and, because mutation eliminates the need
for control message and new route discovery overhead, it increases
the overall bandwidth on the route. One disadvantage to this
algorithm, however, is that routes can mutate to sub-optimal,
snake-like patterns. Mutation routing therefore trades
energy-efficiency and latency for higher bandwidth and
lightweight route maintenance. Current work is investigating
hybrid routing algorithms that can choose the ideal operating
point in this tradeoff. The poster and presentation are freely
available.
|
|
Collision Detection and Recovery | Besides complex
techniques like CDMA, most wireless MAC protocols today lose
packets during collisions and cannot differentiate between
packet collisions and channel noise. Therefore, they
unnecessarily avoid simultaneous transmission even though many
radios exhibit the Capture Effect, which is the ability
to correctly receive a strong signal from one transmitter
despite significant interference from other transmitters. We
developed a technique to exploit this effect to
cheaply detect and recover from packet collisions using only
simple, low-power radios that are commonly used in sensor
networks. This technique differentiates between collisions and
channel noise, recovers one of the packets entirely, and can
often identify both transmitters that were involved in the
collision. This allows MAC protocols to be more aggressive by
transmitting while neighbors are also transmitting; if a
collision occurs, one of the packets will actually get through
and feedback can be used to request the lost packets and/or to
prevent such collisions in the future. We demonstrated the
collision detection and recovery technique on a 28 node testbed
and current experiments with new MAC protocols are showing up to
30% gains in bandwidth and latency. The code, paper and presentation for this
project are freely available.
|
|
|
|
Kamin Whitehouse
Computer Science Department
The University of Virginia
217 Olsson Hall
Charlottesville, Virginia 94720
|