The gripper's automatic release is the one part of the command block with no ROS path at all. rATR starts an emergency open or close that runs on the gripper's own power reserve and ignores the normal motion command; rARD picks the direction. The driver never sets either bit, and nothing in the description, the controllers or the launch exposes them.
This is a missing command rather than missing visibility, which is why it is split out of #31 rather than closed with it. The status side of the release is reachable: gFLT reports AutomaticReleaseInProgress and AutomaticReleaseComplete, the driver exports that code as a state interface (#79), and #74 carries it onto a topic. A consumer can see a release happening; it cannot ask for one.
Low priority, and deliberately so
We do not expect a ROS application to trigger an emergency release. It is a safety mechanism an operator invokes, usually through the Robotiq User Interface or a hardwired circuit, when the normal control path is the thing that has failed. A ROS node asking for one is a node that still works, which is not the case the feature is for. Adding it now would mean shipping a control surface with a real hazard behind it and no user asking for it.
So this stays open and unimplemented until someone asks for it. If you have a use case, comment here with what it is: that is what decides the shape of the interface, and there are two plausible ones.
If it is implemented
The two candidate shapes, so the discussion starts somewhere:
- A service on the driver's GPIO, like the existing
reactivate_gripper Trigger. It fits the pattern, the driver already owns a GPIO block, and a release direction becomes a field in the request.
- Command interfaces,
rATR and rARD written each cycle like the other command registers. This is the literal reading of "expose the command block", and it is worse: a controller would have to claim them, and a stuck value would hold the gripper in release.
Either way the SDK side needs checking first: GripperCommand carries the action-request byte, but nothing in the public API sets the release bits or waits out the sequence.
The gripper's automatic release is the one part of the command block with no ROS path at all.
rATRstarts an emergency open or close that runs on the gripper's own power reserve and ignores the normal motion command;rARDpicks the direction. The driver never sets either bit, and nothing in the description, the controllers or the launch exposes them.This is a missing command rather than missing visibility, which is why it is split out of #31 rather than closed with it. The status side of the release is reachable:
gFLTreportsAutomaticReleaseInProgressandAutomaticReleaseComplete, the driver exports that code as a state interface (#79), and #74 carries it onto a topic. A consumer can see a release happening; it cannot ask for one.Low priority, and deliberately so
We do not expect a ROS application to trigger an emergency release. It is a safety mechanism an operator invokes, usually through the Robotiq User Interface or a hardwired circuit, when the normal control path is the thing that has failed. A ROS node asking for one is a node that still works, which is not the case the feature is for. Adding it now would mean shipping a control surface with a real hazard behind it and no user asking for it.
So this stays open and unimplemented until someone asks for it. If you have a use case, comment here with what it is: that is what decides the shape of the interface, and there are two plausible ones.
If it is implemented
The two candidate shapes, so the discussion starts somewhere:
reactivate_gripperTrigger. It fits the pattern, the driver already owns a GPIO block, and a release direction becomes a field in the request.rATRandrARDwritten each cycle like the other command registers. This is the literal reading of "expose the command block", and it is worse: a controller would have to claim them, and a stuck value would hold the gripper in release.Either way the SDK side needs checking first:
GripperCommandcarries the action-request byte, but nothing in the public API sets the release bits or waits out the sequence.