Implementation:ARISE Initiative Robosuite RobotiqThreeFingerGripper
| Knowledge Sources | |
|---|---|
| Domains | Robotics, Simulation, MJCF_Modeling |
| Last Updated | 2026-02-15 07:00 GMT |
Overview
RobotiqThreeFingerGripper provides the Robotiq 3-Finger Adaptive Gripper model with 11-DOF base actuation, plus 1-DOF synchronized and 4-DOF dexterous variants.
Description
This module defines three classes forming a hierarchy of Robotiq three-finger gripper models. RobotiqThreeFingerGripperBase loads the MJCF XML from grippers/robotiq_gripper_s.xml and defines 11 initial joint positions (all zeros). The collision geometry groups two fingers (f1 and f2) under left_finger with segments l0-l3, tip, and pad for each, and the third finger (f3) under right_finger with l0-l3, tip, and pad geometries.
RobotiqThreeFingerGripper provides 1-DOF synchronized control where a single scalar action drives all three fingers together. It uses the formula: current_action = clip(current_action + speed * action, -1, 1), then outputs a 4-element array by concatenating current_action * [1, 1, 1] with [-1]. The appended -1 automatically sets the scissor joint (which controls the spread between fingers 1 and 2) to its closed position. The speed is 0.2.
RobotiqThreeFingerDexterousGripper provides 4-DOF independent control, where each of the three fingers and the scissor joint can be actuated independently. It uses the formula: current_action = clip(current_action + speed * sign(action), -1, 1). This variant enables advanced grasping strategies that exploit the adaptive capabilities of the three-finger design, such as enveloping grasps and precision pinches.
Usage
Use RobotiqThreeFingerGripper (1-DOF) for standard manipulation tasks requiring robust three-finger grasping. Use RobotiqThreeFingerDexterousGripper (4-DOF) for advanced manipulation requiring independent finger and scissor joint control. The base class provides full 11-DOF raw actuator access for maximum flexibility.
Code Reference
Source Location
- Repository: ARISE_Initiative_Robosuite
- File: robosuite/models/grippers/robotiq_three_finger_gripper.py
Signature
class RobotiqThreeFingerGripperBase(GripperModel):
def __init__(self, idn=0):
class RobotiqThreeFingerGripper(RobotiqThreeFingerGripperBase):
# Inherits __init__; overrides format_action, speed, dof
class RobotiqThreeFingerDexterousGripper(RobotiqThreeFingerGripperBase):
# Inherits __init__; overrides format_action, speed, dof
Import
from robosuite.models.grippers.robotiq_three_finger_gripper import (
RobotiqThreeFingerGripper,
RobotiqThreeFingerGripperBase,
RobotiqThreeFingerDexterousGripper,
)
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| idn | int or str | No | Unique identification number or string for this gripper instance. Default: 0 |
Outputs
| Name | Type | Description |
|---|---|---|
| RobotiqThreeFingerGripperBase instance | GripperModel | Base 11-DOF three-finger gripper model |
| RobotiqThreeFingerGripper instance | GripperModel | 1-DOF synchronized three-finger gripper with auto-closed scissor (speed: 0.2) |
| RobotiqThreeFingerDexterousGripper instance | GripperModel | 4-DOF independent finger and scissor gripper (speed: 0.2) |
| init_qpos | np.array | Array of 11 zeros for default joint positions |
Usage Examples
from robosuite.models.grippers.robotiq_three_finger_gripper import (
RobotiqThreeFingerGripper,
RobotiqThreeFingerDexterousGripper,
)
import numpy as np
# 1-DOF synchronized gripper (scissor auto-closed)
gripper = RobotiqThreeFingerGripper(idn=0)
action = np.array([1.0]) # close all fingers
formatted = gripper.format_action(action) # 4-element: [close, close, close, -1]
# 4-DOF dexterous gripper (3 fingers + scissor)
dex_gripper = RobotiqThreeFingerDexterousGripper(idn=0)
action = np.array([1.0, -1.0, 0.5, 0.0]) # independent control
formatted = dex_gripper.format_action(action) # 4-element independent output
print(gripper.init_qpos) # array of 11 zeros
print(gripper.dof) # 1
print(dex_gripper.dof) # 4