The development of any complex system is an iterative process. This is especially true for autonomous mobile robot systems that are designed to perform sophisticated tasks in unstructured and/or dynamic environments. The structuredcontrol approach is presented, in which deliberative components that handle nominal situations are developed first, and then incrementally layered with reactive behaviors that handle exceptional situations. The Task Control Architecture facilitates the structured-control approach by providing control constructs for communication, planning, task execution, resource management, and error detection and recovery. One difficulty with the approach is that interactions between concurrent components can give rise to unpredictable behavior. We are beginning to address that by formalizing the control constructs in order to prove properties about the expected performance of robot systems.