Aggregation


Aggregation is a group behavior in which the individuals approach to each other and form clusters. In nature, for example, bees aggregate in the hive and school of fish remain together in single clusters. In swarm robotics, aggregation behaviors are widely study as they determine the ability of the robots to remain together as a group. Robots can aggregate either because they perceive a region of interest to aggregate in the environment—like the bees aggregate in the hive, or because they sense other robots that are already forming a cluster—like the school of fish.

Objective

The objective of this practical session is to design the control software for a robot swarm that aggregates in a specific region of the environment.

Designing the Control software

The control software of the robots is executed in the form of time steps—that is, the script is executed in the simulator once for each time step. In this experiment, the time step has a length of 100ms. In other words, each of the actions defined in the Lua script will be executed 10 times per second.

It is expected that you use the control software produced in practical session (2.1) to allow the robots move in the environment without colliding with the walls and other robots.

Remember that the individual actions of each robot are the ones that lead the robot swarm to achieve the desired behavior.

General remarks

The control software of the robots is executed in the form of time steps—that is, the script is executed in the simulator once for each time step. In this experiment, the time step has a length of 100ms. In other words, each of the actions defined in the Lua script will be executed 10 times per second.

Remember that the individual actions of each robot are the ones that lead the robot swarm to achieve the desired behavior.


Exercise 1: Aggregation in a region of interest

In this exercise, you will design an aggregation behavior that drives a swarm to cluster within a specific region of the environment.

Launching the experiment

1 - Enter the directory that contains the materials for this practical session.

cd ~/swarm_robotics/aggregation/

2 - Run the ARGoS simulation.

argos3 -c aggregation_one_spot.argos

Experimental setup

At the beginning of the experiment, a swarm of foot-bots is randomly distributed in a squared bounded arena with white floor. In the center of the arena, there is a black spot that indicates the region of interest on which the robots must aggregate. During the execution of the experiment, all the robots must step into the black spot. The experiment will end when all the robots are inside of the black spot.

Aggregation in a region of interest

Individualistic aggregation

In an individualistic strategy, robots randomly walk in the arena looking for the black spot. Once a robot detects the spot, it stops moving and waits for other robots to arrive. Eventually, all robots in the swarm will find and enter the spot and the swarm will be aggregated inside.

Controller description

The basic control pseudocode is summarized below.

1 - Check the color of the ground

for each sensor i in ground sensors
do
  if reading[i] == black
  then
    in_spot = true
  end
end

2 - Set robot velocity

if in_spot
then
  SetStopVelocity()
end
else
  SetRandomWalk()
end

Proposed solution

A proposed solution for the exercise will be available to download after midnight.


Exercise 2: Aggregation as implicit decision making

In this exercise, you will design a robot swarm that autonomously decides to aggregate in one out of two regions of interest.

Launching the experiment

1 - Enter the directory that contains the materials for this practical session.

cd ~/swarm_robotics/aggregation/

2 - Run the ARGoS simulation.

argos3 -c aggregation_two_spot.argos

Preliminary test

Test first the control software you developed in Exercise 1. Do the robots aggregate in a single spot? If not, what prevent them to reach a consensus on which spot they should aggregate?

Experimental setup

At the beginning of the experiment, a swarm of foot-bots is randomly distributed in a squared bounded arena with white floor. In the arena, there are two black spots that indicate two possible regions of interest on which the robots must aggregate. During the execution of the experiment, the robots must aggregate in one out of the two spots. The experiment will end when at least 70% of the robots are aggregated in a single spot.

Aggregation as implicit decision making

Implicit communication

A first form of communication in swarm robotics is the one defined as implicit communication. In this form of communication, robots pass information to their peers without establishing a defined communication channel or message. For example, a robot can change its behavior in regard to the nearby presence, or absence, of other robots. In this sense, robots communicate by relatively positioning themselves with respect to other robots.

