Only released in EOL distros:
bosch_manipulation_utils: simple_robot_control
Package Summary
 No API documentation 
Simple C++ and python interface to move the arms, head, base, torso and grippers of a PR2 robot.
- Author: Christian Bersch, Sebastian Haug
- License: BSD
- Repository: bosch-ros-pkg
- Source: svn http://svn.code.sf.net/p/bosch-ros-pkg/code/tags/stacks/bosch_manipulation_utils/bosch_manipulation_utils-0.1.0
bosch_manipulation_utils: pr2_interactive_segmentation | simple_robot_control
Package Summary
 Documented 
Simple C++ and python interface to move the arms, head, base, torso and grippers of a PR2 robot.
- Author: Christian Bersch, Sebastian Haug (Maintained by Benjamin Pitzer)
- License: BSD
- Source: svn http://svn.code.sf.net/p/bosch-ros-pkg/code/branches/electric/stacks/bosch_manipulation_utils
Package Summary
 Released 
 No API documentation 
The simple_robot_control package
- Maintainer: lil1pal <lil1pal AT todo DOT todo>
- Author:
- License: TODO
Contents
Documentation
The simple_robot_control library provides a simple interface to move the PR2s arms, grippers, base, head and torso. C++ and Python API available. Arm, Gripper, Head, Base and Torso objects can be instantiated and calling their functions will move the robot. For moving the arms in cartesian space the arm planners need to be launched by calling:
launch/simple_robot_control_without_collision_checking.launch
or to enable planning with obstacle avoidance
launch/simple_robot_control.launch
C++ interface:
#include <ros/ros.h>
#include <simple_robot_control/robot_control.h>
int main(int argc, char** argv){
        ros::init(argc, argv, "robot_control_test_app");
        ros::NodeHandle nh;
        //Create robot controller interface
        simple_robot_control::Robot robot;
        //look straight
        robot.head.lookat("torso_lift_link", tf::Vector3(0.1, 0.0, 0.0));
        //do stuff with arms
        robot.left_arm.tuck();
        robot.right_arm.stretch();
        //specify joint angles for two waypoints
        double tuck_pos_right[] 
           = { -0.4,0.0,0.0,-2.25,0.0,0.0,0.0,
               -0.01, 1.35, -1.92, -1.68, 1.35, -0.18,0.31};
        std::vector<double> tuck_pos_vec(tuck_pos_right, tuck_pos_right+14);
        robot.right_arm.goToJointPos(tuck_pos_vec);
        robot.right_arm.stretch();
        //grab position from above
        robot.right_arm.moveGripperToPosition(tf::Vector3(0.6,-0.1, 0.0),    
                 "torso_lift_link", simple_robot_control::Arm::FROM_ABOVE);
        
        //grab position frontal
        robot.right_arm.moveGripperToPosition(tf::Vector3(0.8,-0.1, 0.1), 
                    "torso_lift_link", simple_robot_control::Arm::FRONTAL);
        //specify grab pose with postion and orientation as StampedTransform
        tf::StampedTransform tf_l (tf::Transform(tf::Quaternion(0,0,0,1), 
           tf::Vector3(0.8,0.1,0.0)),
           ros::Time::now(),"torso_lift_link","doesnt_matter");
        robot.left_arm.moveGrippertoPose(tf_l);
        //look at left gripper
        robot.head.lookat("l_gripper_tool_frame");
        //drive 0.5m forward
        robot.base.driveForward(0.5);
        //raise torso to 10cm above lowest position
        robot.torso.move(0.1);
        return 0;
}