Inverse kinematics dialog

The inverse kinematics dialog is part of the calculation module properties dialog, which is located at [Menu bar --> Tools --> Calculation module properties]. You can also open the dialog with a click on its toolbar button:

[Calculation module properties toolbar button]


In the calculation module properties dialog, click the Inverse kinematics button to display the inverse kinematics dialog:

[Inverse kinematics dialog]


  • Inverse kinematics enabled: enables or disables all inverse kinematics calculations.
  • Add new IK group: adds a new empty IK group. IK groups can contain one or more IK elements. IK elements are basic kinematic chain IK tasks, and IK groups can group them for simultaneous solving. Use simultaneous solving only when needed (longer calculation time than sequential solving). An IK element always has to be associated with an IK group and can't exist by itself. The list below the button displays all IK groups that will be solved during IK calculations. An IK group in the list needs to be selected in order to have its parameters visualized in the rest of the dialog. The order in the list is important (IK group1's result might be needed for IK group2 to perform correctly or faster). The two buttons next to the list allow changing the position of the selected IK group.
  • IK group is active: allows turning on and off individual IK groups.
  • Explicit handling: indicates whether the selected IK group should be explicitly handled. If checked, IK calculation for this IK group will not be handled when simHandleIkGroup(sim_handle_all_except_explicit) is called, but only if simHandleIkGroup(sim_handle_all) or simHandleIkGroup(ikGroupHandle) is called. This is useful if the user wishes to handle kinematics for that IK group in a child script rather than in the main script (if not checked, IK calculation for that IK group will be handled twice, once when simHandleIkGroup(sim_handle_all_except_explicit) is called in the main script, and once when simHandleIkGroup(ikGroupHandle) is called in the child script). Refer also to the section on explicit and non-explicit calls.
  • Mechanism is redundant: when selected, then joint limit corrections will be applied during IK resolution. Otherwise, joint limits will simply be enforced after IK resolution, which might lead to instabilities.
  • Ignore max. step sizes: the maximum step sizes specified in the joint properties will be ignored if this property is checked.
  • Calc. method: calculation method to use for the specified IK group resolution. Pseudo inverse is the fastest method but can be unstable when the target and tip lie too far apart, when a kinematic chain is overconstrained or when the mechanism is close to a singular configuration or the target is out of reach. DLS is slower but more stable since it is a damped resolution method (the damping factor can be specified (Damping)). This is a good choice when the pseudo inverse method might fail.
  • Damping: the damping factor when using a damped resolution method (DLS). Large values result in more stable resolution but are much slower. It is important to adjust this value appropriately.
  • Max. iterations: a maximum number of iterations can be specified. This is the maximum number of calculation passes for a given IK group, until its specified resolution accuracy was reached. Damped resolution (DLS) usually requires more iterations than a non-damped resolution (pseudo inverse).
  • Joint limits (calculation weights): the calculation weight that should be used for joint limitation constraints (joint limitation constraints are specified in the joint properties (position minimum and position range).
  • Obstacle avoidance (calculation weights): the calculation weight that should be used for obstacle avoidance constraints.
  • Joint limit thresholds: linear and angular thresholds that should be used with joint limitation constraints.
  • Edit conditional parameters: allows adjusting conditional resolution parameters for the selected IK group. Following dialog will pop open:
  • [IK conditional resolution dialog]

  • Perform if... : this is the conditional resolution section. The user can select in the drop-down list an IK group whose IK resolution result will dictate whether current IK group will be solved. Is considered as successful an IK group calculation whose IK elements all lie within their specified linear/angular precision.
  • Restore if... : allows restoring the initial IK group configuration (joint values) if resolution didn't succeed (positional and/or orientational precision was not reached). Combined with the conditional solving above, the user can for instance combine two different calculation methods. This is useful in case a manipulator's target might be out of reach or close to a singularity: the first resolution attempt will then try solving the IK group with a non-damped resolution method (pseudo inverse, fast), and if not successful, a second attempt will try to solve it with a damped resolution method (DLS, slower). The user is of course also free to "manually" handle IK resolution from within a script, plugin, etc.

  • Edit obstacle avoidance parameters: allows adjusting obstacle avoidance parameters. Be aware that this only makes sense for redundant manipulators, and that simulation speed might be drastically slowed down. Following dialog will pop open:
  • [IK obstacle avoidance dialog]

  • Select avoidance entities / Remove avoidance constraint: allows selecting / removing avoidance entities. One entity would typically be the robot, the other entity the obstacle. Use simple measurable objects for fast resolution.
  • Distance threshold: minimum distance that should be kept between the avoidance entities.

  • Edit IK elements: allows to edit the various IK elements relative to the selected IK group. Clicking this button opens the IK element dialog.

  • Recommended topics

  • Inverse kinematics
  • Basics on IK groups and IK elements
  • Solving IK and FK for any type of mechanism
  • IK element dialog