In this section we want to examine how the presented location system fits the stringent resource restrictions of future Smart Dust Systems. As explained in Section 3.3, these restrictions especially apply to the receiver side, i.e., the Smart Dust nodes.
The Berkeley Smart Dust prototype has already demonstrated that a photo detector similar to the one we are using for our location system is feasible. What remains to be shown is how the receiver software (i.e., the device driver and the user level program) fit onto a Smart Dust node.
Both the processing overhead and the memory footprint of the device driver are very low, which is very important for Smart Dust. The first is true because the driver is interrupt driven, i.e., it does not do any sensor sampling or polling. Moreover, the interrupt can be used to wake up the processor from a power saving mode. Thus, the system has to be woken up only during the short periods when a beam is hitting the photo detector. The memory footprint is very low because the driver does not have to store arrays of peak detections. Instead, for each sequence of peaks it only keeps ``first peak'' and ``last peak'' time stamps which are updated when a new interrupt occurs. The whole data structure for one lighthouse only takes about 25 bytes.
Similarly, the location computation part of the user level program has
a very low memory footprint. It just retrieves the values
from the device driver and executes the approximation program
described in Section 4.2. Given the relatively
infrequent location updates, speed is not a problem. On
computationally very limited platforms like future Smart Dust nodes,
it might be necessary to revert to fixed point arithmetic and a
hardware implementation of the location computation code in case the
provided processing capabilities are too limited. Besides the basic
arithmetic operations (
) we need support for
and
in order to solve Equation System
10. Note that
is easy to approximate
since the values of
obtained from Equation 1 are
small due to
. The second order
approximation
has a maximum
error of 0.1% for
. There are also fast
approximations for
. One possible approach is to first
approximate
by iterating
with an
appropriate initial value for
. Multiplying the result by
gives
an approximation for
.
The requirements on the clock are also quite relaxed. Note that we
don't need a real-time clock since we are only interested in the
quotient
. A simple counter which
ticks at a constant rate would also be sufficient. The resolution of
the clock (or counter) just has to be high enough to reliably
distinguish the
values of different
lighthouses. Since the
values of our prototype
system are 4ms and 5ms, respectively, a clock resolution of 0.5ms
would be sufficient.
Please note that dust nodes don't have to be calibrated due to the
following two reasons. Firstly, the two beam sightings used to
measure
and
are identical from a
measurement point of view. Any constant hardware and software delays
will subtract out. Secondly, only the quotient
is used for node localization, which
is independent of the actual clock frequency.