Showing posts with label e-puck. Show all posts
Showing posts with label e-puck. Show all posts

Tuesday, July 29, 2014

On internal models, consequence engines and Popperian creatures

So. We've been busy in the lab the last few months. Really exciting. Let me explain.

For a couple of years I've been thinking about robots with internal models. Not internal models in the classical control-theory sense, but simulation based models; robots with a simulation of themselves and their environment inside themselves, where that environment could contain other robots or, more generally, dynamic actors. The robot would have, inside itself, a simulation of itself and the other things, including robots, in its environment. It takes a bit of getting your head round. But I'm convinced that this kind of internal model opens up all kinds of possibilities. Robots that can be safe, for instance, in unknown or unpredictable environments. Robots that can be ethical. Robot that are self-aware. And robots with artificial theory of mind.

I'd written and talked about these ideas but, until now, not had a chance to test them with real robots. But, between January and June the swarm robotics group was joined by Christian Blum, a PhD student from the cognitive robotics research group of the Humboldt University of Berlin. I suggested Christian work on an implementation on our e-puck robots and happily he was up for the challenge. And he succeeded. Christian, supported by my post-doc Research Fellow Wenguo, implemented what we call a Consequence Engine, running in real-time, on the e-puck robot.

Here is a block diagram. The idea is that for each possible next action of the robot, it simulates what would happen if the robot were to execute that action for real. This is the loop shown on the left. Then, the consequences of each of those next possible actions are evaluated. Those actions that have 'bad' consequences, for either the robot or other actors in its environment, are then inhibited.

This short summary hides alot of detail. But let me elaborate on two aspects. First, what do I mean by 'bad'? Well it depends on what capability we are trying to give the robot. If we're making a safer robot, 'bad' means 'unsafe'; if we're trying to build an ethical robot, 'bad' would mean something different - think of Asimov's laws of robotics. Or bad might simply mean 'not allowed' if we're building a robot whose behaviours are constrained by standards, like ISO 13482:2014.

Second, notice that the consequence engine is not controlling the robot. Instead it runs in parallel. Acting as a 'governor', it links with the robot controller's action selection mechanism, inhibiting those actions evaluated as somehow bad. Importantly the consequence engine doesn't tell the robot what to do, it tells it what not to do.

Running the open source 2D robot simulator Stage as its internal simulator our consequence engine runs at 2Hz, so every half a second it is able to simulate about 30 next possible actions and their consequences. The simulation budget allows us to simulate ahead around 70cm of motion for each of those next possible actions. In fact Stage is actually running on a laptop, linked to the robot over the fast WiFi LAN. But logically it is inside the robot. What's important here is the proof of principle.

Dan Dennett, in his remarkable book Darwin's Dangerous Idea, describes the Tower of Generate-and-Test; a conceptual model for the evolution of intelligence that has become known as Dennett's Tower.

