Main Content

Joint-Space Motion Model

The joint-space motion model characterizes the closed-loop motion of a manipulator under joint-space control, where the control action is defined in the joint configuration space. Motion models are used as low-fidelity plant models of robots under closed-loop position control. This topic covers the variables and equations for computing the behavior of the joint-space position, velocity, and accelerations relative to reference inputs, as used in the jointSpaceMotionModel object. For task-space motion models, see the Plan and Execute Task- and Joint-Space Trajectories Using KINOVA Gen3 Manipulator object.

This topic covers these types of joint-space control:

For an example that covers the difference between task-space and joint-space control, see Plan and Execute Task- and Joint-Space Trajectories Using KINOVA Gen3 Manipulator.

State and Controls

The joint-space motion model state consists of these values:

  • q — Robot joint configuration, as a vector of joint positions. Specified in rad for revolute joints and m for prismatic joints.

  • q˙ — Vector of joint velocities in rads-1 for revolute joints and ms-1 for prismatic joints

  • q¨ — Vector of joint accelerations in rads-2 for revolute joints or ms-2 for prismatic joints

The joint-space motion model is used when you need a low-fidelity model of your system under closed-loop control and the inputs are specified as joint configuration, velocity, and acceleration. The motion model includes three ways to model its overall behavior:

  • Computed Torque Control — The rigid-body dynamics are modeled using the standard equations of motion, but compensating for the full-body dynamics and assigning error dynamics. This is a higher-fidelity version of independent joint motion control.

  • PD Control — The rigid-body dynamics are modeled using the standard equations of motion with a joint torque input given by proportional-derivative (PD) control. This model represents a controller that does not compensate tightly for the overall effects of rigid-body motion.

  • Independent Joint Motion — Each joint is modeled independently as a closed-loop second-order system. This model is a lower fidelity version of computed torque control motion model, and may be considered a best-case scenario for how closed-loop motion may behave since the dynamics are simplified and directly prescribed.

To set these different motion types, use the MotionType property of the jointSpaceMotionModel object. These motion types are not exhaustive, but they do provide a set of options to use when approximating the closed-loop behavior of your system. For details and suggestions on when to use which model, see the sections below.

Equations of Motion

In this section, the equations of motion for each model are introduced, in order of decreasing complexity.

Computed Torque Control

With computed torque control, the motion model uses standard rigid body dynamics, but the generalized force input is given by a control law that compensates for the rigid body dynamics and instead assigns a second-order error dynamics response.

  • Inputs — This model accepts qref,q˙ref,q¨ref as the desired reference joint configuration, velocities, and accelerations as vectors. The user may also optional provide the external force Fext, specified in Newtons.

  • Outputs — The model outputs q,q˙,q¨ as the joint configuration, velocities, and accelerations as vectors. In the MATLAB version of the model, only accelerations are returned, and the user must choose an integrator or ODE solver to return the other states.

  • Complexity — This is high complexity. The motion model uses full rigid body dynamics with optional external forces, the controller is modeled as part of the closed loop system, and the controller includes dynamic compensation terms.

  • When to apply — Use when the closed-loop system being simulated has approximable error dynamics, or when it uses a controller that treats the robot as a multi-body system, and external forces may be present

The resultant closed-loop system aims to achieve the following second error behavior for the i-th joint:

q¨i=-ωn2qi-2ζωnq˙i

qi=qi-qi.ref

These parameters characterize the desired response defined for each joint:

  • ωn — Natural frequency, specified in Hz (s-1)

  • ζ — The damping ratio, which is unitless

As seen in the diagram, the complete system consists of the standard rigid-body Robot Dynamics with a control law that enforces closed error dynamics via the generalized force input Q:

ddt[qq˙]=fdyn(q,q˙,Q,Fext)

Q=gCTC(q,q˙,q¨ref,ωn,ζ)=M(q)aq+C(q,q˙)q˙+G(q)

aq=q¨ref-[ωn2]diagq-[2ζωn]diagq˙

q=q-qref

where,

  • M(q) — is a joint-space mass matrix based on the current robot configuration Calculate this matrix by using the massMatrix object function.

  • C(q,q˙) — is the coriolis terms, which are multiplied by q˙ to calculate the velocity product. Calculate the velocity product by using by the velocityProduct object function.

  • G(q) — is the gravity torques and forces required for all joints to maintain their positions in the specified gravity Gravity. Calculate the gravity torque by using the gravityTorque object function.

The control input relies on these user-defined parameters:

  • [-ωn2]diag — Diagonal matrix, where the (i,i)-th element corresponds to the i-th element of the n-element vector of natural frequencies in the NaturalFrequency property of the jointSpaceMotionModel object are in Hz (s-1).

  • [-2ζωn2]diag — Diagonal matrix, where the (i,i)-th element corresponds to the i-th element of the product of the squared natural frequencies vector ωn and the i-th element of the damping ratios vector ζ, specified in the DampingRatio property of the jointSpaceMotionModel object.

Because the dynamics are compensated, in the absence of external force inputs large acceleration/deceleration, the error dynamics should be achieved. In the absence of external forces, the independent joint motion type provides a simpler way of achieving this result.

The values of ωn and ζ may be set directly, or they may be provided using the the updateErrorDynamicsFromStep method, which computes values for ωn and ζ based on desired unit step response (defined using it's transient behavior characteristics).

Proportional-Derivative (PD) Control

With PD control, the robot models behavior according to standard rigid body dynamics, but with the generalized force input Q given by a control law that applies PD control based on the joint error, as well as gravity compensation.

  • Inputs — This model accepts qref,q˙ref as the desired reference joint configuration, velocities, and accelerations as vectors. The user may also optional provide the external force Fext, specified in Newtons.

  • Outputs — The model outputs q,q˙,q¨ as the joint configuration, velocities, and accelerations. In the MATLAB version of the model, only accelerations are returned, and the user must choose an integrator or ODE solver to return the other states.

  • Complexity — This is medium complexity. The motion model uses full rigid body dynamics with optional external forces and the controller is modeled as part of the closed loop system, but the controller is relatively simple.

  • When to apply — Use when the closed-loop system being simulated uses a controller that treats joints as independent systems, or when a PD style controller is used, and external forces may be present.

As with computed torque control, this system behavior uses the standard rigid-body Robot Dynamics, but uses the PD control law define the generalized force input Q:

ddt[qq˙]=fdyn(q,q˙,τ,Fext)

Q=gPD(q,q˙,KP,KD)=-KP(q)-KD(q˙)+G(q)

q=q-qref

where

  • G(q) — is the gravity torques and forces required for all joints to maintain their positions in the specified gravity Gravity. Calculate the gravity torque by using the gravityTorque object function.

The control input relies on these user-defined parameters:

  • KP — Proportional gain, specified as an N-by-N matrix, where N is the number of movable joints of the manipulator

  • KD — Derivative gain, specified as an N-by-N matrix

Independent Joint Motion

When this system is modeled with independent joint motion, instead of modeling the closed loop system as standard rigid body dynamics plus a control input, each joint is instead modeled as a second-order system that already has the desired error behavior:

  • Inputs — This model accepts qref,q˙ref as the desired reference joint configuration, velocities, and accelerations as vectors. There is no external force input.

  • Outputs — The model outputs q,q˙,q¨ as the joint configuration, velocities, and accelerations. In the MATLAB version of the model, only accelerations are returned, and the user must choose an integrator or ODE solver to return the other states.

  • Complexity — This is low complexity. The motion model simply prescribes the error behavior that a position controller could aim to achieve.

  • When to apply — Use when the system has approximable error dynamics and there are no external force inputs required.

The system models the following closed-loop second order behavior for the ith joint:

ddt[qq˙]=ferr(q,q˙,ζ,ωn)=[q˙-ωn2qi-2ζωnq˙i]

qi=qi-qi.ref

These parameters characterize the desired response defined for each joint:

  • ωn — the natural frequency specified in units of s-1

  • ζ — t the damping ratio, which is unitless

Or as:

The complete system is therefore modeled as:

ddt[qq˙]=fIJM(qref,q˙ref,ζ,ωn)=[0I[-ωn2]diag[-2ζωn]diag][qq˙]+[0I[ωn2]diag[2ζωn]diag][qrefq˙ref]

The model relies on these user-defined parameters:

  • [-ωn2]diag — Diagonal matrix, where the (i,i)-th element corresponds to the i-th element of the n-element vector of natural frequencies in the NaturalFrequency property of the jointSpaceMotionModel object are in Hz (s-1).

  • [-2ζωn2]diag — Diagonal matrix, where the (i,i)-th element corresponds to the i-th element of the product of the squared natural frequencies vector ωn and the i-th element of the damping ratios vector ζ, specified in the DampingRatio property of the jointSpaceMotionModel object.

The values of ωn and ζ may be set directly, or they may be provided using the the updateErrorDynamicsFromStep method, which computes values for ωn and ζ based on desired unit step response (defined using it's transient behavior characteristics).

The Independent Joint Motion model represents a closed loop system under idealized behavior. In the absence of external forces, the motion model using computed torque control should produce an equivalent output.