Fixes the problem with over-constraint models when adding the shoulder rhythm.


AMMR 2.1.1 (2018-06-12)

The AMMR 2.1.1 version is a minor release of the AMMR with smaller changes and bugfixes. The AnyBody Managed Model Repository now has a DOI (10.5281/zenodo.1250764). This is handled by (The European Open Science platform hosted at CERN).


  • Added a Leg.Seg.Foot.GroundJoint RefNode to the foot segment of the TLEM2 model. This RefNode was also present in the TLEM1 model and was used by few applications.
  • New GroundVelocity setting added to the ForcePlateAutoDetection class_template, which makes class usable with instrumented treadmills.
  • All force plate types now have a user-definable ForcePlate.CalMatrix variable. The feature is useful to easily compensate for errors in the c3d file (i.e. swapped channel and wrong sign)


  • Enhanced the multi-trial MoCap example for best practice for MoCap trials with multiple subjects and trials. The example now shows how to deal with multiple subjects and storing the c3d files in a separate folder.


  • Corrected the default mass of the patella segment in the TLEM2 model from zero to 0.025.
  • Add missing unilateral reaction between TS node on Scapula and the Thorax when using the shoulder rhythm.
  • Adjusted the initial wrapping vectors for the semitendinosus, semimembranosus, and biceps caput breve muscles around the knee. This has no influence on the output of the model, and is only done to reduce the risk of the muscles wrapping the wrong direction around the wrapping surface.
  • AnyMoCap:
    • The high memory usage of the AnyMoCap BVH model has been fixed. The high memory usage was due to a reference in the CreateMarkerDriver class template which caused the studies to include the BVH input data multiple times in the output.
    • The BVH and multi-trial examples now use zero phase shift filtering of force plate forces. The zero-phase filter can be important to ensure that forces are synchronized with kinematic data.
    • Fix bug in Type 1 Force plate when data is not in meters (i.e. PointScaleFactor != 1). The PointScaleFactor was applied twice to the z moment component.
    • Fix a problem reading C3D files where force plate meta information is saved with the wrong dimensionality. Such a issue can, for example, happen if the c3d files are created manually in MATLAB.
    • The option to load parameter optimization results is no longer hidden when the MOCAP_CREATE_PARAMETER_ID_SHORTCUT is set to OFF.