In a nutshell Dennett's tower is set of conceptual creatures each one of which is successively more capable of reacting to (and hence surviving in) the world through having more sophisticated strategies for 'generating and testing' hypotheses about how to behave. Read chapter 13 of Darwin's Dangerous Idea for the full account, but there are some good précis to be found on the web; here's one. The first three storeys of Dennett's tower, starting on the ground floor, have:
  • Darwinian creatures have only natural selection as the generate and test mechanism, so mutation and selection is the only way that Darwinian creatures can adapt - individuals cannot.
  • Skinnerian creatures can learn but only by literally generating and testing all different possible actions then reinforcing the successful behaviour (which is ok providing you don't get eaten while testing a bad course of action).
  • Popperian creatures have the additional ability to internalise the possible actions so that some (the bad ones) are discarded before they are tried out for real.
Like the Tower of Hanoi each successive storey is smaller (a sub-set) of the storey below, thus all Skinnerian creatures are Darwinian, but only a sub-set of Darwinian creatures are Skinnerian and so on.

Our e-puck robot, with its consequence engine capable of generating and testing next possible actions, is an artificial Popperian Creature: a working model for studying this important kind of intelligence.

In my next blog post, I'll outline some of our experimental results.

I am hugely grateful to Christian Blum who brilliantly implemented the architecture outlined here, and conducted experimental work. Christian was supported by Dr Wenguo Liu, with his deep knowledge of the e-puck, and our experimental infrastructure.

Related blog posts:

Tuesday, November 26, 2013

Noisy imitation speeds up group learning

Broadly speaking there are two kinds of learning: individual learning and social learning. Individual learning means learning something entirely on your own, without reference to anyone else who might have learned the same thing before. The flip side of individual learning is social learning, which means learning from someone else. We humans are pretty good at both individual and social learning although we very rarely have to truly work something out from first principles. Most of what we learn, we learn from teachers, parents, grandparents and countless others. We learn everything from how to make chicken soup to flying an aeroplane from watching others who already know the recipe (or wrote it down), or have mastered the skill. For modern humans I reckon it’s pretty hard to think of anything we have truly learned, on our own; maybe learning to control our own bodies as babies, leading to crawling and walking are candidates for individual learning (although as babies we are surrounded by others who already know how to walk – would we walk at all if everyone else got around on all fours?). Learning to ride a bicycle is perhaps also one of those things no-one can really teach you – although it would be interesting to compare someone who has never seen a bicycle, or anyone riding one, in their lives with those (most of us) who see others riding bicycles long before climbing on one ourselves.

In robotics we are very interested in both kinds of learning, and methods for programming robots that can learn are well known. A method for individual learning is called reinforcement learning (RL). It’s a laborious process in which the robot tries out lots and lots of actions and gets feedback on whether each action helps or hinders the robot in getting closer to its goal – actions that help/hinder are re/de-inforced so the robot is more/less likely to try them again; it’s a bit like shouting “warm, hot, cold, colder…” in a hide-and-seek game. It’s fair to say that RL in robotics is pretty slow; robots are not good individual learners, but that's because, in general, they have no prior knowledge. As a fair comparison think of how long it would take you to learn how to make fire from first principles if you had no idea that getting something hot may, if you have the right materials and are persistent, create fire, or that rubbing things together can make them hot. Roboticists are also very interested in developing robots that can learning socially, especially by imitation. Robots that you can program by showing them what to do (called programming by demonstration) clearly have a big advantage over robots that have to be explicitly programmed for each new skill.

Within the artificial culture project PhD student (now Dr) Mehmet Erbas developed a new way of combining social learning by imitation and individual reinforcement learning, and the paper setting out the method together with results from simulation and real robots has been published in the journal Adaptive Behavior. Let me explain the experiments with real robots, and what we have learned from them.

Here's our experiment. We have two robots - called e-pucks. The inset shows a closeup. Each robot has its own compartment and must - using individual (reinforcement) learning - learn how to navigate from the top right hand corner, to the bottom left hand corner of its compartment. Learning this way is slow, taking hours. But in this experiment the robots also have the ability to learn socially, by watching each other. Every so often one of the robots will stop its individual learning and drive itself out of its own compartment, to the small opening at the bottom left of the other compartment. There it will stop and simply watch the other robot while it is learning, for a few minutes. Using a movement imitation algorithm the watching robot will (socially) learn a fragment of what the other robot is doing, then combine this knowledge into what it is individually learning. The robot then runs back to its own compartment and resumes its individual learning. We call the combination of social and individual learning 'imitation enhanced learning'.

In order to test the effectiveness of our new imitation enhanced learning algorithm we first run the experiment with the imitation turned off, so the robots learn only individually. This gives us a baseline for comparison. We then run two experiments with imitation enhanced learning. In the first we wait until one robot has completed its individual learning, so it is an 'expert'; the other robot then learns - using its combination of individual learning and social learning from the expert. Not surprisingly learning this way is faster.

This graph shows individual learning only as the solid black line, and imitation-enhanced learning from an expert as the dashed line. In both cases learning is more or less complete when the graphs transition from vertical to horizontal. We see that individual learning takes around 360 minutes (6 hours). With the benefit of an expert to watch, learning time drops to around 60 minutes.

The second experiment is even more interesting. Here we start the two robots at the same time, so that both are equally inexpert. Now you might think it wouldn't help at all, but remarkably each robot learns faster when it can observe, from time to time, the other inexpert robot, than when learning entirely on its own. As the graph below shows, the speedup isn't as dramatic - but imitation enhanced learning is still faster.

Think of it this way. It's like two novice cooks, neither of whom knows how to make chicken soup. Each is trying to figure it out by trial and error but, from time to time, they can watch each other. Even though its pretty likely that each will copy some things that lead to worse chicken soup, on average and over time, each hapless cook will learn how to make chicken soup a bit faster than if they were learning entirely alone.

In the paper we analyse what's going on when one robot imitates part of the semi-learned sequence of moves by the other. And here we see something completely unexpected. Because the robots imitate each other imperfectly - when one robot watches another and then tries to copy what it saw, the copy will not be perfect - from time to time, one inexpert robot will miscopy the other inexpert robot and the miscopy, by chance, helps it to learn. To use the chicken soup analogy: it's as if you are spying on the other cook - try to copy what they're doing but get in wrong and, by accident, end up with better chicken soup.

This is deeply interesting because it suggests that when we learn in groups making mistakes - noisy social learning - can actually speed up learning for each individual and for the group as a whole.

Full reference:
Mehmet D Erbas, Alan FT Winfield, and Larry Bull (2013), Embodied imitation-enhanced reinforcement learning in multi-agent systems, Adaptive Behavior. Published online 29 August 2013. Download pdf (final draft)

Tuesday, July 24, 2012

When robots start telling each other stories...

About 6 years ago the late amazing Richard Gregory said to me, with a twinkle in his eye, "when your robots start telling each other stories, then you'll really be onto something". It was a remark with much deeper significance than I realised at the time.

Richard planted a seed that's been growing since. What I didn't fully appreciate then, but do now, is the profound importance of narrative. More than we perhaps imagine. Narrative is, I suspect, a fundamental property of both human societies and individual human beings. It may even be a universal property of all advanced societies of sentient social beings. Let me try and justify this outlandish claim. First, take human societies. We humans love to tell each other stories. Whether our stories are epic poems, love songs; stories told with sound (music), or movement (dance), or with stuff (sculpture or art). Stories about what we did today, or on our holidays, stories made with images (photos, or movies); true stories or fantasies, or stories about the Universe that strive to be true (science), or very formal abstract stories told with mathematics, stories are everywhere. Arguably human culture is mostly stories.

Since humans started remembering stories and passing them on orally, and more recently with writing, we have had history: the more-or-less-true grand stories of human civilisation. Even the many artefacts of our civilisation are kinds of stories. They are embodied stories, which narrate the process by which they were designed and made; the plans and drawings which we use to formally record those designs are literally stories which tell how to arrange and join materials in space to fashion the artefact. Project plans are narratives of a different kind: they tell the story of the future steps that must be taken to achieve a goal. Computer programs are stories too. Except that they contain multiple narratives (bifurcated with branches and reiterated with loops), whose paths are determined by input data, which are related over and over at blinding speed within the computer. 

Now consider individual humans. There is a persuasive view in psychology that each of us owes our identity, our sense of self, to our personal life stories. The physical stuff that makes us, the cells of our body, are regenerated and replaced continuously, so that there's very little of you that existed 5 years ago. (I just realised the fillings in my teeth are probably the oldest part of me!) Yet you are still you. You feel like the same you 10, 20 or in my case 50 years ago - since I first became self-aware. I think that it's the lived and remembered personal narrative of our lives that provides us with the feeling, the illusion if you like, of a persistent self. This is I think why degenerative brain diseases are so terrifying. They appear to eat away that personal narrative so devastatingly that the person is ultimately lost, even while their physical body continues living.

So I was tremendously excited to be invited to a cross-disciplinary workshop on Narrative and Complex Systems at the York Centre for Complex Systems Analysis a couple of weeks ago, co-organised by York Professors of English Richard Walsh, and Computer Science Susan Stepney. For the first time I found myself in a forum in which I could share and debate ideas on narrative.

In preparing for the workshop I realised that perhaps the idea of robots telling each other stories isn't as far fetched as it first appears. Think about a simple robot, like the e-puck. What does the story of its life consist of? Well, it is the complete history of all of the movements, including turns, etc, punctuated by interactions with its environment. Because the robot and its set of behaviours is simple, then those interactions are pretty simple too. It occurred to me that it is perfectly possible for a robot to remember everything that has ever happened to it. Now place a number of these robots together, in a simple 'society' of robots, and provide them with the mechanism to exchange 'life stories' (or more likely, fragments of life stories). This mechanism is something we already developed in the Artificial Culture project - it is social learning by imitation. These robots would be telling each other stories.

But, I hear you ask, would these stories have any meaning? Well, to start with I think we must abandon the notion that they would necessarily mean anything to us humans. After all, these are robots telling each other stories. Ok, so would the stories mean anything to the robots themselves, especially robots with limited 'cognition'? Now we are in the interesting territory of semiotics, or - to be more accurate - robosemiotics. What, for instance, would one robot's story signify to another? That signification would I think be the meaning. But I think to go any further we would need to do the robot experiment I have outlined here.

And what would be the point of my proposed robot experiment? It is, I suggest, this:
to explore, with an abstract but embodied model, the relationship between the narrative self and shared narrative, i.e. culture.
By doing this experiment would we be, as Richard Gregory suggested, really onto something?

Monday, December 05, 2011

Swarm robotics at the Science Museum

Just spent an awesomely busy weekend at the Science Museum, demonstrating Swarm Robotics. We were here as part of the Robotville exhibition, and - on the wider stage - European Robotics Week. I say we because it was a team effort, led by my PhD student Paul O'Dowd who heroically manned the exhibit all four days, and supported also by postdoc Dr Wenguo Liu. Here is a gallery of pictures from Robotville on the science museum blog, and some more pictures here (photos by Patu Tifinger):

Although exhausting, it was at the same time uplifting. We had a crowd of very interested families and children the whole time - in fact the organisers tell me that Robotville had just short of 8000 visitors over the 4 days of the exhibition. What was really nice was that the whole exhibition was hands-on, and our sturdy e-puck robots - at pretty much eye-level for 5-year olds, attracted lots of small hands interacting with the swarm. A bit like putting your hand into an ants nest (although I doubt the kids would have been so keen on that.)

Let me explain what the robots were doing. Paul had programmed two different demonstrations, one with fixed behaviours and the other with learning.

For the fixed behaviour demo the e-puck robots were programmed with the following low-level behaviours:
  1. Short-range avoidance. If a robot gets too close to another robot or an obstacle then it turns away to avoid it.
  2. Longer-range attraction. If a robot can sense other robots nearby but gets too far from the flock, then it turns back toward the flock. And while in a flock, move slowly.
  3. If a robot loses the flock then it speeds up and wanders at random in an effort to regain the flock (i.e. another robot).
  4. While in a flock, each robot will communicate (via infra-red) its estimate of the position of an external light source to nearby robots in the flock. While communicating the robot flashes its green body LED.
  5. Also while in a flock, each robot will turn toward the 'consensus' direction of the external light source.
The net effect of these low-level behaviours is that the robots will both stay together as a swarm (or flock), and over time, move as a swarm toward the external light source. Both of these swarm-level behaviours are emergent because they result from the low-level robot-robot and robot-environment interactions. While the flocking behaviour is evident in just a few minutes, the overall swarm movement toward the external light source is less obvious. In reality even the flocking behaviour appears chaotic, with robots losing each other, and leaving the flock, or several mini-flocks forming. The reason for this is that all of the low-level behaviours make use of the e-puck robots' multi-purpose Infra-red sensors, and the environment is noisy; in other words because we don't have carefully controlled lighting there is lots of ambient IR light constantly confusing the robots.

The learning demo is a little more complex and makes use of an embedded evolutionary algorithm, actually running within the e-puck robots, so that - over time - the robots learn how to flock. This demo is based on Paul's experimental work, which I described in some detail in an earlier blog post, so I won't go into detail here. It's the robots with the yellow hats in the lower picture above. What's interesting to observe is that initially, the robots are hopeless - constantly crashing into each other or the arena walls, but noticeably over 30 minutes or so we can see the robots learn to control themselves, using information from their sensors. The weird thing here is that, every minute or so, each robot's control software is replaced by a great-great-grand child of itself. The robot's body is not evolving, but invisibly its controller is evolving, so that later generations of controller are more capable.

The magical moment of the two days was when one young lad - maybe 12 years old, who very clearly understood everything straight away and seemed to intuit things I hadn't explained - stayed nearly an hour explaining and demonstrating to other children. Priceless.

Monday, January 24, 2011

New experiments in embodied evolutionary swarm robotics

My PhD student Paul has started a new series of experiments in embodied evolution in the swarm robotics lab. Here's a picture showing his experiment with 3 Linux e-puck robots in a small circular arena together with an infra-red beacon (at about 2 o'clock).


The task the robots are engaged in collective foraging for food. Actually there's nothing much to see here because the food items are virtual (i.e. invisible) blobs in the arena that the robots have to 'find', then 'pick up' and 'transport' to the nest (again virtually). The nest region is marked by the infra-red beacon - so the robots 'deposit' the food items in the pool of IR light in the arena just in front of the beacon. The reason we don't bother making physical food items and grippers, etc, is that this would entail engineering work that's really not important here. You see, here we are not so interested in collective foraging - it's just a test problem for investigating the thing we're really interested in, which is embodied evolution.

The point of the experiment is this: at the start the robots don't know how to forage for food; during the experiment they must collectively 'evolve' the ability to forage. Paul is here researching the process of collective evolution. Before explaining what's going on 'under the hood' of these robots, let me give some background. Evolutionary robotics has been around for nearly 20 years. The idea is that instead of hand-designing the robot's control system we use an artificial process inspired by Darwinian evolution, called a genetic algorithm. It's really a way of automating the design. Evolutionary algorithms have been shown to be a very efficient way of searching the so-called design space and, in theory, will come up with (literally evolve) better solutions than we can invent by hand. Much more recent is the study of evolutionary swarm robotics (which is why there's no Wikipedia entry yet), which tackles the harder problem of evolving the controllers for individual robots in a swarm such that, collectively, the swarm will self-organise to solve the overall task.

Still with me? Good. Now let me explain what's going on in the robots of Paul's experiment. Each robot has inside it a simulation of itself and it's environment (food, other robots and the nest). That simulation is not run once, but many times over within a genetic algorithm inside the robot. Thus each robot is running a simulation of the process of evolution, of itself, in itself. When that process completes (about once a minute), the best performing evolved controller is transferred into the real robot's controller. Since the embodied evolutionary process runs through several (simulated) generations of robot controller, then the final winner of each evolutionary competition is, in effect, a great great... grandchild of the robot controller at the start of each cycle. While the real robots are driving around in the arena foraging (virtual) food and returning it to the nest, simulated evolution is running - in parallel - as a background process. Every minute or so the real robot's controllers are updated with the latest generation of (hopefully improved) evolved controllers so what we observe is the robots gradually getting better and better at collective foraging. If you think this sounds complicated – it is. The software architecture that Paul has built to accomplish this is ferociously complex and all the more remarkable because it fits within a robot about the size of a salt shaker. But in essence it is like this: what’s going on inside the robots is a bit like you imagining lots of different ways of riding a bike over and over, inside your head, while actually riding a bike.

Putting a simulation inside a robot is something roboticists refer to as ‘robots with internal models’ and if we are to build real-world robots that are more autonomous, more adaptable – in short smarter, this kind of complexity is something we will have to master.

If you’ve made it this far, you might well ask the question, “what if the simulation inside the robot is an inaccurate representation of the real world – won’t that mean the evolved controller will be rubbish?” You would be right. One of the problems that has dogged evolutionary robotics is known as the 'reality gap'. It is the gap between the real world and the simulated world, which means that a controller evolved (and therefore optimised) in simulation typically doesn't work very well - or sometimes not at all - when transferred to the real robot and run in the real world. Paul is addressing this hard problem by also evolving the embedded simulators at the same time as evolving the robot's controllers; a process called co-evolution. This is where having a swarm of robots is a real advantage: just as we have a population of simulated controllers evolving inside each robot, we have a population of simulators - one per robot - evolving collectively across the swarm.

Related blog posts:
Environment-driven distributed evolutionary adaptation
Walterian creatures

Friday, October 15, 2010

New video of 20 evolving e-pucks

In June I blogged about Nicolas Bredeche and Jean-Marc Montanier working with us in the lab to transfer their environment-driven distributed evolutionary adaptation algorithms to real robots, using our Linux extended e-pucks. Nicolas and Jean-Marc made another visit in August to extend the experiments to a larger swarm size, of 20 robots; they made a YouTube movie and here it is:

In the narrative on YouTube Nicolas writes
This video shows a fully autonomous artificial evolution within a population of ~20 completely autonomous real (e-puck) robots. Each robot is driven by its "genome" and genomes are spread whenever robots are close enough (range: 25cm). The most "efficient" genomes end up being those that successfully drive robots to meet with each other while avoiding getting stuck in a corner.

There is no human-defined pressure on robot behavior. There is no human-defined objective to perform.

The environment alone puts pressure upon which genomes will survive (ie. the better the spread, the higher the survival rate). Then again, the ability for a genome to encode an efficient behavioral strategy first results from pure chance, then from environmental pressure.

In this video, you can observe how going towards the sun naturally emerges as a good strategy to meet/mate with other (it is used as a convenient "compass") and how changing the sun location affect robots behavior.

Note: the 'sun' is the static e-puck with a white band around it.

Friday, August 20, 2010

Open-hardware Linux e-puck extension board published

It's now over two years since I first blogged about our Linux-enhanced e-puck, designed by my colleague Dr Wenguo Liu. Since then, the design has gone through several improvements and is now very stable and reliable. We've installed the board on all 50 of our e-puck robots and it has also been adopted for use in swarm robotics projects by Jenny Owen at York, Andy Guest at Abertay Dundee and Newport.

Since the e-puck robot is open-hardware, Wenguo and I were keen that our extension board should follow the same principle, and so the complete design has been published online at sourceforge here All of the hardware designs, together with code images and an excellent installation manual written by Jean-Charles Antonioli are here.

Here's a picture of the extension board. The big chip is an ARM9 microcontroller and the small board hanging off some wires is the WiFi card (in fact it's a WiFi USB stick with the plastic casing removed).

