Open gripper using GripperCommand in pick and place pipeline
I'm looking to use a 6 DOF robotic arm and an attached 2-finger gripper to perform a pick and place task. So far everything works except for the gripping the object using the end effector. I'm using the Python bindings of moveit_python
from here.
I've understood that I need to fill the whole Grasp
message, including the end effector posture, and that the pipeline is supposed to take care of closing/opening the gripper. Except that it's not quite as flexible as I would like. The gripper I'm using is capable of reporting if the gripping was actually successful, so rather than counting on a probable success I would like to make sure the gripping was successful before proceeding with the placing.
The low-level controllers MoveIt tutorial page mentions the optional GripperCommand
action. That happens to be exactly what I want: provide the proper action command, wait for the feedback and result of the gripping which I would provide from a custom action server.
I set up the custom action server, I see that the move_group
publishes the GripperCommandActionGoal
and my custom action server node is subscribing to it. I can even rostopic pub
a gripper open/close message from the command line and that works too.
Now, the pick and place pipeline does not call the action during the picking and placing part (nothing is published). I'm not sure if this is because the pick and place pipeline has not been configured to do that or that is not actually how this is supposed to work. The tutorial does not explain the use cases of this optional gripper action.
I could also go the "subscribe to the joint states topic" way, but then I wouldn't have the feedback that an action message provides.
Could anybody explain how this low-level controller is supposed to work, the MoveIt tutorial is not very clear on that.
System: ROS Melodic, Ubuntu 18.04