The controller manager (CM) package provides the infrastructure to run controllers in a hard realtime loop. In every cycle of the control loop, all controllers loaded into CM will get triggered. The order in in which the controllers are triggered is determined by the CM scheduler. CM provides ROS services to load/start/stop/unload controllers.
The controller manager also enforces low level safety limits on the effort/velocity/position of each joint.
PR2 Controller Manager
Users of the pr2 controller manager should never have to interact with the C++ API.
The ROS API of the pr2 controlelr manager is summerized below. For a detailled description, see the project page http://ros.org/wiki/pr2_controller_manager