As mentioned above, the agent is the distinguishing feature between an action and a mere process. It specifies which agent is carrying out the process described in the rest of the representation. We assume that the agent refers to a human model or a physical force like gravity (in which case the agent is understood to be causal and not volitional).
The agent type (see Figure
) and the object type (see
Figure
in Section
) represent agents and
objects respectively. They are very similar in concept except that the
agent type has some extra fields which also describe the behaviors of the
agent which would influence some of the actions of the agent.
Figure: The agent representation type
For each instance of the agent type, a list of actions that the agent is capable of performing is specified. The agents can also be considered to be capable of playing different roles. For each role, the agent performs different actions. So, instead of maintaining one long list of actions, we could group these actions under different roles. For example, the actions involved while driving a car like grasp a steering wheel, sit with foot on the accelerator pedal, etc., would be grouped under the ``car-driver'' role. Each of the listed actions is a primitive action. Unlike for the objects, each action is associated with a set of applicability conditions (test for reachability, etc) which check if the action can be performed by the agent. If not, another set of primitive actions is generated for that agent which have to be completed before the current action can be performed. The agent type also has a field for specifying nominal values and the distribution type and range for some of the actions and state space descriptors. For example, the walking rate of the agent could be specified to have a nominal value of 2 steps per second with a normal distribution and standard deviation of 1. This gives a range of values over which the walking rate can be varied.