# Revision history [back]

A lot of pr2 controllers are actually pretty generic, given you provide the same infrastructure as the PR2. The package robot_mechanism_controllers provides a bunch joint controllers and KDL based cartesian controllers.

If you are just working in Gazebo, using pr2 controllers is pretty strait forward. Just add the following to your urdf:

  <gazebo>
<controller:gazebo_ros_controller_manager name="gazebo_ros_controller_manager" plugin="libgazebo_ros_controller_manager.so">
<alwaysOn>true</alwaysOn>
<updateRate>1000.0</updateRate>
<interface:audio name="gazebo_ros_controller_manager_dummy_iface" />
</controller:gazebo_ros_controller_manager>
</gazebo>


On a real robot, you need provide a node that links against the pr2_controller_manager and implements the required hardware backend.

A lot of pr2 controllers are actually pretty generic, given you provide the same infrastructure as the PR2. The package robot_mechanism_controllers provides a bunch joint controllers and KDL based cartesian controllers.

If you are just working in Gazebo, using pr2 controllers is pretty strait forward. Just add the following to your urdf:

  <gazebo>
<controller:gazebo_ros_controller_manager name="gazebo_ros_controller_manager" plugin="libgazebo_ros_controller_manager.so">
<alwaysOn>true</alwaysOn>
<updateRate>1000.0</updateRate>
<interface:audio name="gazebo_ros_controller_manager_dummy_iface" />
</controller:gazebo_ros_controller_manager>
</gazebo>


On a real robot, you need provide a node that links against the pr2_controller_manager and implements the required hardware backend.

Edit: Have a look at the pr2_controllers tutorials to find out how to use them. In particular this tutorial is probably the most interesting one for you.