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;
}