Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:ARISE Initiative Robosuite JacoThreeFingerGripper

From Leeroopedia
Knowledge Sources
Domains Robotics, Simulation, MJCF_Modeling
Last Updated 2026-02-15 07:00 GMT

Overview

JacoThreeFingerGripper provides the three-fingered gripper model for Kinova's Jaco robot arm, with variants for 1-DOF synchronized and 3-DOF dexterous control.

Description

This module defines three classes forming a hierarchy of Jaco gripper models. JacoThreeFingerGripperBase serves as the base class, loading the MJCF XML from grippers/jaco_three_finger_gripper.xml and defining 6 initial joint positions ([0.5, 0, 0.5, 0, 0.5, 0]) that set the default resting pose. The base class passes actions through without modification and maps collision geometries for an index finger, pinky finger, and thumb across proximal, distal, tip, and pad segments.

JacoThreeFingerGripper extends the base to provide 1-DOF synchronized control, where a single scalar action is mapped to all three fingers simultaneously. It uses a speed-modulated clipping approach: current_action = clip(current_action - speed * sign(action), -1, 1), then formats the output to 3 identical values via current_action * [1, 1, 1]. The gripper speed is set to 0.01, providing slow, precise control.

JacoThreeFingerDexterousGripper provides 3-DOF independent control, where each finger can be actuated separately. It uses the same speed-modulated clipping approach but returns the 3-element action vector directly, allowing differential finger positioning for complex grasping strategies.

Usage

Use JacoThreeFingerGripper for standard manipulation tasks with the Kinova Jaco arm requiring simple open/close control. Use JacoThreeFingerDexterousGripper for tasks requiring independent finger control, such as precision grasping of irregularly shaped objects. The base class JacoThreeFingerGripperBase provides full 6-DOF raw actuator access.

Code Reference

Source Location

Signature

class JacoThreeFingerGripperBase(GripperModel):
    def __init__(self, idn=0):

class JacoThreeFingerGripper(JacoThreeFingerGripperBase):
    # Inherits __init__; overrides format_action, speed, dof

class JacoThreeFingerDexterousGripper(JacoThreeFingerGripperBase):
    # Inherits __init__; overrides format_action, speed, dof

Import

from robosuite.models.grippers.jaco_three_finger_gripper import (
    JacoThreeFingerGripper,
    JacoThreeFingerGripperBase,
    JacoThreeFingerDexterousGripper,
)

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
JacoThreeFingerGripperBase instance GripperModel Base 6-DOF three-finger gripper model
JacoThreeFingerGripper instance GripperModel 1-DOF synchronized three-finger gripper (speed: 0.01)
JacoThreeFingerDexterousGripper instance GripperModel 3-DOF independent finger gripper (speed: 0.01)
init_qpos np.array [0.5, 0, 0.5, 0, 0.5, 0] default joint positions

Usage Examples

from robosuite.models.grippers.jaco_three_finger_gripper import (
    JacoThreeFingerGripper,
    JacoThreeFingerDexterousGripper,
)
import numpy as np

# 1-DOF synchronized gripper
gripper = JacoThreeFingerGripper(idn=0)
action = np.array([1.0])  # close
formatted = gripper.format_action(action)  # 3-element array, all fingers move together

# 3-DOF dexterous gripper
dex_gripper = JacoThreeFingerDexterousGripper(idn=0)
action = np.array([1.0, -1.0, 0.5])  # independent finger control
formatted = dex_gripper.format_action(action)  # 3-element array with independent values

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment