With an engineering not scientific mindset, I am about to vastly simplify an extremely complex subject. With that qualification, there are two main ways we can tackle the problem of creating robot intelligence:
- Cognitive Robotics or Symbolic Modelling - attempts to create a model of the world in which everything can be represented by symbols. The robot controller can then parse these symbols in a manner similar to the way that a compiler creates machine code from a high level programming language. This approach suits computers, however reducing the world to symbols is a non-trivial task.
- Behavioural Robotics - creates emergent behaviours by having a number of prioritised responses to various situations. For example, a robot could have a behaviour which avoids walls and drops this would be a higher priority than performing a task like following a line or heading towards the brightest light. By layering behaviours on top of each other we create a system which can respond to a changing environment without having to specify what to do in exactly every circumstance.
Symbolic Modelling takes significant computing resources and isn't suited to a cheap micro-controller application. Given our constraints, this makes our choice of approach easy. Behavioural robotics is also the approach which is currently preferred by the academics (for what that is worth). More importantly, a behavioural robot can be built in stages and each behaviour debugged separately. This makes life easier and models how organisms evolve over time with increasing complexity.
The ultimate expression of behavioural robotics is to create artificial neurons which are not intrinsically intelligent but with enough connections create a neural network with emergent intelligence. We wont be attempting to crack that nut.
To design our robot intelligence we will use a behaviour diagram (from the book: Robot Programming : A Practical Guide to Behavior-Based Robotics by Joe Jones), which looks something like the following diagram. This is a simple way to represent the robot control scheme. Input from sensors are shown on the left, these trigger behaviours which are manifested by the robot doing something (e.g. moving). The correct behaviour will be chosen by the "arbiter" based on priority.
We will develop AVA's behaviour diagram in a subsequent post.