New Approach to Manipulator Control: The Cerebellar Model Articulation Controller (CMAC)1

The Cerebellar Model Articulation Controller (CMAC) [1, 2] is a neural network that models the structure and function of the part of the brain known as the cerebellum. The cerebellum provides precise coordination of motor control for such body parts as the eyes, arms, fingers, legs, and wings. It stores and retrieves information required to control thousands of muscles in producing coordinated behavior as a function of time. CMAC was designed to provide this kind of motor control for robotic manipulators. CMAC is a kind of memory, or table look-up mechanism, that is capable of learning motor behavior. It exhibits properties such as generalization, learning interference, discrimination, and forgetting that are characteristic of motor learning in biological creatures. In a biological motor system, the drive signal for each muscle is a function of many variables. These include feedback from sensors that measure position, velocity, and acceleration of the limb; stretch in muscles; tension in tendons; and tactile sensations from various points on the skin. Feedback also includes information from the eyes via the superior colliculus and visual cortex about the positions of the hands and feet relative to their intended targets. Drive signals to the muscles also depend on higher level ideas, plans, intentions, motives, and urges. These may be specified by variables that identify the name of the task to be performed and specify the goals that are desired, the procedures and knowledge required to achieve those goals, and the priorities that have been assigned to achieving those goals. A block diagram of a typical CMAC is shown in Fig. 1. CMAC modules are designed to accept both input command variables from higher levels and feedback variables from sensors. Each CMAC merges these two inputs into a set of memory addresses wherein are stored the correct motor response. The combined input selects a set of memory locations from a large pool of memory locations. The output is the sum of the contents