
 
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