object_manipulation_msgs/Place Action

File: object_manipulation_msgs/Place.action

Action Definition

# An action for placing an object

# which arm to be used for grasping
string arm_name

# a list of possible locations for the gripper when placing
# note that these refer to where the *gripper* should go when the object is placed
# it is the job of the caller to make sure that these are set to that the *object*
# ends up in a desired location
geometry_msgs/PoseStamped[] place_locations

# the grasp that has been executed on this object
# (contains the grasp_pose referred to above)
manipulation_msgs/Grasp grasp

# how far the retreat should ideally be away from the place location
float32 desired_retreat_distance

# the min distance between the retreat and the place location that must actually be feasible 
# for the place not to be rejected
float32 min_retreat_distance

# how the place location should be approached
# the frame_id that this lift is specified in MUST be either the robot_frame 
# or the gripper_frame specified in your hand description file
GripperTranslation approach

# the name that the target object has in the collision map
# can be left empty if no name is available
string collision_object_name

# the name that the support surface (e.g. table) has in the collision map
# can be left empty if no name is available
string collision_support_surface_name

# whether collisions between the gripper and the support surface should be acceptable
# during move from pre-place to place and during retreat. Collisions when moving to the
# pre-place location are still not allowed even if this is set to true.
bool allow_gripper_support_collision

# whether reactive placing based on tactile sensors should be used
bool use_reactive_place

# how much the object should be padded by when deciding if the grasp
# location is freasible or not
float64 place_padding

# set this to true if you only want to query the manipulation pipeline as to what 
# place locations it thinks are feasible, without actually executing them. If this is set to 
# true, the atempted_location_results field of the result will be populated, but no arm 
# movement will be attempted
bool only_perform_feasibility_test

# OPTIONAL (These will not have to be filled out most of the time)
# constraints to be imposed on every point in the motion of the arm
arm_navigation_msgs/Constraints path_constraints

# OPTIONAL (These will not have to be filled out most of the time)
# additional collision operations to be used for every arm movement performed
# during placing. Note that these will be added on top of (and thus overide) other 
# collision operations that the grasping pipeline deems necessary. Should be used
# with care and only if special behaviors are desired.
arm_navigation_msgs/OrderedCollisionOperations additional_collision_operations

# OPTIONAL (These will not have to be filled out most of the time)
# additional link paddings to be used for every arm movement performed
# during placing. Note that these will be added on top of (and thus overide) other 
# link paddings that the grasping pipeline deems necessary. Should be used
# with care and only if special behaviors are desired.
arm_navigation_msgs/LinkPadding[] additional_link_padding

---

# The result of the pickup attempt
ManipulationResult manipulation_result

# The successful place location, if any
geometry_msgs/PoseStamped place_location

# the list of attempted locations, in the order in which they were attempted
# the successful one should be the last one in this list
geometry_msgs/PoseStamped[] attempted_locations

# the outcomes of the attempted locations, in the same order as attempted_locations
PlaceLocationResult[] attempted_location_results

---

# The number of the place location currently being attempted
int32 current_location

# The total number of locations that will be attempted
int32 total_locations