Joint types and operation

Compared to another object, a joint has two reference frames (visible only if the joint is selected). The first one is the regular reference frame that is fixed and that other objects also have. The second reference frame is not fixed, and will move relative to the first reference frame depending on the joint position (or joint value) that defines its configuration. 4 types of joints are supported:

[Revolute joint, prismatic joint, screw and spherical joint]


  • Revolute joints: revolute joints have one DoF and are used to describe rotational movements (with 1 DoF) between objects. Their configuration is defined by one value that represents the amount of rotation about their first reference frame's z-axis. They can be used as passive joints, or as active joints (motors). Their position is given in degrees or radians (see the user settings dialog for the unit selection).
  • Prismatic joints: prismatic joints have one DoF and are used to describe translational movements between objects. Their configuration is defined by one value that represents the amount of translation along their first reference frame's z-axis. They can be used as passive joints, or as active joints (motors). Their position is given in meters or millimeters (see the user settings dialog for the unit selection).
  • Screws: screws, which can be seen as a combination of revolute joints and prismatic joints (with linked values), have one DoF and are used to describe a movement similar to a screw. A pitch parameter defines the amount of translation for a given amount of rotation. A screw configuration is defined by one value that represents the amount of rotation about its first reference frame's z-axis. Screws can be used as passive joints, or as active joints (motors). Their position is given in degrees or radians (see the user settings dialog for the unit selection).
  • Spherical joints: spherical joints have three DoF and are used to describe rotational movements (with 3 DoF) between objects. Their configuration is defined by three values that represent the amount of rotation around their first reference frame's x-, y- and z-axis. The three values that define a spherical joint's configuration are specified as Euler angles. In some situations, a spherical joint can be thought of as 3 concurrent and orthogonal to each other joints, that are parented in a hierarchy-chain. The analogy is however only valid while all revolute joints keep an orientation distinct from any of the two others: indeed, should two joints come close to coincide, a singular situation might appear and the mechanism might lose one DoF. This does never happen with spherical joints that are internally handled to avoid this kind of situation. Spherical joints are always passive joints, and cannot act as motors.
  • [Two equivalent mechanisms (in this configuration): spherical joint (left) and 3 revolute joints (right)]


    [Two non-equivalent mechanisms: the right configuration is close to a singularity]


    A joint is used to allow for a relative movement between its parent and its children. When a parent-child relationship is built between a joint and an object, the object is attached to the joint's second reference frame, thus, a change of the joint's configuration (intrinsic position) will directly be reflected onto its children. New joints can be added to a scene with [Menu bar --> Add --> Joints].

    A joint can be in one of following control modes:

  • Passive mode: in this mode the joint is not directly controlled and will act as a fixed link. The user can however change the joint's position with appropriate API function calls (e.g. simSetJointPositon or simSetSphericalJointMatrix).
  • Inverse kinematics mode: in this mode, the joint acts as a passive joint, but is used (adjusted) during inverse kinematics calculations or geometric constraint solver calculations; this is the default mode.
  • Dependent inverse kinematics mode: this mode is similar to the inverse kinematics mode above, with the difference that the joint is additionally linked to another joint trough a linear equation DURING inverse kinematics resolution. This mode can ease the implementation of complex closed kinematic configurations.
  • Dependent mode: in this mode, the joint position is directly linked (dependent) to another joint position through a linear equation. This is different from the Dependent inverse kinematics mode (see above) which is combined with the inverse kinematics resolution functionality.
  • Motion mode: in this mode, the joint acts as a motor; the motion profile is a linear velocity profile, determined by an acceleration factor and a target velocity parameter as shown in following figure:
  • [Joint velocity profile]


  • Torque or force mode: in this mode, the joint is simulated by the dynamics module, if and only if it is dynamically enabled (refer to the section on designing dynamic simulations for more information). When dynamically enabled, a joint can be free or controlled in Force/torque, in velocity or in position (PID control). Screws cannot (yet) be operated in torque or force mode (however it is possible to obtain a similar behaviour by linking a revolute and prismatic joint programmatically), and spherical joints can only be free in torque or force mode.
  • When the joint motor is disabled, the joint is free and only constrained by its limits.
  • When the joint motor is enabled and the position control is disabled, then the joint will try to reach the desired target velocity given the maximum torque/force it is capable to deliver. When that maximum torque/force is very high, the target velocity is instantaneously reached and the joint operates in velocity control, otherwise it operates at the specified torque/force until the desired target velocity is reached (torque/force control).
  • When the joint motor is enabled and the position control is enabled, then PID parameters will try to drive the joint to the desired target position. Two PID control methods are supported:
  • PID control by adjusting the joint velocity (regular position control):

  • PID control by modulating the joint torque/force (can be used to model springs):

  • When the joint is in passive mode, inverse kinematics mode, dependent inverse kinematics mode, dependent mode or motion mode, it can optionally also be operated in a hybrid fashion: hybrid operation allows the joint to operate in a regular way, but additionally, just before dynamics calculations, the current joint position will be copied to the target joint position, and then, during dynamics calculations, the joint will be handled as a motor in position control (if and only if it is dynamically enabled (refer to the section on designing dynamic simulations for more information)). This feature allows for instance to control the leg of a humanoid robot by simply specifying the desired foot position (as an inverse kinematics task); the corresponding calculated joint positions will then be applied as position control values for the leg dynamic motion.


    Recommended topics

  • Joints
  • Joint dialog
  • Inverse kinematics module
  • Geometric constraint solver module
  • Dynamics module
  • Designing dynamic simulations