Why MoveIt pick pipeline
This is a general question regarding MoveIt pick and place pipeline.
Why this pipeline? It uses moveit_msgs/Grasp that specifies pre_grasp_approach (moveit_msgs/GripperTranslation), grasp_pose (geometry_msgs/PoseStamped), post_grasp_retreat (moveit_msgs/GripperTranslation) etc.
How is it different from specifying a pre_grasp_pose (geometry_msgs/PoseStamped), grasp_pose (geometry_msgs/PoseStamped), and post_grasp_pose (geometry_msgs/PoseStamped) and using moveit::planning_interface::MoveGroupInterface to move the gripper to pre_grasp_pose, than grasp_pose, calling a close gripper action and then move to the post_grasp_pose?
One problem that stems from the pick pipeline or this function MoveItErrorCode pick (const std::string &object, const std::vector< moveit_msgs::Grasp > &grasps, bool plan_only=false), is that we loose some control over the picking operation.
Line 745 indicates that the MoveItErrorCode pick function returns is the same as pick_action_client_ result. But in my case, I am happy when the gripper controller is still running, mentioned in my earlier post. I am looking to add a gazebo grasp fix plugin that will attach the object to the gripper, so the controller running is not really a problem since the object is going to be fixed on the gripper.
Thanks in advance.