Skip to content

robotiq_driver: expose effort (gCU) and object-detection (gOBJ) state interfaces #26

Description

@ebarnett3

The ros2_control hardware interface exports only position and velocity state interfaces. Neither object detection (gOBJ) nor motor current (gCU, the standard grip-force proxy) is exposed, so downstream controllers cannot do force-controlled grasping, compliance, contact detection, or even tell whether the gripper caught the part.

Carried over from PickNik: PickNikRobotics/ros2_robotiq_gripper#118.

Reproduce

ros2 launch robotiq_description robotiq_control.launch.py com_port:=/dev/ttyUSB0
# second shell
ros2 control list_hardware_interfaces

Observed:

command interfaces
    reactivate_gripper/reactivate_gripper_cmd [available] [claimed]
    reactivate_gripper/reactivate_gripper_response [available] [claimed]
    robotiq_85_left_knuckle_joint/position [available] [claimed]
    robotiq_85_left_knuckle_joint/set_gripper_max_effort [available] [unclaimed]
    robotiq_85_left_knuckle_joint/set_gripper_max_velocity [available] [unclaimed]
state interfaces
    robotiq_85_left_knuckle_joint/position
    robotiq_85_left_knuckle_joint/velocity

Analysis

Present today: position (state + command), velocity (state, derived from the position derivative rather than read from hardware), set_gripper_max_effort / set_gripper_max_velocity (commands that set rFR / rSP for the firmware motion profile — commands, not feedback), and reactivate_gripper_*.

Missing:

  • effort state interface, fed from gCU (motor current) — the standard grip-force proxy on the 2F-85.
  • Object-detection state interface, fed from gOBJ (2 bits: 0 = moving, 1 = object held while opening, 2 = object held while closing, 3 = position reached). Without it there is no way to distinguish a successful grasp from a missed one, which is a primitive any pick-and-place needs.

Both values already arrive in the status block the SDK exchanges every cycle, so this is a matter of exporting them.

Target

  • a <joint>/effort state interface fed by gCU
  • a state interface for gOBJ (naming TBD — <joint>/object_status or similar)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions