visual3d:documentation:kinematics_and_kinetics:inverse_kinematics
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
visual3d:documentation:kinematics_and_kinetics:inverse_kinematics [2024/06/19 12:47] – sgranger | visual3d:documentation:kinematics_and_kinetics:inverse_kinematics [2025/04/02 11:03] (current) – Cleaned up page, fixed broken image links. wikisysop | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | visual3d models are based on a linked set of rigid segments. traditional visual3d models (6 dof) 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 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: | + | ====== Inverse Kinematics ====== |
- | an alternative to the 6 dof solution is to define | + | Inverse kinematics (IK) is the process of determining the parameters of a jointed flexible object (a kinematic chain) in order to achieve a desired pose. IK is an alternative to traditional Visual3D models ([[visual3d: |
- | the difference between | + | Because |
- | inverse kinematics is the process | + | ===== Theory |
- | \\ | + | Traditionally in Visual3D |
- | an inverse kinematics solution is dependent on the choice | + | |
- | \\ | + | 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: |
+ | 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' | ||
- | ===== global optimization ===== | + | {{: |
- | in visual3d the inverse kinematics problem | + | where m is equal to the number |
- | ===== defining | + | However, because |
- | ik chains are created in visual3d using the [[inverse_kinematics: | + | Mathematically Van Den Bogert and Su (2008) described this approach which specifies |
- | \\ | + | {{: |
+ | and the expression that is minimized becomes: | ||
- | ===== theory ===== | + | {{: |
- | traditionally in visual3d | + | where now mt is the total number |
- | 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. | + | ===== Inverse Kinematics as a Global Optimization Problem ===== |
- | + | ||
- | 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' | + | |
- | + | ||
- | {{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, | + | |
- | + | ||
- | 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.) | + | |
- | + | ||
- | 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: | + | |
- | + | ||
- | {{ik2.gif}} | + | |
- | + | ||
- | and the expression that is minimized becomes: | + | |
- | {{ik3.gif}} | + | In Visual3D the Inverse Kinematics problem is solved as a [[Visual3D: |
- | where now mt is the total number of targets on all the segments in the inverse kinematics chain. | + | ==== Defining IK Constraints ==== |
- | ===== segment weight ===== | + | IK chains are created in Visual3D using the [[Inverse_Kinematics: |
- | 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: | + | ==== Segment Weight ==== |
- | {{ik4.gif}} | + | 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: |
- | 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. | + | {{:ik4.GIF}} |
- | ===== boundary conditions ===== | + | 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. | ||
- | this functionality is new and has limited documentation. | + | ==== Boundary Conditions ==== |
- | here is some preliminary information. | + | 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 | ||
+ | - Select the " | ||
+ | - 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. | ||
+ | - Build (or [[visual3d: | ||
- | to use the lbfgsb optimizer | + | This will now solve the IK problem within the limits of any boundary conditions |
- | next: | + | ===== Comparing 6DOF and Inverse Kinematics ===== |
- | - change | + | 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 |
- | - select | + | |
- | - select | + | |
- | - change the low and high range boundary condition for the degree of freedom(s) of interest. | + | |
- | - click ok to accept | + | |
- | - build (or recalc) the model. | + | |
- | this will now solve the inverse kinematic problem within | + | The difference between |
- | ===== kinematic foot ===== | + | ===== Examples |
- | when using [[visual3d: | + | Certain common scenarios occur when building Visual3D models where we recommend considering an IK model. |
- | with an ik model, it is important that the proximal end of the segment be defined as the point of rotation. for this reason, the kinematic only foot segments described in the [[visual3d: | + | ==== Kinematic Foot ==== |
- | the [[visual3d:tutorials:modeling:ik_kinematic_foot|ik kinematic foot tutorial]] describes | + | When using [[Visual3D:Documentation:Kinematics_and_Kinetics:Six_Degrees_of_Freedom|6 DOF]], users commonly create a second [[Visual3D: |
+ | With an IK model, it is important that the proximal end of the segment be defined as the point of rotation. For this reason, the kinematic only foot segments described in the [[Visual3D: | ||
+ | The [[Visual3D: | ||
visual3d/documentation/kinematics_and_kinetics/inverse_kinematics.1718801277.txt.gz · Last modified: 2024/06/19 12:47 by sgranger