Executing Structured Reactive Plans *

We consider plan execution for an autonomous robot to be a computational process that performs the following task: given (1) a plan that has been designed accomplish some jobs, (2) a stream of sensory data, and (3) a stream of feedback signals from the robot control processes, cause the robot to exhibit a behavior that accomplishes its jobs as specified by the plan. Plan execution would be trivial if the plan specified all aspects of the intended behavior for all possible streams of sensory input and feedback signals. Such detailed plans, however, are often extremely complex and impossible to synthesize automatically. An elegant solution to this problem are robot control systems with planning systems that synthesize behaviors specified in terms of discrete, atomic plan steps with ordering constraints. The behavior specifications produced by these planning systems are abstract and sketchy and do not specify how the robot is to react to asynchronous occurrences of events, arrival of sensor data, to synchronize its concurrent actions, and to recover from execution failures (Fir89). In this kind architecture, a plan execution module has to produce competent behaviors from simple (sketchy, abstract) behavior specifications and is responsible for the successful execution of the individual steps and checking the progress of plan execution in all possible situations (FirS9; HF90). In many applications, however, robots should exhibit very different behaviors when executing similar plans in similar situations. Consider the following two plans for transporting objects: first, the robot is to get the bomb from location l to location l I (to prevent an explosion) and second, the robot is to get the empty box from I to location 11 (to store some objects). Both plans are very similar: the robot should go to l, get the re-