Hey! This is the second tutorial in the swarm robotics series. In the last tutorial, I gave an introduction to swarm robotics and an intuition as to why it is better to have a swarm of many robots than a single robot. If you haven’t read that, you can read it here.
In this article, I’ll be talking about a swarm robotic system and tell you about the different cycles that a swarm robot undergoes while performing a task. As there is a kind of contention between the definition of swarm robots among the theoretical and practical swarm robotic community, I’ll try to first define a swarm robot by trying to take the best of both worlds so as to not anger any one community.
So what is a Swarm Robot???
Theoreticians try to look at swarm robots as an object(that could also be a point) in a universe, that has certain functions, or is able to perform certain tasks. For them, a point in a plane can be a robot, and its functions could be moving and seeing(and a lot many more, or nothing else too!). These robots generally do not have any identifying number or unique ID, they may or may not have memory and they usually have no communication abilities. Now an engineer might think of this definition as very strange and it felt strange to me too. I mean, why can a robot not have memory? And why should it not have any communication abilities? Both of these functionalities are pretty cheap and small(in size, as in, they do not take up much space in the robot) and they can make a world of difference when it comes to designing algorithms for swarm robots.
On the other hand, ‘seeing’ is a very tough thing to model from an engineering perspective. To see, it would require a combination of one or more of cameras and distance sensors and LIDAR and SLAM . And all this will require a considerable amount of power, space, computational power and would significantly increase the cost. Effectively, it would increase the size and cost of an individual robot which is what we wanted to reduce in the first place! But the reason theoreticians work with difficult and one could say even unrealistic models like this is because they wish to test the boundary of how simple and robust a robotic system can be made. With many small and cheap robots, chances are, that many of them will have components that will fail, effectively reducing the functionalities they have, and what theoreticians want to do is make algorithms that ensures that as a whole the swarm will perform the task even if many robots fail. Hence the simple robots.
And what about practical robot builders or physical swarms?
So far, very few people have actually managed to make swarm robots that can work in a real physical world. These swarm robots are present in a laboratory setting that has many cameras and sensors that monitor the position of each robot and then tell them where to move or what task to perform. This is obviously not possible in a real world setting. In a real world setting, we expect the robots to perform tasks autonomously and quickly irrespective of their position or the position of other robots.
However, nowadays, many researchers and labs have built robots that can perform tasks like monitoring neighborhoods or checking harvests or performing search and rescue opertations. They can do all this autonomously by using many technologies like GPS and so on. We’ll talk a bit more about these robots later on in this series.
For the purpose of this article and all successive articles, we’ll look at swarm robots that take the best of both these worlds. That is, we’ll assume that the robots have memory and communication capabilities, but we’ll also take a look at algorithms that will help the robots do all these tasks without the need for capabilities like GPS and memory. In this way, we’ll get a better sense of how to make swarm robots that can perform many complex tasks, but are also robust in that they will not fail if they lose certain capabilities like memory and even movement(More about that later).
LOOK, COMPUTE, MOVE
Phew! Now that that’s over, let’s take a look at the steps that a swarm robot takes while performing a task. These steps are:
1)Look – In the look stage, the robot uses its sensors to get a sense of its surroundings. ‘Look’ might mean: using a distance sensor to check for obstacles, use GPS to check its current position, use a camera to look at some person or object(search and rescue) and so on. The look stage is important, because based on the ‘Look’ stage, the robots knows its current status or surroundings and it is able to use that information to perform the next step: Compute.
2)Compute – In this stage, the robot makes a decision to do something based on what it has seen or the information it has got from the ‘Look’ step. If there is an obstacle in its path, the robot will compute a new path to take, if the robot is lost, it will decide where to go based on GPS data, if the robot sees the person it is looking for in case of search and rescue, it might decide to send a signal or notify the police. Once it has done computing, the robot will move.
3)Move – The move step does not mean that the robot will have to move. In case the robots sees an obstacle in its path, it will move in a different direction, in case the robot figures out where to go using GPS, it will move there, but in the case of search and rescue, it might decide to send a signal to the lost person, or it might decide to call the police. The word ‘Move’ here means perform a task.
Once these steps are done, the robot does it over and over until its work is finished.
Now you may be wondering, that a robot doesn’t Look then Compute then Move. It does it together all at the same time. A drone doesn’t stop while it looks and computes, it keeps moving! And from a human perspective, that is correct and incorrect at the same time. You see, in a robot, these tasks are performed in succession so quickly that we are unable to see the individual steps, but it does happen like this. The reason we are dividing their work into steps or cycles is because it makes it easier for us to understand and debug the algorithms we’ll be studying later.
Swarm Robotic System
And finally, we come to the last part of this post: the universe where the swarm robots performs tasks, which I will call the system or the model from now on.
The system can be composed of n number of swarm robots.
The robots may or may not have memory. If they don’t, then they are called oblivious robots. In oblivious robots, their data memory is cleared after every cycle. While we will be studying algorithms that will allow robots to perform tasks without having memory, in general, we’ll be looking at robots with memory.
To make our task simpler, we’ll assume that all the robots we’ll be dealing with can move and that they always move in the “Move” step while performing tasks. We’ll also assume that the robots will always move a minimum δ, delta distance, while performing the “Move” step.
The robots move in the universe, and they may or may not have a common axis. What this means is that if given a command to move 5 units in the forward direction, one robot might move forward, but another may move to the right or left or somewhere else, simply because it was facing another direction. In this case we say that there is no consistency or agreement with a universal coordinate system and only local coordinate systems exists. However, the robots will have an agreement on the unit of length.
When robots are not controlled by a person but make decisions on what task to perform based on some preinstalled program, they are called autonomous robots.
There are two kinds of visibility in this model: Limited and unlimited. Unlimited visibility means that the range up to which the robot can see is the entire universe. In limited visibility, the robots can only see up to a certain range.
That is pretty much it. So far, we defined a swarm robot, we have seen the various steps a robot takes while performing a task and we have defined the swarm robotic system. In the next tutorial we’ll look at some algorithms for swarm robotics. The first algorithm we’ll look at is a Gathering algorithm that helps many swarm robots gather at a point in the universe.
That’s all folks!
Note: There are a few topics I have omitted because they are mostly related to theoretical models. I will be writing a different post for that in case you are interested to read about that. In theoretical models, all robots may not be ON or moving at the same time. These are called activation schedules and you can read more about them here.