Resolved-motion rate control converts a required tool-configuration velocity into joint velocities.

flowchart LR
    X["Required tool path<br/>x(t)"] --> XD["Differentiate<br/>x-dot(t)"] --> R{"Is V(q) full rank?"}
    R -- "NO" --> S["Singularity<br/>replan the path"]
    R -- "YES" --> QD["Apply V-plus(q)<br/>find q-dot(t)"]
    QD --> INT["Integrate q-dot(t)"] --> Q["Joint trajectory<br/>q(t)"]

Start with the differential kinematics relation:

For a differentiable trajectory inside the work envelope, the trajectory must stay away from workspace singularities.

Case:

When has full column rank:

The joint-space trajectory is obtained from the nonlinear differential equation:

with the initial condition:

The initial condition uses Inverse Kinematics to make the joint trajectory and tool trajectory start at the same physical configuration.

Case:

When is square and nonsingular:

This operation resolves the tool motion into its joint-space components.

Four-axis SCARA example

Write the nonconstant components of the SCARA Jacobian as:

where:

Define:

The pseudoinverse is well-defined when :

The rate-control equations are:

The SCARA approach vector is always vertical, so a valid tool trajectory must satisfy:

Important

As the robot approaches a singularity, becomes small. The required values of and can then become very large.

See Tool-configuration Jacobian Matrix and Generalised Inverses.