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
status = gripper.move(position=42.5, speed=50.0, force=60.0, asynchronous=False)The Code
Example: Move to a Specific Width
"""
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
| Status | Description |
|---|---|
"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
| Parameter | Type | Default | Description |
|---|---|---|---|
position | float | - | Target position in mm. 0 = closed, 85 = fully open. |
speed | float | 100.0 | Motion speed in percent (0-100). Pass -1.0 to use the session default. |
force | float | 100.0 | Gripping force in percent (0-100). Pass -1.0 to use the session default. |
asynchronous | bool | False | If True, returns "MOVING" immediately without waiting. |
OnRobot RG2 / RG6
| Parameter | Type | Default | Description |
|---|---|---|---|
position | float | - | Target position in mm. 0 = closed, model's stroke max = fully open. |
force | float | - | Gripping force in Newtons, clamped to the model's max force. |
asynchronous | bool | False | If 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
openandcloseare too coarse - Overlapping motion - Use
asynchronous=Trueto 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
connectbefore issuing motion commands