AMMR 2.1.0 (2018-03-22)


  • New squat example model which demonstrates a parameterized squatting motion.
  • New #class_template for adding limit drivers to kinematic measures. Can be included with #include "<ANYBODY_PATH_MODELUTILS>/KinematicLimits/KinLimit_template.any"
  • Muscle ColorScale can now be set from the Main.DrawSettings.Muscles.ColorScale. If you port an older model to the new AMMR you will need to update your DrawSettings.any file.
  • AnyMoCap framework:
    • New argument DRAW_SCALE in the CreateMarkerDriver class_template to control the visual size of markers.
    • Added an option to the ForcePlateAutoDetection class template to make the limb1/2 contact detection mutually exclusive. Setting the option ALLOW_MULTI_LIMB_CONTACT=OFF will ensure that both legs cant be in contact with the plate at the same time. This can prevent accidental contact detection for the collateral leg in the swing phase.
    • New option to specify the contact nodes in ForcePlateAutoDetection class template. This makes the class useful for connecting force plate to other limbs than the feet.
    • Add support for the Shoulder Rhythm in AnyMoCap based models.
    • Add support for the Detailed hand model in AnyMoCap based models.
  • New BM_FOOT_MODEL parameter, as preparation for integrating the Glasgow-Maastricht foot model (GM-Foot) back into the AMMR. Currently, the parameter can only be used for excluding the feet (#define BM_FOOT_MODEL _FOOT_MODEL_NONE_). making it easier to work on integrating the GM foot model.

See also

Adding the GM-Foot to the TLEM2 model is a work in progress. An early version is released on GitHub:


  • Default mannequin drivers for the Pelvis are changed to drive the Pelvis anatomical frame instead of the segmental reference frame. This also fixes the discrepancy between the load time position and the mannequin driver position and makes the driver consistent with the interface measures BodyModel.Interface.Trunk.PelvisPosX/Y/Z.


This change will affect models using the default mannequin drivers unless the driver values are updated.

  • The Wilke spine pressure validation examples have been updated and now uses the TLEM2 lower extremity model.
  • In _SCALING_XYZ_ scaling law the definition of length/depth/width of the scapula is corrected to match the anatomical definitions.
  • Updated the AAU Mandible Model introduced in AMMR 2.0.0. By accident the authors did not share the exact same version of the model that was used in the publication by Andersen et al. 2017 This is now corrected and the validation example produces the same results as published version.
  • TLEM 2 model
    • Pectineus implementation has been adjusted based on the original MRI Scans. Only the most lateral element of the pectineus muscle was changed. This was done to prevent it from penetrating the femoral head in some situations.
    • Tweaked the Gluteus Maximum Superior implementation to reduce the risk of collisions between muscle insertions and the wrapping surface. The two most proximal insertion points of the Gluteus Superior are shifted more distally, and the locations of the wrapping surfaces are tweaked.
  • AnyMoCap Framework:
    • Models now uses the default kinematic solver for the inverse dynamic analysis.
    • Changed the set joint drivers used for transferring the joint angles from the over-determinate marker tracking to the inverse dynamic analysis. To improve the stability of the scapula kinematics the Scapula Thorax Elevation angle is used instead of the sterno clavicula elevation angle.
    • Changed the way marker drivers are excluded from the Inverse Dynamic analysis. The drivers are now excluded using the new AnyMechObjectExcluder class instead of the MechObjectExlcude member of the Study. This has no practical effect on model output but means that the MechObjectExlcude can now be assigned by the users.
    • Update to the BVH MoCap example. Pre-processing the BVH data is now a separate operation which saves the virtual marker positions to a file. Thus, this step can be skipped the next time the model is reloaded.
    • Changed the AnyMoCap Multi trial example Plug-in-gait_MultiTrial_StandingRef to make it a better starting point for creating new models. 1. Moved the Human-Ground residuals from the Trunk to the Pelvis segment. 2. Use the TLEM 2 lower body model in the example. 3. Disable upper bounds for the muscle recruitment Criterion.UpperBoundOnOff = Off; to improve the stability of the simulations.


  • Shoulder-arm model:
    • Fixed problems with Pectoralis Major wrapping. Wrapping could fail unpredictively when muscles wrapped in the intersection between the coracoid wrapping and pectoralis minor cylinder. The coracoid wrapping cylinder has been removed, and the others has been made longer. This creates a more robust wrapping for the Pectoralis Major muscle.
    • Better initial position for scapula and clavicula. The initial position is now calculated from the initial position of the chain from thorax through the clavicula to scapula. This will not change the model output but should make the arm model more robust solving the first step.
    • Improve the Teres Minor wrapping by adjusting the wrapping surface, and ensure that the insertion point is not directly on the surface.
    • The “Evaluate joint strength” studies now also work when the shoulder rhythm is enabled.
    • Fixed problems with via points of the wrist extensor muscles colliding with the wrist wrapping surface in normal range of motion. The via point of Extensor indicis Via_Extensor_Indicis_pos has been slightly adjusted and the location of the wrist wrapping cylinder MedialExtensorCyl has been improved.
  • Detailed hand model:
    • Fix a problem causing the hand to scale incorrectly.
    • Fix a problem with the default mannequin drivers for the left thumb, where CMC and MCP abduction was treated as adduction.
    • Fixed compatibility between the detailed hand and scaling law _SCALING_XYZ_.
  • Lower extremity models:
    • Fixed various warnings when running calibration routines with the lower extremity models.
    • Fixed muscle insertions for the old leg model (#define BM_LEG_MODEL _LEG_MODEL_LEG_). The misaligned pelvis muscles insertions was a regression due to the updated Trunk pelvis introduced in AMMR 2.0. The pelvis muscles insertions have been translated and rotated to fit the new Trunk geometry as best as possible.
    • Fix missing left leg calibration operations when right leg was excluded.
  • MoCap models:
    • Weak residuals for GRF prediction: Ensure the same strength is used in all directions for the weak recruited actuators.
    • Fix bug in CreateMarkerDriver class template which prevented the UseC3DWeightResiduals from having any effect.
    • Fix the wrong visualization of the contact area in ground reaction force prediction class template, when the base frame is different from the global coordinate system.
    • Wrong masses in the deprecated “old” MOCAP models. The model was not using the body mass specified in Main.TrialSpecificData.Anthropometrics.BodyMass
  • Other fixes:
    • Wrapping convergence for multiple muscles has been improved. This was done by tweaking the string-mesh of the muscles to improve the wrapping solvers ability to find the solution within the given number of iterations.

AMMR 2.0.0 (2017-11-29)

Major changes:

New lower extremity model (TLEM2.1)

  • The Twente Lower Extremity Model version 2.0 dataset, developed in the TLEMsafe EU project was implemented in the AMMR repository. The model is not the default model, but can be enabled with the BM parameter #define BM_LEG_MODEL _LEG_MODEL_TLEM2_

  • The model is versioned TLEM 2.1, to indicate the number of changes and correction which has been added in the process. The changes and updates to the TLEM2 dataset was done in the Life Long Joints EU research project (paper submitted for publication).

  • The most important changes to the TLEM 2 dataset include the following:

    • Updated wrapping for the Gluteus Maximus, Iliacus, Psoas around the hip.
    • Reworked muscle topology for Gluteus Medius and Gluteus Minimus
    • Updated wrapping for Hamstring muscles, and Gastrocnemius around the knee.
    • Redefined revolute knee axis and patella joint axis and patella tendon length based on the bone geometry. The original TLEM knee axis was estimated using a functional method, and was only valid for very small flexion angles. Thanks to Marco Antonio Marra (Radboudumc) for this for this improvement.
    • The ratio of volume between Gluteus Maximus superior/inferior has been re-estimated based on the original cadaver MRI scans.
    • Update the Sartorius via points.
    • Re-implemented the Hip Joint location for the pelvis and the femur by fitting spheres to the femoral head and the acetabulum. This is in contrast to the original TLEM2.0 implementation where the hip joint center was found using a functional method.
    • Included a more detailed version of the patella bone.
    • Various minor bug fixes from the original implementation used in the TLEMSafe project.
    • Corrected the femoral attachment points for the popliteus muscle
    • Update ankle joint nodes with positions fitted to the bone geometry
    • Small correction to wrong insertion points for Adductor Longus and Vastus Medialis.
  • See the dedicated TLEM2.1 page page for more information.


  • New framework for running MoCap models. The AnyMoCap framework is an effort to create a simple and unified framework for doing any kind of MoCap analysis with the AnyBody Modeling System. See the AnyMoCap example gallery for more information.
  • Algorithms and file for Ground reaction force prediction are added to: ammr/tools/GRFPrediction/. See the MoCap examples for how they are used.

TLEM 1 updates

  • The cumulated smaller bug fixes and updates to the TLEM1 model mean that we now denote the model 1.2.
  • Changed the position of the Heel contact node, to align the heights of the TLEM1 and TLEM2 models.
  • Added missing GeomScale function to the patella segment.
  • Update ankle joint nodes with positions fitted to the bone geometry
  • PSCA is now calculated based on the scaled fiber length. This aligns the TLEM 1 model with the new TLEM 2 model. It also means that scaling the model without changing the muscle volumes will change the strength of the model.
  • Update scaling of the Patella tendon to work with non-linear scaling laws.
  • Added visualization of the Fibula bone.

AMMR restructure

  • Added a top-level Tools folder helper files and other models which don’t belong in Body/ or Application.
  • Moved Body/AAUHuman/Toolbox to Tools/ModelUtilities
  • Renamed the Body/AUHuman to Body/Mandible_AU
  • Restructured the anthropometric (“AnyMan”) folder. The folder HumanModel.AnthroDataSubject is renamed to HumanModel.Anthropometics. The structure of the folder has also changed with a SegmentDimensions and SegmentMasses subfolder.

Configuration parameters

  • The previously used system to configure human body using a BodyPartSetup file was completely replaced with the new body model (BM) parameters.
  • Please see the documentation on: BM parameters.

Scaling laws

  • An additional scaling law based on individual segmental scaling factors was added to the repository. It can be enabled using this BM parameter #define BM_SCALING _SCALING_XYZ_. See the guide on scaling.
  • Default scaling is now _SCALING_STANDARD_ (e.g #define BM_SCALING _SCALING_STANDARD_) which scales all models to default standard 50% male.
  • Introduced _SCALING_NONE_, which disables scaling. E.g. models gets the original unscaled size.

New Mandible model

Spine model

  • BM parameters were updated to have control over each section of the spine and relevant components.
  • The anatomical reference frame of the thorax segment was modified. This change reflects a change in the pelvic anatomical reference, and ensures upright posture for the standing postures, to align C1C0 joint with the hip joint centers.
  • Boney surfaces of both pelvis and sacrum were updated and now correspond better to the relevant muscle attachments. These segments now also share a common scaling function. Hip joint centers were corrected for the old Leg model.
  • Improved wrapping surface for Psoas Major muscles based on the TLEM2.0 MR scans
  • Insertion, via, and attachment nodes of relevant muscles have been updated to match new geometries of pelvis and sacrum.

Arm model

  • The model now facilitates individual personalization for each side using nonlinear morphing schemes in a more consistent manner. Previously the morphing needed to be done on the right side and then reflect to have the left side morphing. This change removes an extra mirroring step.
  • Arm calibration was updated
  • BM parameters have been updated for more convenient use. BM_ARM_DETAILED_HAND and BM_ARM_SHOULDER_RHYTHM are now used instead of individual switches for right and left side, which were deprecated.
  • Muscle wrapping surfaces were updated for more physiological behavior.
  • Scapula reaction contact forces were simplified, and do not longer utilize slider segments.
  • Conoid ligament length now scales along with the scapula width.
  • Add a GeomScale function the Clavicula segment.

Muscle models

  • All muscle models are updated to support the structure of the new AnyMuscleModel3E and AnyMuscleModel in the AnyBody Modeling System 7.1. The following variables are renamed:

    • The “optimal fiber length” variable renamed from Lfbar to Lf0
    • The “Pennation angle” variable renamed from Gammabar to Gamma0
    • The “Tendon strain at F0” variable renamed from Epsilonbar to Epsilon0
  • Restructured the muscle model section of both TLEM1 and TLEM2 models.

    • All the original TLEM based muscle parameter are now located under: Leg/ModelParameters/Muscles

    • All scaled muscle parameters are located in Leg/MusPar/SubjectMusPar. This folder references the TLEM muscle and applies strength scaling etc. The SubjectMusPar folder and all subfolders are implemented with class_template. Thus, all muscle parameter can now be overridden in applications by just assigning the variables a new value: E.g.

      Main.HumanModel.BodyModel.Right.Leg.MusPar.SubjectMusPar = {
        GastrocnemiusMedialis.MuscleVolume = 300; // Volume in mililiters
        GastrocnemiusMedialis.Pennationangle = 15; // (in degrees)


  • Updated calibration for Arms and TLEM legs in the Body Model to

    • include muscles to the calibration study with search functions.
    • drive the postures using the measures from the interface folder to remain anatomically similar throughout future versions.
  • Added new experimental two-parameter calibration, which is based on range-of-motion postures. The calibration type is controlled by the BM_CALIBRATION_TYPE parameter.

    For example:


Minor Changes:

  • Added new initial guess for wrapping muscles, which make the wrapping more when the model starts in extreme postures.
  • Update many examples to use the TLEM 2.1 model. See the example gallery.
  • BM mannequin drivers are now implemented with a class_template allowing all weights and other settings to be customized.
  • A default HumanModel.Mannequin folder is now automatically created with a class_template when no user-defined Mannequin file is set.
  • A default Main.DrawSettings folder is now automatically created with a class_template when no user-defined DrawSettings file is set.
  • Extra Mannequin drivers for the individual shoulder degrees of freedom: Sterno clavicula protraction, Sterno clavicula elevation, Sterno clavicula axial rotation
  • The initial positions of the pelvis now use the anatomical reference frame. This follows the logic from the initial rotation of the pelvis which also uses the anatomical frame.
  • DeltoidMuscleConnector segment loading time positioning now depends on the Humerus segment.
  • Added class template to easily create videos from AnyScript model. The tool requires that FFmpeg is installed. The class template can be found in: <ANYBODY_PATH_MODELUTILS>/Video/CameraClassTemplate.any. See this blog post.
  • In TLEM models make the opacity of the patellar tendon dependent on the opacity of the patellar surface.
  • New AnyDoc classes are added to the different body model, so the GUI can create direct links to the documentation.
  • Simplify the Scapular reactions to the thorax segment.
  • Foot contact nodes are aligned with the AnatomicalFrame
  • Updated the Wilke Validation example to reflect the forces for the AMMR 2.0 repository.
  • Updates to BM parameters:
    • New BM_ARM_DETAILED_HAND parameter for the detailed hand. The old BM_ARM_DETAIL_HAND_RIGHT/LEFT are deprecated.
    • New BM_ARM_SHOULDER_RHYTHM parameter for controlling the shoulder rhythm. The old BM_ARM_SHOULDER_RHYTHM_RIGHT/LEFT are deprecated.
    • Added new BM_JOINT_TYPE_<joint>_<side> parameter for completely disabling joint and associated nodes in the lower extremity models. (See: for example BM_JOINT_TYPE_HIP_RIGHT)
    • New BM_LEG_MODEL parameter for setting the type of leg model used. The BM_LEG_RIGHT/LEFT are now only ON/OFF options.


  • Sign for the plantar flexion variable were reversed in some section of the model. This has been fixed.
  • Bug in Mannequin drivers for the neck, where velocities were not set correctly. (Thanks to Assoc. Prof. Michael Skipper Andersen for reporting this)
  • Fix small bug preventing StandingModelScalingDisplay from loading when using the Leg model.
  • Fixed the opacity of the patellar surface in TLEM models, which pointing erroneously to the opacity of the talus.
  • Fixed wrong symmetry of nodes on the C7 segment of full neck model.
  • Latissimus Dorsi 5 fascicle was missing in MuscleNames.any and thus from many symmetry measures.
  • Fixed a symmetry problem for the Deltoid muscles at the shoulder.
  • Fixed a symmetry problem for the Disc stiffness from L1 to L5
  • Fix white surfaces in examples with flat STL surfaces. For example Cross Trainer.
  • Fixed an issue preventing Standing Model from working with one leg.
  • Fixed a problem with the drawings of the bones in the Arm model which were not always symmetrical.
  • Fixed symmetry issues in scaling laws for scapula and clavicula, and humerus.
  • Fixed a bug where a the Pectoralis wrapping cylinder was not a included in the calibration study.
  • Fixed wrong sign for the AnklePlantarFlexion variable.
  • Added missing GeomScale and AnatomicalFrame for Ulna segment.


  • Old MoCap examples have been moved to Application/Examples/Deprecated
  • Removed the deprecated AMMR1.4 hip rotation sequences.
  • The GM-foot model. A new version of this in the pipeline. Contact us if you are interested in this work.
  • All older BodyModels which were deprecated in AMMR1.3