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