Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <ros/ros.h>
00035 #include <algorithm>
00036 #include <arm_navigation_msgs/CollisionOperation.h>
00037 #include <arm_navigation_msgs/SimplePoseConstraint.h>
00038 #include <arm_navigation_msgs/convert_messages.h>
00039 #include <arm_navigation_msgs/MoveArmGoal.h>
00040
00041 namespace arm_navigation_msgs
00042 {
00043
00048 void addGoalConstraintToMoveArmGoal(const arm_navigation_msgs::SimplePoseConstraint &pose_constraint, arm_navigation_msgs::MoveArmGoal &move_arm_goal)
00049 {
00050 arm_navigation_msgs::PositionConstraint position_constraint;
00051 arm_navigation_msgs::OrientationConstraint orientation_constraint;
00052 poseConstraintToPositionOrientationConstraints(pose_constraint,position_constraint,orientation_constraint);
00053 move_arm_goal.motion_plan_request.goal_constraints.position_constraints.push_back(position_constraint);
00054 move_arm_goal.motion_plan_request.goal_constraints.orientation_constraints.push_back(orientation_constraint);
00055 }
00056
00064 inline void generateDisableAllowedCollisionsWithExclusions(const std::vector<std::string>& all_names,
00065 const std::vector<std::string>& exclude_names,
00066 std::vector<arm_navigation_msgs::CollisionOperation>& collision_operations)
00067 {
00068 for(std::vector<std::string>::const_iterator it = all_names.begin();
00069 it != all_names.end();
00070 it++) {
00071 if(std::find(exclude_names.begin(), exclude_names.end(), *it) == exclude_names.end()) {
00072 arm_navigation_msgs::CollisionOperation coll;
00073 coll.object1 = *it;
00074 coll.object2 = coll.COLLISION_SET_OBJECTS;
00075 coll.operation = coll.DISABLE;
00076 collision_operations.insert(collision_operations.end(),coll);
00077 coll.object2 = coll.COLLISION_SET_ATTACHED_OBJECTS;
00078 collision_operations.insert(collision_operations.end(),coll);
00079 for(std::vector<std::string>::const_iterator it2 = all_names.begin();
00080 it2 != all_names.end();
00081 it2++) {
00082 if(*it != *it2 && std::find(exclude_names.begin(), exclude_names.end(), *it2) == exclude_names.end()) {
00083 coll.object1 = *it;
00084 coll.object2 = *it2;
00085 collision_operations.insert(collision_operations.end(),coll);
00086 }
00087 }
00088 }
00089 }
00090 }
00091 }