In this paper a dynamic task allocation and controller design methodology for cooperative robot teams is presented. Fuzzy logic based utility functions are derived to quantify each robot's ability to perform a task. These utility functions are used to allocate tasks in real-time through a limited lookahead control methodology partially based on the basic principles of discrete event supervisory control theory. The proposed controller design methodology accommodates flexibility in task assignments, robot coordination, and tolerance to robot failures and repairs. Implementation details of the proposed methodology are demonstrated through a warehouse patrolling case study.