A move can be a constant or variable, or
recursively an arbitrary wave itself:
move → constant | variable | wave
Variables classify as nodal, associated with space
positions and shared by different waves, frontal,
moving in space with program control, and
environmental, accessing the environment navigated.
Constants may reflect both information and physical
matter.
Wave, being applied in a certain position of the
distributed world, can perform proper actions in a
distributed space, terminating in the same or in other
positions. It provides final result that unites local
results in the positions (nodes) reached, and also
produces resultant control state. The (distributed)
result and the state can be subsequently used for
further data processing and decision making on
higher program levels. Parallel waves can start from
different nodes in parallel, possibly intersecting in
the common distributed space when evolving in it
independently.
If moves are ordered to advance in space one
after the other (which is defined by a proper rule),
each new move is applied in parallel in all the nodes
reached by the previous move. Different moves (by
other rules) can also apply independently from the
same node, reaching new nodes in parallel. The
functional style syntax shown above can express any
program in DSL, but if useful, other notations can be
used, like the infix one. For example, an
advancement in space can use period as operator
(separator) between successive steps, whereas
parallel actions starting from same node can be
separated by a semicolon. For improving readability,
spaces can be inserted in any places of the programs-
-they will be automatically removed before
execution (except when embraced by quotes).
The interpreter may have its own physical body
(say, in the form of mobile or humanoid robot), or
can be mounted on humans (like in mobile phones).
A network of the interpreters can be mobile and
open, changing its volume and structure, as robots or
humans can move at runtime. We will be assuming
for the rest of this paper that every sensor has the
DSL interpreter installed, which may have a
software implementation or can be a special
hardware chip.
In the following sections we will show and
explain the DSL code for a number of important
problems to be solved by advanced sensor networks,
which confirms an efficiency of the proposed
distributed computational and control model.
3 ELEMENTARY EXAMPLE
3.1 The Task
An elementary task to be programmed in DSL may
look like follows. Let it needs to go to the physical
locations of a disaster zone with coordinates (using
x-y pair here for simplicity) x25_y12, x40_y36, and
x55_y21, measure temperature there, and transmit
its value, together with exact coordinates of the
locations reached, to a collection center. The
corresponding program in DSL will be as follows:
Hop(x25_y12, x40_y36, x55_y21).
Transmit(Temperature & Location)
The program moves independently to the three
locations given, and in every destination reached
measures temperature using special environmental
variable Temperature. Using another
environmental variable Location, it attaches to
the previous value exact coordinates of the current
physical position (which, by using GPS, may differ
from the initially intended, rough coordinates). The
two-value results are then independently transmitted
from the three locations to a collection center.
This program reflects semantics of the task to be
performed in a distributed space, regardless of
possible equipment that can be used for this. The
latter may, for example, be a set of sensors scattered
in advance throughout the disaster zone, where
hopping by coordinates may result in a wireless
access of the sensors already present there--not
necessarily moving into these points physically. As
another solution, this program may task mobile
robots (single or a group) to move into these
locations in person and perform the needed
measurement and transmission upon reaching the
destinations.
3.2 Single-Robot Solution
Let us consider how the previous program will be
executed with only a single robot available (let it be
Robot 1, assuming other robots not reachable). After
its injection into the robot’s interpreter (see Fig. 3),
the first, broadcasting statement:
Hop(x25_y12, x40_y36, x55_y21)
will be analyzed first. It naturally splits into three
independent hops, but only one can be performed at
the start by a single robot.
ICINCO 2007 - International Conference on Informatics in Control, Automation and Robotics
94