This form of communication is particularly relevant to the case in which swarms must aggregate in one out of two possible options. After finding the aggregation spot, a robot can decide whether to stay on it, or leave it, after considering the number of peers it can perceive. If the robot can perceive a large number of peers, it is likely that it is in a large cluster and it will aim to remain there. On the contrary, it the robot perceives just a few peers, its likely that it is not in a cluster and it will leave the spot to find a better aggregation place.

Controller description

In this exercise, you can start from the code that you developed in the Exercise 1. Your task is to extend the script so that the robots aggregate in a single spot.

The basic control pseudocode is summarized below.

1 - Check the color of the ground

2 - If the robot is in the spot, set an arbitrary signal that other robots can see and wait an arbitrary time for other robots to arrive

3 - Count the number of nearby robots and decide whether to stay or leave

for each robot i seen at range[i]
do
  if range[i] < nearby_range
    n_robots += 1
  end
end

leave = EvaluateLeavingCondition(n_robots)

4 - Set robot velocity

if leave
then
  SetRandomWalk()
  StopSignalEmition()
end
else
  SetStopVelocity()
end

Proposed solution

A proposed solution for the exercise will be available to download after midnight.


Exercise 3: Enhancing aggregation with taxis behaviors

In this exercise, you will use taxis behaviors to improve the performance of a robot swarm that autonomously decides to aggregate in one out of two regions of interest.

Launching the experiment

1 - Enter the directory that contains the materials for this practical session.

cd ~/swarm_robotics/aggregation/

2 - Run the ARGoS simulation.

argos3 -c aggregation_two_spot.argos

Experimental setup

At the beginning of the experiment, a swarm of foot-bots is randomly distributed in a squared bounded arena with white floor. In the arena, there are two black spots that indicate two possible regions of interest on which the robots must aggregate. During the execution of the experiment, the robots must aggregate in one out of the two spots. The experiment will end when at least 70% of the robots are aggregated in a single spot.

Enhancing aggregation with taxis behaviors

Taxis behaviors

Taxis can be defined as a form of movement behavior in which individuals move towards or away from a stimulus. For example, the movement towards and away from light sources is defined as phototaxis, and if the stimulus corresponds to chemical components, the behavior is defined as chemotaxis.

Taxis behaviors are widely used in swarm robotics. Robots often change their movement behavior in regard to stimuli produced by other robots, or by the environment itself. In the particular case of aggregation, robots can use taxis to facilitate the formation of clusters of robots. A group of robots that already started aggregating can emit a signal that aims to attract nearby robots, and in consequence, the swarm is likely to aggregate faster.

Controller description

In this exercise, you can start from the code that you developed in Exercise 2. Your task is to deign the taxis behavior that triggers if the robots senses other robots that are already aggregating.

The basic control pseudocode for the taxis behavior is summarized below.

1 - Count the number of nearby robots

2 - If enough robots are emitting the signal, build a 2D attraction vector

for each robot i seen at {range_i, bearing_i}
do
  Set a 2D vector vec[i] according to {range_i, bearing_i}
  att_vector += vec[i]
end

3 - Compute the direction of movement

att_angle = GetAngle(att_vector)

if att_angle > 0
then
  rotate_to_left = true
end
elseif att_angle < 0
  rotate_to_right = true
end
else
  move_forward = true
end

4 - Set robot velocity

if not obstacle_in_front
  if rotate_to_right
  then
    set_velocity(math.max(0.5,math.cos(att_angle)) * 10,0)
  end
  elseif rotate_to_left
    set_velocity(0,math.max(0.5,math.cos(att_angle)) * 10)
  end
  else
    SetFordwardVelocity()
  end
else
  ObstacleAvoidance()
end

Proposed solution

A proposed solution for the exercise will be available to download after midnight.


Further readings

The following reading discusses the design of probabilistic strategies in aggregation of robot swarms.

1 - Soysal, O. and Şahin, E. (2005). Probabilistic aggregation strategies in swarm robotic systems.