grip

abstract fun grip(width: Double, force: Int, depthComp: Boolean = false, cmdTimeout: Long? = null, popupMsg: Boolean = true, onChange: (RGToolState) -> Unit? = null, onFinished: (RGToolState) -> Unit? = null): RGToolState

Move the OnRobot RG gripper to the target width.

This method represents the grip operation of the OnRobot RG2 and RG6 grippers. Although internally similar to release, it is provided as a separate command for clearer semantics and a better developer experience.

Return

RGToolState continuously updated execution state of the URScript

Parameters

width

target gripper width (mm).

force

gripping force (N).

depthComp

enable/disable depth compensation (Z-axis adjustment during closing)

cmdTimeout

maximum time (in milliseconds) to wait for the command to complete. If this time is exceeded, the command is considered failed and the RGToolState will no longer be updated.

popupMsg

enable/disable popup messages on Polyscope.

onChange

⚠️ Experimental: optional callback that is invoked whenever the RGToolState

onFinished

optional callback that is invoked once when the RGToolState is final. The state is final when runningState assumes the following value: RunningState.END, RunningState.TIMEOUT, RunningState.CANCELED changes during execution. This API is experimental and may change or be removed in future versions.

Samples

import com.wolfscowl.ur_client.UR
import com.wolfscowl.ur_client.examples.Examples.ur
import com.wolfscowl.ur_client.interfaces.state.await
import com.wolfscowl.ur_client.interfaces.state.awaitBlocking
import com.wolfscowl.ur_client.interfaces.state.awaitBlockingUntil
import com.wolfscowl.ur_client.interfaces.state.awaitUntil
import com.wolfscowl.ur_client.model.element.JointPosition
import com.wolfscowl.ur_client.model.element.Pose
import com.wolfscowl.ur_client.model.element.RunningState
import com.wolfscowl.ur_client.model.element.Vec3
import com.wolfscowl.ur_client.model.robot_state.mode.RobotMode
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.runBlocking
import kotlin.system.exitProcess

fun main() { 
   //sampleStart 
   val ur = UR("192.168.2.1")
val rg = ur.attachToolOnRobotRG(host = "192.168.2.2", toolIndex = 0)

runBlocking {
    ur.connect()
    ur.isConnectedFlow.first { it }
    val state = rg.grip(
        width = 0.0,
        force = 100,
        depthComp = true,
        cmdTimeout = 10000,
        popupMsg = false,
        onChange = null,
        onFinished = { state -> /* do something */}
    ).await() // await for the finale state
    println(state)
} 
   //sampleEnd
}