In this paper we propose and prove correct a new self-stabilizing velocity
agreement (flocking) algorithm for oblivious and asynchronous robot networks.
Our algorithm allows a flock of uniform robots to follow a flock head emergent
during the computation whatever its direction in plane. Robots are
asynchronous, oblivious and do not share a common coordinate system. Our
solution includes three modules architectured as follows: creation of a common
coordinate system that also allows the emergence of a flock-head, setting up
the flock pattern and moving the flock. The novelty of our approach steams in
identifying the necessary conditions on the flock pattern placement and the
velocity of the flock-head (rotation, translation or speed) that allow the
flock to both follow the exact same head and to preserve the flock pattern.
Additionally, our system is self-healing and self-stabilizing. In the event of
the head leave (the leading robot disappears or is damaged and cannot be
recognized by the other robots) the flock agrees on another head and follows
the trajectory of the new head. Also, robots are oblivious (they do not recall
the result of their previous computations) and we make no assumption on their
initial position. The step complexity of our solution is O(n)