Friday, 30 September 2011

Swarm Robots: Basics

I've started a project for University where we need to program the code for 7 swarm robots. Here's a short video with swarm robots. If you don't really get why this is so awesome, please read on.

The robots need to:
  • select a leader
  • form a group
  • move in a V shape formation like birds migrating
  • while avoiding obsticles
  • and swapping leader to whoever has the highest battery life

The catch is that every robot needs to be programmed with the exact same code. This is known as emergent behaviour. It's pretty damn sweet.

This is my way to think about it. Every single bird is the same. Yet because they have some minor different traits (one might be larger than another), their interactions with each other are different, and so the behaviour of the group may be different to the behaviour if there was only one bird. This is the thought behind emergent behaviour. It is the behaviour that emerges as a group is formed.

[nerd speak]
Now think about the above behaviour in terms of people. If we could model humans and their environment correctly, we could theoritecially simulate the entirety of the human existance. That's a long long way off, but no way near impossible. There is just too many variables to take into account. One of which would be the program itself, and according to Alan Turing with the Halting Problem, the recursive nature of this problem will make the solution undecidable.
[/nerd speak]
Yes that was the nerd speak and not the rest of the post...

Like birds, the robots cannot directly access each others information, they must talk (pass messages). For the robots, the messages can be in the form of a message (one tells the ones listening something) or a service (one asks another for something and it replies accordingly). These are the only ways the robots can interact. Oh but they can ram each other. More on collision detection and avoidance in a later update.

The robots are coded in Python with assistance from ROS (Robot Operating System), that helps with the simulations and the backend on communication between the robots. I'll paste some code at some point to give an overview of what is going on, but I'll be sure to add pictures for those that don't code.

I better end it here, but I have so much more to say so stay tuned for more on swarm robotics.


1 comment: