I'm trying to get more interesting and complex behavior from behavior-based systems. I believe Brooks' approach is the best way to deal with the real world on a fundamental level, but I've come to think his subsumption architecture is too restricted in not allowing for complexity and flexibility for goals. The goal an agent is currently attending to changes just as rapidly as the environment its situated in, not only switching between parallel goals in reactive / opportunistic responses to the environment (which Brooks' work deals with to some extent) but also skipping up and down between higher level considerations and lower-level detail. Brendan McGonigle [a psychology professor at the University of Edinburgh] first pointed this out to me with an example of leaving a room... At first you are just walking towards the door, but at some point you switch to worrying about getting your hand to the doorknob. I wasn't convinced this was really a problem, because it seemed to me that your environment (what you react to) would have changed a great deal as you approach the door so subsumption could still work, but hacking over the summer I've convinced myself that its easier to maintain high level goal persistence if you do model these things more hierarchically.
Getting the balance between persistence and reactiveness right is a major challenge for behavior arbitration in general, but I've created a system that for me at least is conducive to thinking about solving the problem. I've organized the behavior space into "action patterns" (based on the idea of Fixed Action Patterns from ethology) which reduces the number of combinations of behaviors an arbitrator needs to consider. Each goal the system knows how to acheive is identified as a "competence" which is a list of these action patterns which may be useful in fulfilling the goal, associated with priorities. The action patterns fire reactively when their perceptual preconditions are met, the priority system resolves ambiguity when more than one AP could fire. The priority system is intended to ensure convergence towards the goal, but I don't enforce that.
This actually winds up in sounding more like Maes' spreading activation nets than subsumption architecture, but the actual execution space is flatter and more computationally tractable than her full system. Also, the AP's are thought of more in terms of libraries of associated skills that could be acquired more or less haphazardly by imitation, trial and error, practice and reenforcement, where as Maes' nets have strict dependencies defined between every behavior.
I actually call my action patterns "LAP"s for "Learnable Action Pattern," but I haven't introduced much learning yet. The idea is that a lot of (most?) new skills / solutions come from generalizing behaviors you already have, whereas most research in learning so far in the autonomous-agent / nouveau AI community has been focusing on finding raw new sequences (within my AP metaphor, they would say state/action pairings) using stuff like reenforcement learning. So I made my sequences have a very predictable structure so you could apply general (uninformed) learning functions across them. The process starts from needing to match a new goal. Unfortunately, I haven't figured out how to generate a new goal yet that needs to be matched! It will probably come to me when I get onto a problem where I need it.
Right now, the domain I'm hacking is just blocks world. I'm here because:
I expect to be through this blocks-world phase by the end of the upcoming term though, and then to be working on mobile robots (though hopefully with manipulators.)