Swarm robotics is a new approach to the coordination of multi-robot systems. In contrast with traditional multi-robot systems which use centralised or hierarchical control and communication systems in order to coordinate robots’ behaviours, swarm robotics adopts a decentralised approach in which the desired collective behaviours emerge from the local interactions between robots and their environment. Such emergent or self-organised collective behaviours are inspired by, and in some cases modelled on, the swarm intelligence observed in social insects. The potential for swarm robotics is considerable. Any task in which physically distributed objects need to be explored, surveyed, collected, harvested, rescued, or assembled into structures is a potential real-world application for swarm robotics. The key advantage of the swarm robotics approach is robustness, which manifests itself in a number of ways. Firstly, because a swarm of robots consists of a number of relatively simple and typically homogeneous robots, which are not pre-assigned to specific roles or tasks within the swarm, then the swarm can self-organise or dynamically re-organise the way individual robots are deployed. Secondly, and for the same reasons, the swarm approach is highly tolerant to the failure of individual robots. Thirdly, the fact that control is completely decentralised means that there is no common-mode failure point or vulnerability in the swarm. Indeed, it could be said that the high level of robustness evident in robotic swarms comes for free in the sense that it is intrinsic to the swarm robotics approach, which contrasts with the high engineering cost of fault tolerance in conventional robotic systems. The realisation of the potential of swarm robotics requires the solution of a number of very challenging problems. Firstly, in algorithm design: swarm roboticists face the problem of designing both the physical morphology and behaviours of the individual robots such that when those robots interact with each other and their environment, the desired overall collective behaviours will emerge. At present there are no principled approaches to the design of low-level behaviours for a given desired collective behaviour. Secondly, in implementation