User Tools

Site Tools


visual3d:documentation:kinematics_and_kinetics:inverse_kinematics

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
visual3d:documentation:kinematics_and_kinetics:inverse_kinematics [2024/10/25 16:19] wikisysopvisual3d:documentation:kinematics_and_kinetics:inverse_kinematics [2025/04/02 11:03] (current) – Cleaned up page, fixed broken image links. wikisysop
Line 1: Line 1:
 ====== Inverse Kinematics ====== ====== Inverse Kinematics ======
  
-Visual3D models are based on a linked set of rigid segments. Traditional Visual3D models (6 DoFassumed that segments were implicitly linked by the Motion Capture Data (e.g. segments didn't come apart because the subject didn't come apart) and the joints were modeled with 6 degrees of freedom (e.g. all segments were treated as if they were independent). The mapping of MoCap markers to 6 DOF segments, is a matter of tracking a set of markers that are linked rigidly to the segment. This least squares solution requires the [[Visual3D:Documentation:Modeling:Segments:Constructing_the_Segment_Coordinate_System|Specification of the Segment Coordinate System]] and the [[Visual3D:Documentation:Kinematics_and_Kinetics:Six_Degrees_of_Freedom#6_DOF_Tracking|Tracking of the Pose]] (position and orientationof a segment. Essentially this is a straightforward pattern recognition; the pattern (configuration) of the tracking markers are specified in standing trial, and this pattern is fit to the marker configuration in each frame of MoCap data.+Inverse kinematics (IKis the process of determining the parameters of a jointed flexible object (a kinematic chainin order to achieve a desired poseIK is an alternative to traditional Visual3D models ([[visual3d:documentation:kinematics_and_kinetics:six_degrees_of_freedom|Six Degrees of Freedom (6 DoF) models]]) in which the user defines joints (e.g. explicitly state which segments are connected by joint) and specifies the properties of all joints.
  
-An alternative to the 6 DOF solution is to define joints (e.g. explicitly state which segments are connected by a joint) and to specify the properties of all joints. Because the targets used to track the segments are often subject to measurement error and soft tissue artifact, motion about some of the degrees of freedom maybe much larger than the motion that would be realistically possible. Lu and O’Connor (1999) described a global optimization process where physically realistic joint constraints can be added to the model to minimize the effect of the soft tissue and measurement error. Lu and O’Connor termed this process Global Optimization while others inside the biomechanics community prefer the term Inverse Kinematics (IK is the termed used by Visual3D).+Because the targets used to track the segments are often subject to measurement error and soft tissue artifact, motion about some of a joint'degrees of freedom may be much larger than the motion that would be realistically possible. Lu and O’Connor (1999) described a global optimization process where physically realistic joint constraints can be added to the model to minimize the effect of the soft tissue and measurement error. Lu and O’Connor termed this process **Global Optimization** while others inside the biomechanics community prefer the term **Inverse Kinematics**. Inverse Kinematics, or IKis the termed used by Visual3D.
  
-The difference between the traditional Visual3d 6 degree of freedom model and the Inverse Kinematics (IK) model is that constraints can be added between segments that restrict the relative motion between the segments. This is accomplished by creating one or more IK chains.+===== Theory of Inverse Kinematics =====
  
-Inverse kinematics is the process of determining the parameters of a jointed flexible object (a kinematic chainin order to achieve a desired pose.+Traditionally in Visual3D the motion of segments are fully described by six degrees of freedom (three rotational parameters and three translational parameters); thus the segments are free to move as if there are no constraints at the joints.
  
-An Inverse Kinematics solution is dependent on the choice of hierarchical model because the task is to identify an articulated figure consisting of a set of rigid segments connected with joints. Varying angles of the joints yields an indefinite number of configurations, so in the general case there is no analytic solution +Photogrammetric procedures for obtaining measurements of six degree-of-freedom (DOF) segmental motion require that a system of three or more non-collinear points be fixed to each segment. These non-collinear points are used to define orthogonal [[visual3d:documentation:modeling:coordinate_system|segment coordinate systems]] (SCSs) located independently within each of the segments. In addition, an orthogonal [[visual3d:documentation:definitions:laboratory_coordinate_system|laboratory coordinate system]] (LCS), which is assumed to be stationary, is defined during system calibration.
- +
- +
-==== Global Optimization ==== +
- +
-In Visual3D the Inverse Kinematics problem is solved as a [[Visual3D:Documentation:Kinematics_and_Kinetics:Global_Optimization|global optimization]] problem, which computes the pose of a model that best matches the motion capture data in terms of a global criterion. +
- +
-==== Defining the IK Constraints ==== +
- +
-IK chains are created in Visual3D using the [[Inverse_Kinematics:_Define_a_Model|IK Constraints]] tab in the Model builder portion of Visual3d. Prior to creating an IK chain all of this segments that are to be included in the chain must already be defined by in the Segments tab of the Visual3d Model builder. +
- +
- +
-==== Theory ==== +
- +
-Traditionally in Visual3d the motion of segments are fully described by six degrees of freedom (three rotational parameters and three translational parameters); thus the segments are free to move as if there are no constraints at the joints. +
- +
-Photogrammetric procedures for obtaining measurements of six degree-of-freedom (DOF) segmental motion require that a system of three or more noncolinear points be fixed to each segment. These non-colinear points are used to define orthogonal segment coordinate systems (SCSs) located independently within each of the segments. In addition, an orthogonal laboratory coordinate system (LCS), which is assumed to be stationary, is defined during system calibration.+
  
 Measurement of the position and orientation of a local segment coordinate system (SCS) with respect to the laboratory coordinate system (LCS) can be used to completely describe the segment's motion. Measurement of the position and orientation of a local segment coordinate system (SCS) with respect to the laboratory coordinate system (LCS) can be used to completely describe the segment's motion.
  
-[[File:ik1.GIF|{{/images/d/d3/ik1.GIF?656x432}}]]+{{:ik1.gif}}
  
 where m is equal to the number of targets on the segment ( m > 2). (This solution is adapted from the solution outlined by Spoor & Veldpaus in the Journal of Biomechanics, pp. 391- 393, 1980.). where m is equal to the number of targets on the segment ( m > 2). (This solution is adapted from the solution outlined by Spoor & Veldpaus in the Journal of Biomechanics, pp. 391- 393, 1980.).
  
-However, because the targets used to track the segments are often subject to measurement error and soft tissue artifact, the measured motion about some of the degrees of freedom maybe much larger than the motion that would be realistically possible. Lu and O’Connor (1999) described a global optimization process which applies physically realistic joint constraints to the model to minimize the effect of the soft tissue and measurement error. Lu and O’Connor termed this process Global Optimization while other inside the biomechanics community prefer the term Inverse Kinematics. (Inverse Kinematics is the term used by Visual3d but Visual3d’s approach is based on the Lu and O’Connor technique.)+However, because the targets used to track the segments are often subject to measurement error and soft tissue artifact, the measured motion about some of the degrees of freedom maybe much larger than the motion that would be realistically possible. Lu and O’Connor (1999) described a global optimization process which applies physically realistic joint constraints to the model to minimize the effect of the soft tissue and measurement error.
  
 Mathematically Van Den Bogert and Su (2008) described this approach which specifies the configuration of the total body based on a set coordinates q. In this case T and O of equation 1 become a function of all the generalized coordinates: Mathematically Van Den Bogert and Su (2008) described this approach which specifies the configuration of the total body based on a set coordinates q. In this case T and O of equation 1 become a function of all the generalized coordinates:
  
-[[File:ik2.GIF|{{/images/d/d4/ik2.GIF?191x44}}]]+{{:ik2.GIF}}
  
 and the expression that is minimized becomes: and the expression that is minimized becomes:
  
-[[File:ik3.GIF|{{/images/6/6e/ik3.GIF?279x44}}]]+{{:ik3.GIF}}
  
 where now mt is the total number of targets on all the segments in the Inverse Kinematics chain. where now mt is the total number of targets on all the segments in the Inverse Kinematics chain.
  
-==== Segment Weight ====+===== Inverse Kinematics as a Global Optimization Problem =====
  
-When creating an IK chain the user may want to make sure that certain segments follow the tracking targets with a higher degree of accuracy then other segments. For example, the user may want to assure that the distance between the foot (RFT or LFT) and the floor (or force platform if available) remains similar to the values that would be obtained using the tradition Visual3D 6 DoF method. To help with this situation Visual3D lets the user add a [[Visual3D:Documentation:Modeling:Segments:Segment_Weight|weight factor]] for the mobilizers associated with each segment(The default weighting factor for all segments is 1.0). Adding weight factors effectively changes equation 3 to:+In Visual3D the Inverse Kinematics problem is solved as a [[Visual3D:Documentation:Kinematics_and_Kinetics:Global_Optimization|global optimization]] problem, which computes the pose of a model that best matches the motion capture data in terms of a global criterion.
  
-[[File:ik4.GIF|{{/images/3/35/ik4.GIF?312x61}}]]+==== Defining IK Constraints ====
  
-where n is the number of segments in the IK chain. k_n Is the weight factor for the mobilizers associated with the segment and m is the number of targets used to track that segment.+IK chains are created in Visual3D using the [[Inverse_Kinematics:_Define_a_Model|IK Constraints]] tab in the [[visual3d:documentation:definitions:model_builder_mode|Model Builder]] portion of Visual3D. Prior to creating an IK chain all of this segments that are to be included in the chain must already be defined by in the Segments tab of the Visual3D Model builder.
  
-==== Boundary Conditions ====+==== Segment Weight ====
  
-This functionality is new and has limited documentation.+When creating an IK chain the user may want to make sure that certain segments follow the tracking targets with a higher degree of accuracy then other segments. For example, the user may want to assure that the distance between the foot (RFT or LFT) and the floor (or force platform if available) remains similar to the values that would be obtained using the tradition Visual3D 6 DoF method. To help with this situation Visual3D lets the user add a [[Visual3D:Documentation:Modeling:Segments:Segment_Weight|weight factor]] for the mobilizers associated with each segment. (The default weighting factor for all segments is 1.0)Adding weight factors effectively changes equation 3 to:
  
-Here is some preliminary information.+{{:ik4.GIF}}
  
-To use the LBFGSB optimizer you first have to setup a traditional [[Inverse_Kinematics:_Define_a_Model|Inverse Kinematics model]]:+where: 
 +  - n is the number of segments in the IK chain; 
 +  - k_n Is the weight factor for the mobilizers associated with the segment; and 
 +  - m is the number of targets used to track that segment.
  
-Next:+==== Boundary Conditions ====
  
-  change the optimizer to LBFGSB+To use the LBFGSB optimizer you first have to setup a traditional IK model, then: 
 +  Change the optimizer to LBFGSB
   - Select the segment for which you want to add boundary conditions in the IK Segment List Box. (Not you can only add boundary conditions for degrees of freedom where the mobilizer is checked, If the mobilizer is not check that component of the joint is fixed and not part of the IK solution,)   - Select the segment for which you want to add boundary conditions in the IK Segment List Box. (Not you can only add boundary conditions for degrees of freedom where the mobilizer is checked, If the mobilizer is not check that component of the joint is fixed and not part of the IK solution,)
   - Select the "Properties" Button to bring up the "IK Degrees of Freedom Property Dialog"   - Select the "Properties" Button to bring up the "IK Degrees of Freedom Property Dialog"
   - Change the Low and High Range boundary condition for the degree of freedom(s) of interest.   - Change the Low and High Range boundary condition for the degree of freedom(s) of interest.
   - Click OK to accept the changes and close the Dialog.   - Click OK to accept the changes and close the Dialog.
-  - Build (or Recalc) the Model.+  - Build (or [[visual3d:documentation:pipeline:general_information:recalc_pipeline|Recalc]]) the Model.
  
-This will now solve the Inverse Kinematic problem within the limits of any boundary conditions you specify.+This will now solve the IK problem within the limits of any boundary conditions you specify
 + 
 +===== Comparing 6DOF and Inverse Kinematics ===== 
 + 
 +Visual3D models are based on a linked set of rigid segments. Traditional Visual3D models (6DOF) assumed that segments were implicitly linked by the motion capture data (e.g. segments didn't come apart because the subject didn't come apart) and the joints were modeled with 6 degrees of freedom (e.g. all segments were treated as if they were independent). The mapping of motion capture markers to 6 DOF segments is a matter of tracking a set of markers that are linked rigidly to the segment. This least squares solution requires [[Visual3D:Documentation:Modeling:Segments:Constructing_the_Segment_Coordinate_System|specifying the Segment Coordinate System]] and [[Visual3D:Documentation:Kinematics_and_Kinetics:Six_Degrees_of_Freedom#6_DOF_Tracking|tracking the pose]] (position and orientation) of that segment. Essentially this is a straightforward pattern recognition; the pattern (configuration) of the tracking markers are specified in a standing trial, and this pattern is fit to the marker configuration in each frame of motion capture data. 
 + 
 +The difference between the traditional Visual3D 6DOF model and the IK model is that the latter allows constraints to be added between segments that restrict the relative motion between the segments. This is accomplished by creating one or more IK chains. An Inverse Kinematics solution is dependent on the choice of hierarchical model (the specified IK chains) because the task is to identify an articulated figure consisting of a set of rigid segments connected with joints. Varying angles of the joints yields an indefinite number of configurations, so in the general case there is no analytic solution. This necessitates solving for pose with an IK model as an optimization problem. 
 + 
 +===== Examples ===== 
 + 
 +Certain common scenarios occur when building Visual3D models where we recommend considering an IK model.
  
 ==== Kinematic Foot ==== ==== Kinematic Foot ====
Line 79: Line 77:
  
 The [[Visual3D:Tutorials:Modeling:IK_Kinematic_Foot|IK Kinematic Foot Tutorial]] describes kinematic only foot segments which are tracked using the IK POSE estimation. The [[Visual3D:Tutorials:Modeling:IK_Kinematic_Foot|IK Kinematic Foot Tutorial]] describes kinematic only foot segments which are tracked using the IK POSE estimation.
- 
- 
  
visual3d/documentation/kinematics_and_kinetics/inverse_kinematics.txt · Last modified: 2025/04/02 11:03 by wikisysop