Note: This tutorial assumes you already understand the PR2 diagnostics system.
(!) Please ask about problems and questions regarding this tutorial on Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

PR2 safety system

Description: This tutorial teaches you about the PR2 safety system.

Tutorial Level: BEGINNER

Next Tutorial: Understanding the PR2 logger


  1. Safety limits

Safety limits

Position limits

To get a good feel of the position limits, you want to turn off on of the controllers that are controlling the arms. The dashboard will give you a list of controllers in the "Realtime Controllers" tab:

  • system?action=AttachFile&do=get&target=controllers.png

You can also get access to the same list on the command line:

 $ rosrun pr2_controller_manager pr2_controller_manager list

  base_controller ( running )
  base_odometry ( running )
  head_camera_trigger ( running )
  head_traj_controller ( running )
  l_arm_controller ( running )
  l_forearm_cam_trigger ( running )
  l_gripper_controller ( running )
  laser_tilt_controller ( running )
  projector_controller ( running )
  projector_trigger ( running )
  prosilica_inhibit_projector_controller ( running )
  r_arm_controller ( running )
  r_forearm_cam_trigger ( running )
  r_gripper_controller ( running )
  torso_controller ( running )

To stop the right arm controller, type:

 $ rosrun pr2_controller_manager pr2_controller_manager stop r_arm_controller

Now you'll see that the right arm is not controlled any more. Move it manually towards the end of its reach. You'll feel a "spring" close to its joint limits. That spring force is created by the software safety controllers, that prevent the arm from hitting the hardware joint limits.

To start the right arm controller up again, use:

 $ rosrun pr2_controller_manager pr2_controller_manager start r_arm_controller

Wiki: pr2_robot/Tutorials/Safety system (last edited 2010-12-03 01:44:41 by MeloneeWise)