And here is a picture of one of our e-pucks with the Linux extension board fitted, just above the red skirt. The WiFi card is now invisible because it is fitted neatly into a special slot on the underside of the yellow 'hat'.

The main function of the yellow hat is the matrix of pins on the top, that we use for the reflective spheres needed by our Vicon tracking system to track the exact position of each robot during experiments. You can see one of the spheres very strongly reflecting the camera flash in this photo. The function of the red skirt is so that robots can see each other, with their onboard cameras. You can see the camera in the small hole in the middle of the red skirt. Without the red skirt the robots simply don't see each other too well, at least partly because of their transparent bodies.

postscript (added Feb 2011): Here's the reference to our paper describing the extension board:
Liu W, Winfield AFT, 'Open-hardware e-puck Linux extension board for experimental swarm robotics research', Microprocessors and Microsystems, 35 (1), 2011, doi:10.1016/j.micpro.2010.08.002.

Friday, June 04, 2010

Evolving e-pucks

Nicolas Bredeche and his graduate student Jean-Marc Montanier have spent the last two weeks working in the lab to test out work they had already done in simulation, onto real robots. Nicolas is interested in evolutionary swarm robotics. This is an approach, inspired directly by Darwinian evolution, in which we do not design the robots' controllers (brains) but instead evolve them. In this case the brains are artificial neural networks and the process of artificial evolution evolves the strengths of the connections between the neurons. Nicolas is especially interested in open-ended evolution, in which he - as designer - does not pre-determine the evolved robot behaviours (by specifying an explicit fitness function, i.e. what kinds of behaviours the robots should evolve). Thus, even though this is an artificial system, its evolution is - in a sense - a bit closer to natural than artificial selection.

Sunday, February 01, 2009

E-puck imitation

Last week we made a significant breakthrough in the Artificial Culture project. My student Mehmet Erbas demonstrated robot robot imitation for the first time. To be more precise: one e-puck robot first watching another e-puck perform a sequence of movements, then (attempting to) imitate the same sequence of movements. This sounds much easier than it is. It's difficult for two reasons. Firstly, because the e-puck can't see very well. It only has one eye - so no stereo vision and no depth information. Thus we make it easier for the robots to see each other by fitting coloured skirts in primary colours. Secondly, the robot has to translate what it has seen (which amounts to a coloured blob moving left to right and/or getting larger or smaller within its field of vision) into a set of motor commands so it can copy those movements. This transformation is what researchers in imitation in humans and animals call the correspondence problem.

Mehmet has solved these problems with some very neat coding, and the demonstration shows the the imitated dance is - on most runs - a remarkably good copy of the original. We're now figuring out how to measure the quality of imitation Qi so we can get some results and understand the average Qi, and its variance.

Thursday, November 20, 2008

Swarm Tolerance to Failure

Jan Dyre Bjerknes has made a terrific breakthrough with his PhD research that I'm very excited about: see the YouTube video (courtesy of Jan Dyre) below.

Let me explain what's going on here, and why I'm so excited about it. The swarm of 10 e-puck robots, starting on the left of the arena, are attracted to the beacon (the black box) on the right of the arena. Crucially the swarm's movement toward the beacon is not directly programmed into the robots, it is what we call an emergent property of the swarm. I won't explain how it works here, except to say that the robots need to - in a sense - cooperate. One robot can't make it to the beacon on its own, nor two, nor three or four. Five is about the fewest number that can get to the beacon.

If you watch the movie clip carefully you will see that a few seconds into the experiment Jan Dyre has arranged that two of the robots fail: you can see them stop moving. In fact they fail in a really bad way. Their electronics and software still works, only the motors have failed. But because the swarm works cooperatively, the failed robots have the effect of anchoring the swarm and impeding its movement toward the beacon. However, what the clip also shows is that 'force' of the swarm movement (of the 8 robots still working) is, after a while, enough to overcome the 'anchoring force' of the two failed robots. Bearing in mind that partial failures are the worst kind, 20% is a massive failure rate, so this experiment demonstrates the very high level of fault tolerance in a robot swarm.

Tuesday, September 02, 2008

E-pucks with spiky hats

Here are some pictures of e-pucks sporting their new spiky hats (click to enlarge). The purpose of these hats is to allow us to mark each e-puck with 3 reflective spheres, as shown on the left e-puck in the pictures. The reflective spheres allow the e-pucks to be tracked by our Vicon tracking system, and the grid of spikes means that we can provide each e-puck with its own unique pattern of 3 reflective spheres. Jan Dyre (who took these photos) tells me that there are 92 ways of uniquely arranging 3 spheres on this 6x4 grid. The Vicon system will, I'm advised, be able to track each robot in the swarm by recognising its unique pattern of 3 spheres. The Vicon system is due to be set up by their engineers this coming Thursday: it will be great to see it working.

