Skip to content

Move Gripper

SUMMARY

Move Gripper commands a parallel gripper to move to a specific finger position.

This skill is used when precise intermediate positions are required, such as adapting grip width to a known object size.

SUPPORTED GRIPPERS

Available on Robotiq and OnRobot grippers.

UNITS

position in the configured position unit (default mm). speed / force in the configured speed and force units (default percent for Robotiq; OnRobot ignores speed and uses N for force).

The Skill

python
status = gripper.move(position=42.5, speed=50.0, force=60.0, asynchronous=False)

The Code

Example: Move to a Specific Width

python
"""
Robotiq move-to-position example for the Synapse SDK.

Configures the gripper to mm units, sets the stroke range to the gripper's max,
then commands a synchronous move to 20 mm at 100% speed and 50%
force.

Usage:
    python move.py --ip <ROBOT_IP>
"""

import argparse
from loguru import logger

from telekinesis.synapse.tools.parallel_grippers import robotiq


def main(ip: str):
    """Move the gripper to 20 mm at 100% speed and 50% force."""

    # Create and connect to the gripper
    gripper = robotiq.Robotiq2F85()
    gripper.connect(ip=ip)

    try:
        # Configure the position unit and stroke range
        gripper.set_unit(parameter='position', unit='mm')
        gripper.set_position_range_mm(position_range_mm=85.0)

        # Command the move and report the resulting status and position
        status = gripper.move(
            position=20.0,
            speed=100.0,
            force=50.0,
            asynchronous=False,
        )
        logger.success(f"move() status: {status}, position: {gripper.get_current_position():.2f}")
    finally:
        gripper.disconnect()


if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Robotiq gripper move example")
    parser.add_argument("--ip", type=str, required=True, help="UR robot IP address")
    args = parser.parse_args()

    main(ip=args.ip)

The Explanation of the Code

move commands the gripper fingers to travel to the target position. The call blocks until the gripper stops when asynchronous=False.

Position. In the configured position unit (default: "mm" after connect). 0 is fully closed; the value set by set_position_range_mm is fully open.

Speed. In the configured speed unit (default: percent, 0-100). Pass -1.0 to use the session default set by set_speed.

Force. In the configured force unit (default: percent, 0-100). Pass -1.0 to use the session default set by set_force.

Return Values

StatusDescription
"MOVING"Returned when asynchronous=True
"AT_DEST"Fingers reached the target position
"STOPPED_OUTER_OBJECT"Robotiq only - stopped against an external object. OnRobot hardware cannot distinguish inner from outer grip, so this value is never returned by OnRobot.
"STOPPED_INNER_OBJECT"Robotiq: stopped by internal contact. OnRobot: any detected grasp (the hardware does not distinguish inner from outer).
"UNKNOWN_STATUS_<code>"Unexpected hardware status

How to Tune the Parameters

Robotiq 2F-85

ParameterTypeDefaultDescription
positionfloat-Target position in mm. 0 = closed, 85 = fully open.
speedfloat100.0Motion speed in percent (0-100). Pass -1.0 to use the session default.
forcefloat100.0Gripping force in percent (0-100). Pass -1.0 to use the session default.
asynchronousboolFalseIf True, returns "MOVING" immediately without waiting.

OnRobot RG2 / RG6

ParameterTypeDefaultDescription
positionfloat-Target position in mm. 0 = closed, model's stroke max = fully open.
forcefloat-Gripping force in Newtons, clamped to the model's max force.
asynchronousboolFalseIf True, returns "MOVING" immediately without waiting.

Where to Use the Skill

  • Object-specific grip width - Pre-open to just above a known object dimension before approach
  • Precise positioning - Move to an intermediate position where open and close are too coarse
  • Overlapping motion - Use asynchronous=True to move the gripper concurrently with robot motion

When Not to Use the Skill

Do not use Move Gripper when:

  • Full open or full close is all that is needed - use Tool Open or Tool Close for simplicity
  • The gripper is not connected - always call connect before issuing motion commands