Gripper Set Unit
SUMMARY
Set Unit configures the measurement unit used for position, speed, and force parameters in subsequent gripper commands.
Robotiq automatically sets default units after connect ("mm" for position, "percent" for speed and force). Call set_unit only when a different unit is needed.
The Skill
python
gripper.set_unit("position", "mm")
gripper.set_unit("speed", "percent")
gripper.set_unit("force", "percent")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 setting the position unit of a parallel gripper.
Supports OnRobot and Robotiq grippers, and Isaac Sim.
Usage:
python set_unit.py --ip <GRIPPER_IP>
python set_unit.py --prim_path <PRIM_PATH>
Note:
OnRobot has no multi-unit backend: only parameter="position" with
unit="mm", and parameter="force" with unit="N", are accepted. set_unit()
is provided for signature parity with the Robotiq wrapper.
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:
"""Validates the position unit of an OnRobot gripper as millimeters."""
#===================== 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 ====================================
gripper.set_unit(parameter="position", unit="mm")
logger.success("Position unit confirmed as 'mm'.")
except (ConnectionError, OSError) as e:
logger.error(f"Error occurred: {e}")
finally:
gripper.disconnect()
if __name__ == "__main__":
p = argparse.ArgumentParser(description="OnRobot gripper set unit")
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 set_unit.py --ip 192.168.1.100bash
python set_unit.py --prim_path /World/onrobot_rg6For all options:
bash
python set_unit.py --helpParameter Configuration
Robotiq 2F-85
| Parameter | Type | Default | Description |
|---|---|---|---|
parameter | str | required | The parameter to configure: "position", "speed", or "force". |
unit | str | required | Position: "mm", "device" (0-255), "normalized" (0.0-1.0), "percent" (0-100). Speed / force: "device", "normalized", "percent". |
OnRobot RG2 / RG6
| Parameter | Type | Default | Description |
|---|---|---|---|
parameter | str | required | "position" or "force" only. "speed" is not accepted. |
unit | str | required | Position: "mm" only. Force: "N" only. |
Returns
This skill returns nothing (None).
Raises
Robotiq 2F-85
| Exception | Condition |
|---|---|
ValueError | parameter is not "position", "speed", or "force"; or unit is not supported for the given parameter |
RuntimeError | The gripper is not connected |
OnRobot RG2 / RG6
| Exception | Condition |
|---|---|
TypeError | parameter or unit is not a string |
ValueError | The (parameter, unit) combination is not supported |
How to Tune the Parameters
Prefer "mm" for position in production scripts - physical units are self-documenting and easy to validate against the gripper's datasheet.
Where to Use the Skill
- Session initialization - Call once after
connectwhen a non-default unit is needed - Unit switching - Re-call mid-session to switch between units for a specific subroutine
When Not to Use the Skill
Do not call set_unit when:
- The default units are sufficient - after
connect, position is already"mm"and speed/force are already"percent"