Monday, June 30, 2008

Linux e-puck

I'm very excited because my colleague Wenguo Liu has completed testing of a Linux plug-in board for the e-puck robot. This board very significantly enhances the e-puck - making it into a fully grown-up Linux robot. Here it is with its USB Wifi stick.

Tuesday, April 01, 2008

e-Puck hearing experiment

Here's a video clip, by Davide Laneri, of one e-puck sounding a tone on its loudspeaker, and the other hearing the tone and turning toward it. In order to make this work we've had to (1) turn the loudspeaker of the e-puck on the right so that it's facing directly forward (like a mouth) and (2) add 'ears' to the e-puck so that it has directional hearing. We've not done extensive tests because we've now decided to focus our effort, here in Bristol, on imitation of movement instead of sound.


Thursday, February 28, 2008

How and Why do we have Culture?

In the run up to Science Week (7-16 March) the BA have been asking both the public and scientists for their big questions (see my previous blog What do Aliens look like). When I was asked for my Big Question I didn't have to think too hard, because I'm part of just about the most exciting research project of my life. That project is called The Emergence of Artificial Culture in Robot Societies, and sets out to answer the question "how can culture emerge as a novel property of social animals?" or to put it another way "how and why do we (humans) have culture?".

Of course you may be wondering what business a robot guy (me) has to do with a question of - essentially - evolutionary anthropology, which on the face of it has nothing to do with robotics. Well, firstly I've spent the last ten years working on Swarm Robotics - basically building robot swarms to try and understand how swarm intelligence works, and a robot swarm is a kind of primitive society of robots. Secondly, that work has opened my eyes to the extraordinary power of emergence, or self-organisation*. And thirdly, I'm passionate about trying to work on research problems that completely cross discipline boundaries, ideally across the arts/humanities, social- and natural-science boundaries. The question "how and why do we have culture" is just such a question.

I won't explain now how we intend to address this research question in detail. Suffice it to say that we are going to use a radical approach - which is to build a society of real robots, program them with (what we believe to be) a necessary and sufficient set of social behaviours, then observe them free running. Of course the big question then is will anything happen at all that is capable of being robustly interpreted as evidence of emerging proto-cultural behaviours and - if it does - would we even recognise it (since this will be an emerging robot- not human- culture; an exo-culture if you will).

I'm privileged to be part of a team that includes a computer scientist, theoretical biologist, philosopher, social scientist and art historian/cultural theorist. For more detail here is the announcement on EPSRC grants on the web. Not least in order to mitigate the risk that we fail to recognise anything interesting that might emerge, but also because we strongly believe in Open Science, the whole project will be on the web - live robots, data and all - as soon as we're up and running.

And here's a picture of 2 of the robots we plan to use (called e-pucks). We've added some 'ears' so that they can chirp at each other; the artificial culture lab will have around 50-60 of these robots.

*Emergence is - in my view - both ubiquitious (everywhere from physics, to life, intelligence and culture, to galaxies) and for more important than I think we realise. I would go so far as to say that I believe natural selection (although beautiful and powerful) is on its own insufficent to explain the astonishing complexity of many biological and societal systems. I think you need natural selection + emergence.

Friday, February 23, 2007

An e-puck outing

At a little over 5 cm tall the e-pucks are remarkable little robots. Here is a picture from the web pages of supplier and all round good people at Cyberbotics. Our e-pucks got their first outing at the Brighton Science Festival's Big Science Sunday, on February 18th (and let me pay tribute to festival organiser Richard). A small pack of 4 or 5 e-pucks in a table top arena proved to be a compelling attraction for kids of all ages. A great talking point that allowed us to pontificate about everything from ants and swarm intelligence to the future of robots in society. Here is a picture with my colleague Claire Rocks in mid-demonstration showing part of the arena with two of the e-pucks contrasting with the old Linuxbot on the left. It's amazing to think that the Linuxbot was state-of-the-art technology just 10 years ago. The e-pucks, with sound (microphones and speaker), vision (camera and LEDs), bluetooth radio, proximity sensors and accelerometer are astonishingly sensor-rich compared with the venerable Linuxbot and its generation.

Now the small size of the e-puck can be deceptive. A week or so before the Brighton gig I thought I would try and code up some new swarm behaviours for the robots. "Little robot - how hard can it be", I thought to myself as I sat down to an evening's light coding. Boy was I mistaken. Within the e-puck's densely packed motherboard is a complex system which belies its small size. The Microchip dsPIC microcontroller at the heart of the e-puck has come a long way from the reduced-instruction-set and reduced-everything-else 8 bit PIC I programmed with a few dozen lines of assembler for our early Bismark robot 10 years ago. And in the e-puck the microcontroller is surrounded by some pretty complex sub-systems, such as the sound i/o codec, the camera and the bluetooth wireless. It's a complex system of systems. So, suitably humbled, I shall have to take some time to learn to program the e-puck*.

Just goes to show that with robots too, appearances can be deceptive.

*Fortunately, and with remarkable generosity, the e-puck's designers have released the whole of the e-puck design - hardware and software - under an open source licence. So there are lots of function libraries and example programs to be explored.
And I should have mentioned that, in addition to public engagement, we're also evaluating the e-pucks as possible robots for our new Artificial Culture project. More blogs about this in due course.