movej

abstract fun movej(q: JointPosition, a: Double = 1.0, v: Double = 0.8, t: Double = 0.0, r: Double = 0.0, cmdTimeout: Long? = null, onChange: (ArmState) -> Unit? = null, onFinished: (ArmState) -> Unit? = null): ArmState

Move to position (linear in joint-space)

Return

ArmState representing the current URScript command execution state, which is continuously updated.

Parameters

q

target joint position

a

joint acceleration of leading axis (rad/s^2)

v

joint speed of leading axis (rad/s)

t

time (s)

r

blend radius (m)

cmdTimeout

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

onChange

⚠️ Experimental: optional callback that is invoked whenever the ArmState changes during execution. Can be used to track progress or react to state transitions in real time.

onFinished

optional callback that is invoked once when the ArmState is final. The state is final when runningState assumes the following value: RunningState.END, RunningState.TIMEOUT, RunningState.CANCELED

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")

runBlocking {
    ur.connect()
    ur.isConnectedFlow.first { it }

    val state = ur.arm.movej(
        q = JointPosition(
            base = Math.toRadians(90.00),
            shoulder = Math.toRadians(-90.00),
            elbow = Math.toRadians(90.00),
            wrist1 = Math.toRadians(-90.00),
            wrist2 = Math.toRadians(-90.00),
            wrist3 = Math.toRadians(-90.00)
        ),
        a = 1.2,
        v = 0.9,
        t = 0.0,
        r = 0.0,
        cmdTimeout = 20000,
        onChange = null,
        onFinished = { state -> /* Do something */ }
    ).await() // await for the finale state
    println(state)
} 
   //sampleEnd
}

abstract fun movej(p: Pose, a: Double = 1.0, v: Double = 0.8, t: Double = 0.0, r: Double = 0.0, cmdTimeout: Long? = null, onChange: (ArmState) -> Unit? = null, onFinished: (ArmState) -> Unit? = null): ArmState

Move to position (linear in joint-space).

Return

ArmState representing the current URScript command execution state, which is continuously updated.

Parameters

p

target pose of the TCP (tool center point). Then inverse kinematics is used to calculate the corresponding joint positions.

a

joint acceleration of the leading axis (rad/s²).

v

joint speed of the leading axis (rad/s).

t

time to reach the target position (s).

r

blend radius (m).

cmdTimeout

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

onChange

⚠️ Experimental: optional callback that is invoked whenever the ArmState changes during execution. This API is experimental and may change or be removed in future versions.

onFinished

optional callback that is invoked once when the ArmState is final. The state is final when runningState assumes the following value: RunningState.END, RunningState.TIMEOUT, RunningState.CANCELED

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")

runBlocking {
    ur.connect()
    ur.isConnectedFlow.first { it }

    val state = ur.arm.movej(
        p = Pose(
            x = 0.133,
            y = -0.491,
            z = 0.487,
            rx = -2.22,
            ry = 2.22,
            rz = 0.0,
        ),
        a = 1.2,
        v = 0.9,
        t = 0.0,
        r = 0.0,
        cmdTimeout = 20000,
        onChange = null,
        onFinished = { state -> /* Do something */ }
    ).await() // await for the finale state
    println(state)
} 
   //sampleEnd
}