Skip to content

Gripper Get Current Position

SUMMARY

Get Current Position reads the current finger separation of the gripper in the configured position unit (default: millimeters).

UNITS

Returns finger separation in the configured position unit (default mm after connect).

The Skill

python
position = gripper.get_current_position()

The Code

Safety first!

A real robot will faithfully do whatever you ask of it - so please take a moment to clear the workspace, keep an E-Stop within reach, and be ready to disconnect.

Operating real hardware is at your own risk.

python
"""
Demonstrates reading the current position of a parallel gripper.

Supports OnRobot and Robotiq grippers, and Isaac Sim.

Usage:
    python get_current_position.py --ip <GRIPPER_IP>
    python get_current_position.py --prim_path <PRIM_PATH>

Note:
    Experimental gripper support for Isaac Sim:  Robotiq 2F85 (USD-based simulation only); Schunk EGP and
    PZN+ are.
"""

import argparse
from loguru import logger

from telekinesis.synapse.tools.parallel_grippers import onrobot


def main(ip: str | None,
         protocol: str,
         prim_path: str | None) -> None:
    """Reads the current position of an OnRobot gripper in the configured unit."""

    #===================== Create Gripper ======================================
    gripper = onrobot.OnRobotRG6()

    try:
        #===================== Connect Gripper =================================
        if prim_path:
            gripper.connect(simulation_prim_path=prim_path)
        else:
            gripper.connect(ip=ip, protocol=protocol)

        # ==================== Run Skill ====================================
        logger.success(f"Current position: {gripper.get_current_position()}")
    except (ConnectionError, OSError) as e:
        logger.error(f"Error occurred: {e}")
    finally:
        gripper.disconnect()


if __name__ == "__main__":
    p = argparse.ArgumentParser(description="OnRobot gripper get current position")
    p.add_argument("--protocol",
                   choices=["MODBUS_TCP"],
                   default="MODBUS_TCP")
    p.add_argument("--ip", default=None, help="IP for OnRobot Gripper")
    p.add_argument("--prim_path", type=str, default=None,
                   help='Isaac Sim gripper prim path, e.g. "/World/onrobot_rg6"')
    args = p.parse_args()

    main(ip=args.ip,
         protocol=args.protocol,
         prim_path=args.prim_path)

Running the Example

bash
python get_current_position.py --ip 192.168.1.100
bash
python get_current_position.py --prim_path /World/onrobot_rg6

For all options:

bash
python get_current_position.py --help

Parameter Configuration

This skill takes no input parameters.

Returns

TypeDescription
floatCurrent finger separation in the configured position unit.

Raises

ExceptionCondition
RuntimeErrorThe gripper is not connected

How to Tune the Parameters

Compare the returned position against a threshold rather than an exact value - hardware-level variation means the reading will vary slightly between calls.

Where to Use the Skill

  • Grasp verification - Confirm an object is held before transporting
  • State inspection - Read gripper position at any point in a workflow for logging or branching logic
  • Closed-loop control - Combine with move to implement position-feedback loops

When Not to Use the Skill

Do not use Get Current Position when:

  • The gripper is not connected - always call connect before issuing gripper commands
  • High-frequency polling is required - repeated queries add latency; use asynchronous motion and a single readback instead