Diff of /CHANGELOG.md [000000] .. [38ba34]

Switch to unified view

a b/CHANGELOG.md
1
# Changelog
2
3
% A rendered version of the CHANGELOG is avaible here:
4
%    https://anyscript.org/ammr/beta/changelog.html
5
6
(ammr-3.1.0-changelog)=
7
## AMMR 3.1.0 (2025-03-31)
8
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.15094590.svg)](https://doi.org/10.5281/zenodo.15094590)
9
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-8.1.0-yellowgreen)](https://www.anybodytech.com/resources/customer-downloads/)
10
11
12
13
### 🔧 Changed:
14
15
*   Modified the Human-Ground residual implementation in MoCap models to use
16
    rotational measures configured for angular velocities. This change enhances
17
    the robustness of the residuals and makes the residual output easier to
18
    interpret geometrically, without affecting the results.
19
*   Updated the insertion and origin points of the Gluteus Medius to ensure
20
    correct moment arms for external rotation in specific postures. The posterior
21
    Gluteus Medius now twists inside the anterior part and attaches more
22
    anteriorly on the femoral trochanter.
23
*   The wrapping surface for muscles at the wrist has been changed from a cylinder
24
    to an ellipsoid. This lowers the risk of muscle via points penetrating the
25
    wrapping surface in postures involving both flexion/extension and
26
    abduction/adduction at the wrist.
27
*   Excluded force plates from the parameter identification study, as they were
28
    unnecessary. This change may slightly speed up the parameter identification
29
    process.
30
*   The coordinate system used when scaling the shank segment has been aligned
31
    with same reference frame used when scaling the thigh segment, instead of
32
    using the anatomical frame of the shank. Now both segments use the direction
33
    given by the femoral epicondyles as the lateral direction. This change
34
    ensures consistent scaling across the knee joint. 
35
36
### âž• Added:
37
38
*   Introduced a new class template,
39
    [`CreateCoMRefNode`](#Utilities.center-of-mass.createcomrefnode.createcomrefnode),
40
    for generating a reference node at the center of mass of a segment, aligned
41
    with its principal axes of inertia.
42
*   Added the `TRI(N)` macro to create a lower triangular (NxN) matrix.
43
*   Added the `TOTAL_POLYLINE_LENGTH(P)` macro to compute the total length of a
44
    polyline defined by a set of points.
45
46
### 🩹 Fixed:
47
48
*   Corrected the PelvisGround rotation drivers in the {ref}`Free Posture Static
49
    example<example_freeposture>`. The X and Z rotation drivers were previously
50
    mixed up and are now properly assigned.
51
*   Resolved an issue that prevented disabling the drawing of marker arrows in
52
    `CreateMarkerDriverClass` within MoCap models. The search string in
53
    `Main.ModelSetup.Views.All_MarkerArrows.Objects` has been updated to correctly
54
    identify the arrow drawing objects.
55
*   Fixed a spelling typo in the disc stiffness BM control statements. The
56
    `BM_TRUNK_*_DISC_STIFNESS` parameters have been renamed to `BM_TRUNK_*_DISC_STIFFNESS`.
57
    The misspelled parameter names have been deprecated.
58
*   The data points for the femoral epicondyles with respect to the shank in the
59
    neutral posture have been corrected. These values were not updated when the
60
    knee axis in shank was redefined in TLEM 2.2 and AMMR 3. This change has no
61
    influence on the default AnyBody Models, but it fixes an issue if the model
62
    was configured to use the {bm_constant}`special 'bony landmark' defined <_JOINT_TYPE_BONY_LANDMARK_>`
63
    joint axis configuration.
64
65
### Removed:
66
67
*   Removed the python hooks to check for modified AMMR folder. This feature was
68
    not used and has been removed to simplify the AMMR codebase.
69
70
(ammr-3.0.4-changelog)=
71
## AMMR 3.0.4 (2024-07-02)
72
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.12592455.svg)](https://doi.org/10.5281/zenodo.12592455)
73
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-8.0.4-yellowgreen)](https://www.anybodytech.com/resources/customer-downloads/)
74
75
### 🩹 Fixed:
76
* Fixed an issue in the {ref}`Bike Model example <example_bikemodel>` that
77
  included thoracic support in the full body model also.
78
* Fixed an issue with the visualization of the marker coordinate system arrows. They now
79
  correctly update while running running parameter identification in the MoCap models.
80
81
(ammr-3.0.3-changelog)=
82
## AMMR 3.0.3 (2024-06-10)
83
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.11191711.svg)](https://doi.org/10.5281/zenodo.11191711)
84
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-8.0.3-yellowgreen)](https://www.anybodytech.com/resources/customer-downloads/)
85
86
### 🩹 Fixed:
87
* Fixed a penetration warning for the pectoralis muscles when the thoracic
88
  segments are scaled very non-uniformly. The fix involves a small (5 deg)
89
  adjustment to the orientation of the pectoralis wrapping surface.
90
* Fixed default limits in [Range of Motion limits](#Utilities.Kinematic-limits.RangeOfMotionLimits_template.any)
91
  class template. The default limits for PelvisThoraxExtension, PelvisThoraxLateralBending,
92
  Right/LeftWristFlexion had the upper and lower limits flipped. This is now fixed and a 
93
  check is added in the class template to catch this kind of error.
94
* Fixed an issue where blinking Windows would appear when loading models stored
95
  in git repositories. This issue was caused by a python subprocess that queried
96
  the git repository for branch information.
97
* Updated the foot marker position in the Xsens protocol to accommodate the
98
  changes made to the foot anatomical frame in the TLEM 2.2 leg model. The
99
  R/LTOE and R/LTOE2 markers have been moved upwards by 1.5 cm.
100
101
(ammr-3.0.1-changelog)=
102
## AMMR 3.0.1 (2024-02-13)
103
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.10803883.svg)](https://doi.org/10.5281/zenodo.10803883)
104
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-8.0.1-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-8-0-1-11638_x64/)
105
106
107
This minor release of AMMR contains no updates to the models compared to the major AMMR 3.0.0 released the previous month. It only has a few minor changes to the documentation and new tolerances in the FDK models. 
108
109
### 🔧 Changed:
110
111
* Finer FDK tolerances for the {ref}`Knee Simulator example
112
  <example_kneesimulator>`, to take avantage of the improved robustness of the
113
  AnyBody FDK solver in version 8.0.1. 
114
115
116
(ammr-3.0-changelog)=
117
## AMMR 3.0 (2024-02-13)
118
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.10527958.svg)](https://doi.org/10.5281/zenodo.10527958)
119
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-8.0.0-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-8-0-0-11540_x64/)
120
121
122
### ✨ Highlights 
123
124
* Integrated pelvis, lumbar, and thorax models into a consistent trunk model in
125
  preparation for a full thoracic model in [AMMR 4](https://anyscript.org/ammr/beta/body/thoracic_model.html).
126
* Updated the leg model (TLEM 2.2) with improvements to the ankle complex, 
127
  shank orientation, and alignment of the patella tendon.
128
* Added new wrapping surfaces to the Achilles tendon around the 
129
  ankle in the TLEM 2.2 leg model.
130
* Made numerous improvements and fixes to the Body models, MoCap models,
131
  and application examples.
132
133
:::{Warning} Care must be taken when porting existing MoCap models to the 
134
new AMMR. Changes to the pelvic tilt, and changes to the foot anatomical
135
frame can cause MoCap markers on Pelvis and feet to have moved slightly.
136
137
If migrating models from AMMR 2.4, be sure to check markers on
138
pelvis and the foot segments.  The Y component may need to be adjusted to 
139
achieve same marker position and joint angle output.
140
:::
141
142
143
### 🩹 Fixed:
144
* Fixed a couple of bugs in the {ref}`Seated Human model <example_seatedhuman>`:  
145
  - Reactions for subtalar joint driver are switched off.
146
  - GHDriverLeft was using velocity value from GHExternalRotation instead of GHAbduction.
147
    This is now fixed.
148
* The `Main.ModelSetup.CreateVideo` operation was missing in some of the MoCap
149
  examples. This has been fixed. If you have this problem update the
150
  `CreateVideo.any` file in your application. 
151
* Fixed a wrapping problem with the posterior deltoid muscle in the 2-parameter
152
  shoulder calibration. 
153
* Fixed a bug in the LegPressMachine example that caused the model view to zoom
154
  to infinity.
155
* Improved the robustness of muscle recruitment for abdominal muscles (`buckle
156
  support`) by increasing the strength of recruited reactions on buckle segment
157
  balance.
158
* Updated scaling functions (`Scale`) for segments in trunk model (lumbar,
159
  thoracic and cervical) to account for pelvis segment morphing into leg pelvis
160
  coordinate system using `BM_LEG_TRUNK_INTERFACE` setting.
161
* Fixed a bug in the `AnatomicalFrame` of TLEM 2.2 foot and talus that caused the
162
  ARel to be constructed from unscaled landmarks.
163
* Fixed small inaccuracy in the mass scaling of the shank. It did not account for the
164
  mass of the patella segment which uses the same scaling coefficient as the shank.
165
* Visualizaiton of muscles in AMMR now use the builtin `.viewMuscle` drawing objects 
166
  in the muscle class. Hence, all manually created `AnyDrawMuscle` objects, usually named
167
  `DrwMus` have been removed. 
168
* The kinematic start guess for left patalla joint has been adjusted to improve
169
  robustness of the kinematic solver. This does not changed the result of
170
  models. 
171
172
173
### âž• Added:
174
* Added two small helper code macros:
175
  `NON_UNIQUE_VALUES()`/`NON_UNIQUE_POINTERS()` for finding duplicate
176
  (non-unique) entries in arrays of values and pointers.
177
178
* Added new set of hip joint measures (`Interface.Right.HipISB`) that strictly
179
  follow the International Society of Biomechanics' (ISB) definitions. These
180
  measures are similar to existing angles but do not have zero hip-flexion in
181
  neutral position due to different definition of pelvis coordinate system with
182
  respect to a plane defined by ASIS-PSIS points.
183
184
* Segments in trunk model (lumbar, thoracic and cervical) now explicitly define
185
  a `ScalingNode` node indicating coordinate system for segment scaling.
186
187
* Improved error message when MoCap markers in marker protocol are missing from
188
  C3D file.
189
190
* Add an option to override the default kinematic joint limits in the MoCap
191
  framework
192
193
### 🔧 Changed:
194
195
* The trunk joint reaction force in `SelectedOutputs`
196
  is now expressed in new reference nodes that are aligned with the vertebral body.
197
  Therefore, the names of the outputs now include CompressionForce and 
198
  ShearForce. The new reference nodes are created inside the joint node on the proximal
199
  segment. The implementation from AMMR 2.4 can be enabled by using the compatibility
200
  switch: `#define BM_COMPATIBILITY_24_TRUNK_SELECTED_OUTPUTS_JRF ON`
201
202
* Adjustments to pelvic tilt have changed the position of MoCap markers on the
203
  pelvis segment. This mostly affects markers with hardcoded positions.
204
  Particularly PSIS markers furthest posterior from the origin between ASIS.
205
  When migrating from AMMR 2.4 models without adjusting marker positions, PSIS
206
  markers may move 2 cm lower.
207
208
  - Most [non-MoCap model examples](#example-gallery)
209
    have been updated to account for the new pelvic tilt value. Either by using the 
210
    `AnatomicalFrameTrunk` reference frame in the pelvic driver or by adjusting the 
211
    Pelvis-Thorax Extension slightly.
212
213
* The Twente Lower Extremity Model (TLEM) 2 leg model has several updates and is
214
  now designated as [TLEM 2.2](#TLEM2-v2.2).
215
216
  - The ankle complex and the knee joint axis have been redefined to compensate for
217
    the non-neutral position in which the cadaver was scanned. This improves the 
218
    alignment of the tibia, talus, and calcaneus bones. The updated knee joint ensures 
219
    that the patella tendon is straight in the neutral position. The net effect is 
220
    rotation of the tibia about its long axis with the feet still pointing in the 
221
    same direction in the neutral position. 
222
    
223
  - Wrapping surfaces have been added to the Achilles tendon around the ankle in
224
    the TLEM 2.2 leg model, giving a more even ratio of moment arms between
225
    the soleus and gastrocnemius muscles. Hence, gastrocnemius is recruited
226
    less, especially during downhill walking and stair descent, solving the
227
    tendency of the model to over-predict the knee contact forces at toe off.
228
    This is the first of a number of improvements to the leg model by Dr. Enrico
229
    De Pieri, who is working on a publication on improvements and validation of
230
    the TLEM 2 leg model. 
231
  - The foot and talus models in TLEM 2.2 leg model have several updates in
232
    preparation for the release of advanced multi-segment foot models in the
233
    future:
234
235
    - The coordinate system of the talus is updated to be coincident with the foot
236
      coordinate system. A new reference node, `TalusCompatibilityFrameAMMR24`,
237
      is created in the talus segment to be consistent with the previous
238
      coordinate system for backwards compatibility.
239
    - Subtalar and ankle joint parameters for the talus have been updated to be
240
      expressed in the new coordinate system. The implementation of the joints
241
      is still consistent with the previous implementation.    
242
    - The anatomical frames of the foot and talus are updated and defined using
243
      bony landmarks on the foot. This updates the neutral position of the foot
244
      and talus. This will also update the ankle plantarflexion and subtalar
245
      joint angles. 
246
    - The malleoli coordinates in the foot coordinate system have been fixed to
247
      match the malleoli on the shank in the neutral position.
248
    - The model tree has been updated. The talus segment is moved inside the
249
      foot segment. For backwards compatibility, a pointer to the talus segment
250
      still exists outside the foot segment.
251
252
  - The implementation of the TLEM model has been split into two separate folders,
253
    `LegTLEM/` and `LegTLEM1/`. All references to TLEM 1 code have been removed in
254
    the code implementing the TLEM 2 model. 
255
256
  - The TLEM 1 model now triggers a deprecation warning suggesting using TLEM 2.
257
   
258
* The InverseDynamics analysis in MoCap models now uses the first step of Marker
259
  tracking as a start guess (initial conditions)  
260
  for the kinematic solver. This improves robustness in certain cases.
261
262
* The marker protocol in the {ref}`"ADL gait (MoCap model)"
263
  <sphx_glr_auto_examples_MoCap_plot_ADL_Gait.py>` was updated/tweaked to
264
  improve the robustness of the model. Some special exceptions were added to
265
  trials where we discovered that some markers were swapped by accident in the
266
  original open access dataset.
267
268
* Scaling laws defined by the `BM_SCALING` setting have been updated to calculate
269
  offsets between different scaling regions and apply them at load time. Scaling
270
  remains the same, but users can now create scaling functions that account for
271
  offsets between regions with different scaling.
272
273
* Glenoid reaction forces are now expressed in the coordinate system of the glenoid
274
  cup instead of the general scapula coordinate system. Variables
275
  `GlenoHumeral_DistractionForce`, `GlenoHumeral_InferoSuperiorForce`,
276
  `GlenoHumeral_AnteroPosteriorForce` represent three directions given by the
277
  glenoid cup. Variables may differ slightly even if the force remains the same.
278
279
* Resolved inconsistencies in arm muscle parameters. The same underlying parameters
280
  are now used for both simple and 3-element muscle models.
281
282
* MoCap marker protocols: Users must now explicitly specify a coordinate system
283
  relative to which markers are placed on the segment using the 
284
  [`PlaceMarkerAt`](#MoCap.Markers.CreateMarkerDriverClass.CreateMarkerDriver:PlaceMarkerAt) 
285
  argument in the class template. Previously, this defaulted to the `AnatomicalFrame` of
286
  the segment.
287
288
* The organization of segmental scaling functions was reworked and now configured
289
  slightly simpler. This modification is expected not to affect users working
290
  with default and non-default scaling laws and patient-specific morphing.
291
  Additionally, all spinal segments share a scaling reference frame.
292
293
* We updated how the class `AnySurfCylinderFit` is used in the {ref}`Knee
294
  Simulator example <example_kneesimulator>`. The deprecated way of using the
295
  `AnySurfCylinderFit` has been changed. Since `AnySurfCylinderFit` is now a
296
  subclass of `AnyRefNode`, it should no longer be nested inside another
297
  parent reference frame to provide the pos `sRel` and orientation `ARel`. This
298
  fixes a number of deprecated warnings that would have triggered with AnyBody version 8. 
299
300
* Added the new `AnatomicalFrameTrunk` reference frame to the pelvis segment consistent
301
  with anatomical frames in the rest of the trunk model. All joint angles relative
302
  to the pelvis segment now use this frame. This aligns the neutral position of
303
  the model with the neutral position of the trunk dataset and results in more
304
  pelvic tilt in the neutral position, better reflecting reported values in
305
  literature. Existing `PelvisSeg.AnatomicalFrame` defined by the ASIS and pubic bony
306
  landmarks remains unchanged.
307
308
* Updated trend validation in ["Wilke Spine Pressure validation
309
  models"](example_wilkespinepressure) to reflect changes to the thoracic model
310
  and the pelvis frame. Although absolute pressures in the spine have changed,
311
  trends (relative changes in spine pressure between models) remain the same.
312
313
* Reduced discretization (number of elements) of the pectoralis major and
314
  semispinalis muscles for consistency with textbook anatomy. Pectoralis no
315
  longer has its origin on rib 2, and semispinalis no longer inserts on the
316
  lumbar region.
317
318
* Refactored the implementation of muscle parameters in the arm model. All
319
  parameters are now given as muscle volume, optimal fiber length, and tendon
320
  slack length. Physiological cross-sectional area (PCSA), previously a
321
  hardcoded parameter, is now an intermediate value used for calculating muscle
322
  strength from muscle volume and optimal fiber length.
323
324
  This new structure allows for overwriting the complete set of muscle volumes with
325
  an alternative dataset.
326
327
* The [`MarkerName`](#MoCap.Markers.CreateMarkerDriverClass.CreateMarkerDriver:MarkerName) 
328
  argument in the [`CreateMarkerDriver`](#MoCap.Markers.CreateMarkerDriverClass.CreateMarkerDriver)
329
  template for MoCap models is no longer necessary. The argument can still be used 
330
  if the marker class and data entry in the C3D file differ.
331
332
* Updated the implementation of muscle parameters section in models to use the new
333
  `??=` (optional assignment) operator introduced in AnyBody 7.4.1. This allows
334
  for direct overriding/redefinition of muscle parameters and volumes.
335
336
  For example, muscle volumes can be overridden with new data.
337
  
338
  ```{code-block} AnyScriptDoc
339
  Main.HumanModel.BodyModel.Right.Leg.ModelParameters.Muscles = {
340
     SoleusMedialis.MuscleVolume = 540; //ml
341
     SoleusLateralis.MuscleVolume = 450; //ml
342
  };
343
  ```
344
345
* Updated methods for distributing muscle volume among discretized muscle
346
  elements. This allows for different optimal fiber lengths among elements of a
347
  muscle. If one element has a smaller optimal fiber length (e.g., through
348
  calibration), the volume of muscle elements is redistributed, and PCSA remains
349
  constant across elements. 
350
  
351
  If the optimal fiber length of different elements is
352
  the same, this method yields the same result as before.
353
  
354
* Renamed the folders holding muscle models from `MusPar` to `MuscleModels` for
355
  better clarity.
356
357
* The `CameraClassTemplate.any` include file in model utilities has been renamed to
358
  [`VideoLookAtCamera.any`](#Video-tools.Video.VideoLookAtCamera.any) to have the same name as the class template it
359
  contains. 
360
361
### 🧹 Removed:
362
363
- The template `DEFAULT_PARAMETER_FOLDER` has been removed. It is no longer needed 
364
  since the same functionality is now provided by the `??=` operator.
365
366
- The three scaling laws `_SCALING_UNIFORM_EXTMEASUREMENTS_`,
367
  `_SCALING_LENGTHMASS_EXTMEASUREMENTS_`,
368
  `_SCALING_LENGTHMASSFAT_EXTMEASUREMENTS_` have been deprecated. They are
369
  superseeded by the "Statistical Scaling Plugin" which cover the same
370
  functionality. The AMMR guide on scaling have been updated to reflect this
371
  change.
372
373
374
375
376
(ammr-2.4-changelog)=
377
## AMMR 2.4.4 (2023-04-03)
378
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.7764841.svg)](https://doi.org/10.5281/zenodo.7764841)
379
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.4.4-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-4-4-8907_x64/)
380
381
382
This version of AMMR adds a number fixes and tweaks to the body models which
383
improves robustness of various kinematic and recruitment solvers. 
384
385
**Added:**
386
387
* Added kinematic joint angle limits in MoCap models for elbow and wrist joints
388
  to prevent the kinematic solver from finding postures that are physiologically
389
  impossible, such as bending the elbow backwards. These limits are active where
390
  marker tracking solver would occasionally find a local minima with
391
  unphysiological posture.
392
393
* Tables with body model configuration parameter in the AMMR documentation now
394
  contain links showing their options. For example, see the page on {doc}`Leg
395
  model parameter </bm_config/leg>`.
396
397
**Fixed:**
398
399
* Fixed an issue with wrist joint segment's load time position (start guess).
400
  This greatly improves kinematic robustness of all models with arms as it
401
  creates a 'universal-joint' mechanism for wrist movement.
402
403
* Further fixes made to pectoralis wrapping segment's robustness by optimizing
404
  initial load time positions to ensure model kinematics can more easily solve.
405
406
* Fixed missing `LoadParameters` operation in `LoadAndReplay` operation in MoCap
407
  examples.
408
409
* Fixed a problem with oblique muscles introduced in AMMR 2.4. A weak residual
410
  force was added to Y rotation of buckle to eliminate this problem.
411
412
* Corrected wrong order of nonlinear intervertebral disc stiffness polynomial
413
  coefficients (affects only those who used polynomial disc stiffness).
414
415
* Corrected small asymmetry in function for nonlinear intervertebral disc
416
  stiffness in coronal plane (affects only those who used polynomial disc
417
  stiffness).
418
419
420
## AMMR 2.4.3 (2023-01-27)
421
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.7572879.svg)](https://doi.org/10.5281/zenodo.7572879)  [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.4.3-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-4-3-8899_x64/)
422
423
424
**Added:**
425
426
* Added a few utility helper class templates
427
  
428
  - `Template_OperationSaveValues`
429
  - `Template_OperationLoadValues` 
430
  - `Template_OperationUpdateValues`
431
432
  to make it easier to do common class operations without manually having to
433
  create the operations with macros.
434
435
  To create an operation which loads a file, do: 
436
437
  ```{code-block} AnyScriptDoc
438
  Template_OperationLoadValues LoadAnySetFile = {
439
     FileName= "MyFile.anyset";
440
  };
441
  ```
442
* A more helpful error message is now printed when MoCap markers in the marker
443
  protocol are missing the C3D file.
444
445
**Changed:**
446
* The load-time position of the box in the {ref}`BVH_BoxLift model
447
  <sphx_glr_auto_examples_Mocap_plot_BVH_BoxLift.py>` is now calculated using
448
  the position of the hands. Also,
449
  `Main.ModelSetup.EnvironmentParameters.GravityDirection` defined in the
450
  `box.any` file is now calculated automatically from
451
  `Main.ModelSetup.LabSpecificData.Gravity` defined in the `LabSpecificData.any`
452
  file. These changes should make the model more robust when dealing with
453
  different BVH files.
454
* It is no longer necessasry to supply the `MarkerName` argument in the
455
  CreateMarkerDriver template MoCap models. The argument can still be used if
456
  the marker name and the data entry in the c3d file are different.
457
* The references to muscle models in the joint muscles of the detailed hand have
458
  been renamed to avoid future naming conflicts.
459
* The "via-points" for the Psoas Major muscle have been adjusted to ensure that
460
  the muscles can better act the role of stabilizing muscle for the lumbar
461
  spine.
462
463
**Fixed:**
464
* The `Main.ModelSetup.CreateVideo` operation was missing in some of the MoCap
465
  examples. This has been fixed. If you have this problem please update the
466
  `CreateVideo.any` file in your application.
467
* Fixed a wrapping problem with the posterior deltoid muscle in the
468
  two-parameter shoulder calibration. 
469
* Fixed a bug in the LegPressMachine example that caused the model view to zoom
470
  to infinity. 
471
* The robustness of muscle recruitment with the abdominal muscles (`buckle
472
  support`) was futher tweaked by increasing the the strength of the recruited
473
  reactions on the balance of the buckle segment.  
474
475
476
## AMMR 2.4.2 (2022-07-08)
477
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.6809697.svg)](https://doi.org/10.5281/zenodo.6809697) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.4.2-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-4-2-8845_x64/)
478
479
AMMR version 2.4.2 contains only a few minor changes and fixes compared to
480
version 2.4.1.
481
482
483
**Changed:**
484
485
* Changed defintion (sign) of the `SkullThoraxRotation` and
486
  `SkullThoraxLateralbending` variable in the `interface` folder. They are now
487
  consistent with similar difinitions in the rest of the spine.
488
* The location of the foot drawing generated by the `OptimizeBVH_Origin` class
489
  template for visualization of the target location and orientation of "LFOOT"
490
  and "RFOOT" has been updated to better match the expected actual foot
491
  location.
492
 
493
494
**Fixed:**
495
496
* Fixed the {ref}`Evaluate moments arms example
497
  <sphx_glr_auto_examples_Validation_plot_EvaluateMomentArms.py>` where a few
498
  branches of the latisimus dorsi, pectoralis major and trapezius muscles were
499
  not included. 
500
* Fixed a problem that caused the `OptimizeBVH_Origin` class template to fail to
501
  load if the same human segment was used more than one time in the same model.
502
503
  
504
505
## AMMR 2.4.1 (2022-05-30)
506
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.6533249.svg)](https://doi.org/10.5281/zenodo.6533249) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.4.1-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-4-1-8830_x64/)
507
508
509
**New example models:**
510
511
- Added a model using a new class template to optimize the origin of BVH model.
512
  This model shows how to optimize the origin of the BVH model such that a
513
  target segment of the human model (Left/Right Foot/Hand) hits a known position
514
  and orientation in a given time interval while following the recorded motion
515
  from the trial. <{ref}`See more
516
  <sphx_glr_auto_examples_Mocap_plot_BVH_OptimizeOrigin.py>`>
517
518
519
**Fixed:**
520
* Fixed a small syntax error which caused the BVH example `S1/S01_Trial02/` to
521
  fail loading. 
522
* Fixed a problem with the "interface" morphing between the TLEM2 pelvis and
523
  Trunk Pelvis at the tip of the scarum bone. This bug was visible when using
524
  `#define BM_LEG_TRUNK_INTERFACE _MORPH_LEG_TO_TRUNK_`, (i.e. when using the
525
  trunk pelvis morphology with the TLEM2 model), which is not the default. 
526
* Fixed missing calibration for the new latissimus dorsi elements introduced in
527
  AMMR 2.4. This fix also ensures that all latissimus dorsi elements are
528
  calibrated in the same arm posture.
529
  
530
531
**Changed:**
532
533
* The anyscript implemenatation of the acromio-clavicuala, sterno-clavicular,
534
  gleno-humeral, and elbow joints have been refactored. They now use explicit
535
  AnyScript joint classes (e.g. `AnySphericalJoint`) instead of implementing the
536
  joints directly with measures and constraints. This simplifies the
537
  implementation, but also changes the structure of the model tree. However, it
538
  has no influence the kinematics of the model, which remains identical. 
539
540
  The new names of the explicit joint objects in `ShoulderArm.Jnt` are:
541
542
  * `SternoClavicularJoint` (-3 DOF)
543
  * `AcromioClavicularJoint` (-3 DOF)
544
  * `GlenoHumeralJoint` (-3 DOF)
545
  * `HumeroUlnarJoint` (-5 DOF)
546
  * `HumeroRadialJoint` (-1 DOF)
547
  * `ProximalRadioUlnarJoint` (-2 DOF)
548
  * `DistalRadioUlnarJoint` (-2 DOF)
549
550
The `HumeroUlnarJoint` is the elbow flexion extension, and together
551
`HumeroRadialJoint`, `ProximalRadioUlnarJoint` and `DistalRadioUlnarJoint` adds
552
5 constraints leaving the forearm rotation degree of freedom. 
553
   
554
  
555
**Added:**
556
* A few previously renamed nodes in pelvis were added back to improve backwards
557
  compatibility when loading old seating models. 
558
559
560
## AMMR 2.4 (2022-04-28)
561
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.6471999.svg)](https://doi.org/10.5281/zenodo.6471999) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.4.0-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-4-0-8782_x64/)
562
563
564
**New example models:**
565
566
- Added a new trunk exoskeleton concept model for simulating assistance at the
567
  trunk in a box lifting task. This simple example shows how to apply assistive
568
  torque directly to the human model. <{ref}`See more
569
  <sphx_glr_auto_examples_Other_plot_ExoConceptTrunk_BoxLift.py>`>
570
- Added a new exoskeleton concept model for simulation-driven conceptual design
571
  of exoskeletons. The model was developed by Prof. John Rasmussen from Aalborg
572
  University. Please see the [web
573
  cast](https://www.anybodytech.com/download/simulation-driven-conceptual-design-of-exoskeletons/)
574
  for more details. <{ref}`See more
575
  <sphx_glr_auto_examples_Other_plot_ExoConcept_BoxLift.py>`>
576
- Added a new femoral torsion tool to apply femoral torsion to the TLEM2.0 leg
577
  model. This model tool was developed by Dr. Enrico De Pieri from University of
578
  Basel Children’s Hospital (UKBB). Please see the documentation or the [web
579
  cast](https://www.anybodytech.com/download/modeling-subject-specific-femoral-torsion-for-the-analysis-of-lower-limb-joint-loads/)
580
  by Enrico on his work and publication on femoral torsion. <{ref}`See more
581
  <sphx_glr_auto_examples_Orthopedics_and_rehab_plot_FemoralTorsionTool.py>`>
582
- Added a new knee force model example. The model shows how to calculate a
583
  simple estimate of the medial and lateral knee force. <{ref}`See more
584
  <sphx_glr_auto_examples_Orthopedics_and_rehab_plot_KneeForcesExample.py>`>
585
- A new box lifting motion capture model has been added. The model is based on
586
  data from an inertial measurement unit based suit
587
  ([Xsens](https://www.movella.com/products/wearables/xsens-mtw-awinda)), and
588
  illustrates how to connect MoCap models with objects in the environment.
589
  <{ref}`See more <sphx_glr_auto_examples_mocap_plot_bvh_boxlift.py>`>
590
591
592
**New features:**
593
594
- Many AnyScript example models now include an option to automatically create a
595
  video from the model. To use this functionality find and run the new
596
  `VideoTool.CreateVideo` operation under the Study folder. This will
597
  automatically run the example model, output still frames, and combine them
598
  into a video afterwards. The script can easily be adapted and moved to other
599
  examples. 
600
- Two new utility macros, which make it easier to create 3D grid arrays, have
601
  been added to the model repository. `MESHTRIPLES(xarr, yarr, zarr)` and
602
  `MESHGRID(xarr,yarr,zarr)`. i.e. for creating arrays of all points in a 3D
603
  grid array. More information in the file: {menuselection}`Body --> AAUHuman
604
  --> BodyModels --> GenericBodyModel --> Helper.ClassTemplates.any`
605
606
- Added a warning when the glenohumeral flexion/abduction in the mannequin
607
  values can cause problems as start guess for the kinematic solver. A small
608
  automatic pertubation of the Humerus orientation (`Axes0`) is also added in
609
  these cases so the shoulder rhythm will work as expected. 
610
- There is a new option to override more settings in the
611
  `DefaultMannequinDrivers` section. Now the driver type (`CType=Hard/Soft`),
612
  can be overridden directly by the users.
613
- Fixed a lack of robustness with muscle recruitment of the abdominal muscles
614
  (`buckle support`). Muscle recruitment could previously fail with high lumbar
615
  flexion. A small support "artificial muscle" has beeen added to the buckle
616
  segment, preventing muscle recruitment from failing. 
617
618
**Fixed:**
619
620
- Improved the selected output by adding the m. Semimembranosus and m.
621
  Semitendinosus contributions to the knee flexor group for both muscle activity
622
  (`KneeFlexorMuscleActivity`) and muscle force (`KneeFlexorMuscleForce`).
623
- Updated and improved origin of the hamstring muscles. The muscles biceps
624
  femoris, semitendinosus and semimembranosus have been updated to improve their
625
  moment arms in certain lunge movements. The origin points at pelvis has been
626
  moved down a bit to ensure the muscles wraps correctly in lunge movements,
627
  while maintaining the same moment arm in gait etc.
628
- Fixed a bug in scaling where the mass of the trunk model pelvis was used in
629
  some cases instead of the pelvis mass from the leg model. This could cause a
630
  slightly incorrect mass to be used for the pelvis segment.
631
- Fixed wrong sign for the WristJoint flexion variable. The values users provided in the mannequin 
632
  section was incorrectly interpreted as wrist extension.
633
- Fixed a problem where custom scaling and {bm_constant}`_SCALING_XYZ_` would 
634
  prevent the model from loading.
635
- Fixed some logical issues with the `ContactSurfaceDistanceAndVelocityDepLinPush.any` file.
636
   
637
   - Fix length calculation and drawing of the normal force
638
   - Fixed an extrapolation error when changing the internal setting
639
     `_SMOOTHING_FUNCTION_PROFILE_` to `FUNC_PROFILE_BSPLINE`. We now cap the
640
     height ratio to only be in the interpolation area. Values outside this area
641
     infer that no contact is present.
642
643
- Refactored the way Trunk nodes are mirrored between left and right. This is
644
  more consistent with the remaining body parts and handled in the cadaver data
645
  files.
646
- Fixed a problem in MoCap models where calibration studies were not run
647
  automatically in models that only had 3-element muscles on the upper body.
648
- The {ref}`example to evaluate moments arms <sphx_glr_auto_examples_Validation_plot_EvaluateMomentArms.py>` 
649
  now works when the shoulder rhythm is enabled. 
650
651
652
**Changed:**
653
654
- Improve the trunk model's strength for trunk external rotation. This change
655
  improves the implementation of the internal/external obliques and latissimus
656
  dorsi muscles. More branches are added to the internal obliques and the
657
  geometry is updated to better match anatomical text books. Likewise, the
658
  latissimus dorsi muscles is discretized into more branches so it has branches
659
  inserting on every vertebra.
660
- The `clavicle` entry in the `Anthropometric.SegmentMasses` folder have been
661
  renamed to `shoulder`. This makes it consistent with the rest of varaibles in
662
  the folder, and correctly reflect that the mass is assigned to both the
663
  scapula and clavicle segment. 
664
- The `OptimalFiberLength` and `TotalTendonLength` in the TLEM leg models are no
665
  longer 'DesignVar' when the parameters are also calibrated. This prevents the
666
  huge amount of warnings when calibrating the leg muscles.
667
- The `L5LContactNode`,`L4LContactNode`,`L3LContactNode`,
668
  `L4LContactNode`,`L1LContactNode` nodes were scaled using the Right node
669
  Z-axis. This is now changed to use the Left node Z-axis.
670
- The trunk model has been restructured in preparation for a full Thoracic
671
  model. This means that all the vertebra and ribs have been created in the
672
  model structure, but only as `AnyFolder&` references to the single rigid
673
  thorax segment.
674
  
675
  :::{note} A number of nodes have been renamed in the process. If you have
676
  problems loading old model due to missing nodes, please consult the new model
677
  examples to find the new names. 
678
  :::
679
680
- Updated the neutral scapula position and scapula sliding. The default neutral
681
  scapula position (medial rotation) has been updated to a more realistic
682
  position. Additionally, the node at scapula TS point, on which the scapula
683
  slides, has been moved to provide a more realistic clearance between the
684
  scapula and the ellipsoid sliding surface representing thorax.  
685
  Thanks to Johanna Menze (@menzejo) from the University of Bern for updating
686
  the model.
687
- Renamed a few variables named `r` which could collide with built-in `r`
688
  variable. 
689
690
**Removed:**
691
692
- The previously deprecated BM keyword `_LEG_MODEL_Leg_` has been completely
693
  removed.
694
- The special mannequin driver switches for the old leg model
695
  (`BM_MANNEQUIN_DRIVER_ANKLE_EVERSION_RIGHT/LEFT`) have been deprecated.
696
  Instead the switch used for the TLEM1/2 leg models
697
  ({bm_statement}`BM_MANNEQUIN_DRIVER_ANKLE_SUBTALAR_EVERSION_RIGHT`) can now be
698
  used for all leg models. 
699
- Renamed all deprecated ligament class names. `AnyViaPointLigament`->
700
  `AnyLigamentViaPoint`.
701
702
## AMMR 2.3.4 (2021-07-05)
703
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.5060249.svg)](https://doi.org/10.5281/zenodo.5060249) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.3.4-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-3-4-8518_x64/)
704
705
**Fixed:**
706
707
- Improved the intial guess for Latissimus dorsi wrapping, so the wrapping
708
  solutions becomes more robust to extreeme starting postions.
709
- Fix a problem with `<ANYBODY_PATH_MODELUTILS>/Reactions` support files
710
  preventing models from loading correctly. Thanks to prof. Michael Skipper
711
  Andersen (Aalborg University) for finding this bug.
712
713
**Added:**
714
715
- Add small helper class template `DriverBasedOnLoadPos` which makes it easy to
716
  add constraints between two segments based on their load time positions.
717
- Refactor the way pelvis rotations are measured in the interface folder. This
718
  allows the user to override the default implicit global reference frame and
719
  thus output pelvis rotation relative to a custom frame.
720
- Add a new ability to evaluate trunk strength into the built-in studies for
721
  {ref}`joint strength evaluation
722
  <sphx_glr_auto_examples_Validation_plot_EvaluateJointStrength.py>`.
723
- New ligaments connecting the Sacrum and Pelvis segments are added. They are
724
  enabled togehter with the ligaments on the lumbar spine through the
725
  `BM_TRUNK_LUMBAR_LIGAMENTS` define statement.
726
727
**Changed:**
728
729
- The {ref}`"ADL gait (MoCap model)"
730
  <sphx_glr_auto_examples_MoCap_plot_ADL_Gait.py>` has been updated with most
731
  recent improvements from our internal projects. The marker protocol has been
732
  adjust and a lot of small data problems (marker dropouts etc) has been fixed.
733
- The posture of the {ref}`standing lift example
734
  <sphx_glr_auto_examples_ADLs_and_ergonomics_plot_StandingLift.py>` have been
735
  modified to make the example more robust.
736
- The `Tuber_ischiadicum` node to `Seat_contact` as it was misaligned to the
737
  actual bony landmark position. New `Tuber_ischiadicum` nodes have been added
738
  at the bony landmark. The renaming also makes it easier to identify what the
739
  node is used for across the ammr models.
740
- Changed the way the arm joint moment measures are calculated. This affect the
741
  output when no muscles are added to the model, and the  
742
  moments are now calculated and expressed in same way as when muscles are
743
  included. The moments are expressed in a fixed proximal reference frame
744
  instead of using the euler axis of rotation which may not be othogonal. All
745
  moment contribution also now found using search function which will be more
746
  robust. 
747
748
## AMMR 2.3.3 (2021-03-24)
749
750
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.4616316.svg)](https://doi.org/10.5281/zenodo.4616316) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.3.3-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-3-3-8440_x64/)
751
752
753
754
**Fixed:**
755
756
  `OptimizeAnthropometricsOnOff.any` preventing models with only one leg
757
- Fix a problem single leg models in AnyMocap. The file
758
  included from being loaded.
759
- Removed two unused measures with references to thorax in the scapula and
760
  clavicula segments. The references could cause problems for ´AnyKinCOM\` which
761
  uses search when including segments. Thanks to Handa Kensuke from Terrabyte
762
  helping fix this error.
763
- Fix bug in initial wrapping guess for Triceps LH muscle wrapping. This bug
764
  could cause the left side Triceps LH muscle to wrap incorrectly at shoulder.
765
- Fix calibration of of element 4 and 5 of the latissimus dorsi muscle. These
766
  two stands of the muscles where not included correctly in the calibration
767
  study when using the three element muscles model.
768
769
**Changed:**
770
771
- The settings of the {ref}`Knee Simulator example <example_kneesimulator>` has been
772
  tweaked to make it run faster.
773
774
## AMMR 2.3.2 (2021-01-21)
775
776
777
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.4305559.svg)](https://doi.org/10.5281/zenodo.4305559) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.3.2-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-3-2-8354_x64/)
778
779
780
781
782
```{rst-class} without-title
783
```
784
785
:::{warning} **Model results can change!**
786
787
A bug related to scaling was fixed in AMMR 2.3.2. This affect models using the
788
{bm_constant}`length-mass-fat<_SCALING_LENGTHMASSFAT_>` and
789
{bm_constant}`uniform <_SCALING_UNIFORM_>` scaling, when only Body Height is
790
specified. The results can change as models more accurately match the
791
requested body height.
792
:::
793
794
795
**Fixed:**
796
797
- Fixed tibialis anterior/posterior variables in the `SelectedOutput` section.
798
  The force values were represented as the `max()` of the muscle elements
799
  instead of the `sum()`. Thanks to Dr. Enrico De Pierie from University
800
  Children's Hospital Basel for fixing this issue.
801
- Fixed a bug when using {bm_constant}`_SCALING_LENGTHMASSFAT_` and
802
  {bm_constant}`_SCALING_UNIFORM_` and only specifying the body height as input.
803
  The segment lengths were set to slightly smaller values, which caused the
804
  total body height to be less than what was used as input. The bug occurred
805
  since a standard body height in some 'AnyMan' files was assumed to be 1.8 m
806
  instead of the correct 1.75 m. This fix aligns the results with
807
  {bm_constant}`_SCALING_XYZ_` (used in the MoCap models) and
808
  {bm_constant}`_SCALING_STANDARD_` (50 percentile) which were both correct.
809
- Fixed a problem with foot support in the {ref}`"Spine Pressure validation
810
  model" <sphx_glr_auto_examples_Validation_plot_WilkeSpinePressure.py>` lying
811
  flat on the back. The foot is now supported in the right direction.
812
- Fixed a problem with the Standing Model template which was using an alternate
813
  mode where foot constraints were disabled.
814
- Fixed a problem with the ADL gait MoCap example, where the batch processing
815
  script would report some trials as failed even if they succeeded correctly.
816
- Use correct times in the Xsens example MoCap (trial "S01-Trial2"). The model
817
  stopped walking after a number of time steps
818
  because `tEnd` was set after the last data point in the BVH data file.
819
- Fixed/improved the wrapping surface for the subscapularis muscles. The muscles
820
  can no longer slide off
821
  its wrapping surface in extreme range of motions.
822
- Fixed infraspinatus muscle wrapping for high arm positions. This fix adds a
823
  torus for infraspinatus wrapping on the humerus.
824
  It fixes a problem where infraspinatus could slide of its wrapping surface in
825
  high arm postures.
826
- Fix problem with latissimus dorsi muscle wrapping in over-head arm postures. A
827
  new wrapping ellipsoid has been added at the humeral head.
828
829
**Changed:**
830
831
- The rectus femoris muscle wrapping surface at the hip has been adjusted to
832
  prevent collision between the rectus femoris origin and the wrapping surface.
833
  Further, the surface is now used for both the straight and reflected head of
834
  the rectus femoris.
835
- Increase the discretization (StringMesh) on approx 30 muscles to improve
836
  wrapping.
837
- The results for the {ref}`"Wilke Spine Pressure"
838
  <sphx_glr_auto_examples_Validation_plot_WilkeSpinePressure.py>` validation
839
  model has been updated due to the fix for the
840
  {bm_constant}`_SCALING_UNIFORM_`. The updated model improved the validation
841
  results slightly.
842
- The new large scale {ref}`" MoCap model (ADL gait)"
843
  <sphx_glr_auto_examples_MoCap_plot_ADL_Gait.py>` has been updated so the
844
  results of running all standing reference trials have been added to the model.
845
  This means that all the dynamic trials will work even if the user forgets to
846
  first run the standing reference trials. It is still necessary to run the
847
  standing reference trials again if any changes are made to the model.
848
- The wrapping for the "Triceps Long Head" muscle has been updated at the
849
  humeral head to avoid the muscle wrapping incorrectly in over-head arm
850
  postures. This fix also adds a via point at the middle of the humerus to make
851
  the wrapping solution more robust.
852
- The `VideoLookAtCamera` camera class template in the AMMR now saves videos as
853
  they look in the model view. I.e. if things are hidden in the model view they
854
  will not show up in the video. This feature is enabled by a new setting
855
  `AnyCameraLookAt.RenderUserInterfaceViewState` in AnyBody version 7.3.2. The
856
  old behavior can be restored by setting
857
  `Camera.RenderUserInterfaceViewState=Off;` in the class template.
858
  
859
 
860
## AMMR 2.3.1 (2020-09-30)
861
862
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.4023956.svg)](https://doi.org/10.5281/zenodo.4023956) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.3.1-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-3-1-8217_x64/)
863
864
**Added:**
865
866
- All models now run with the new wrapping solver by default, which makes all
867
  models with wrapping muscles run much faster. Hence the
868
  `AnyBody73_ExperimentalShortestPathSolver` setting is deprecated and no
869
  effect. The old wrapping algorithm can be enabled (not recommended) by
870
  setting:
871
872
  ```{code-block} AnyScriptDoc
873
  System.Compatibility.ShortestPathSolverVersion = 2; // 4 is default (new wrapping)
874
  ```
875
876
- New dedicated wrapping ellipsoid for Triceps at the glenohumeral head. This
877
  addition solves a few problems with overhead arm postures.
878
879
**Changed:**
880
881
- Improvements to the new {ref}`"ADL Gait"
882
  <sphx_glr_auto_examples_MoCap_plot_ADL_Gait.py>` example. The model now has
883
  muscles enabled and the marker protocol has been adjusted for a better
884
  shoulder posture. Also, the batch processing script now runs all trials
885
  without hickups.
886
- Improve the shoulder rhythm. Scapula position when using the shoulder rhythm
887
  is now determined by the Conoideum ligament driver, like how scapula kinematic
888
  is controlled with no shoulder rhythm. The rhythm is now controlled based on
889
  the **plane of elevation** and **humerus elevation** from the 'ThoraxHumerus'
890
  measures in the interface folder. This tracks the original specification of
891
  the shoulder rhythm in "De Groot, J. H. *The shoulder: a kinematic and dynamic
892
  analysis of motion and loading.* (1998)". One difference is still shoulder
893
  protraction/retraction where regression coefficients needed to be tweaked for
894
  the shoulder to work in the full range of motion. De Groot et al (1998) had
895
  only based their shoulder rhythm on arm position in front of the body (e.i.
896
  positive elevation planes).
897
- Removed metabolic power (`Pmet`) contributions from artificial muscles defined
898
  as `AnyMuscle` derived classes. `Pmet` contributions from tools, such as GRF
899
  prediction, modelled as `AnyGeneralMuscles` will no longer be part of studies'
900
  Pmet calculations.
901
- Adjusted the wrapping segments for deltoid posterior so it doesn't affect the
902
  muscle in overhead arm posturess.
903
- Teres minor now uses a torus for wrapping at the humeral head.
904
905
**Fixed:**
906
907
- Fixed incorrect values in "SelectedOutput" for four reaction moments
908
  variables, which were wrong due an implementation change of
909
  `AnyRevoluteJoint`. The following variables in
910
  `SelectedOutput.Trunk.JointReactionForce` were incorrect.
911
912
  - `C2C1FlexionExtensionMoment`
913
  - `C2C1LateralMoment`
914
  - `C1C0AxialMoment`
915
  - `C1C0LateralMoment`
916
917
  The values were wrong because they referered to the internal generalized force
918
  output of `AnyRevoluteJoint`.  (i.e. `Constraints.Reactions.Fout`). The values
919
  `Fout[3]` and `Fout[4]` can not be interpreted as real physical reaction
920
  moments because `AnyRevoluteJoint` is implemented using euler angles.
921
922
  :::{warning}
923
  The use of generalized forces (`Fout`) is
924
  discouraged, and will be removed in the AMMR. Instead use the force and moment
925
  variables in `AnyRefFrameOutput` subfolder instead.
926
  :::
927
928
- Fixed incorrect volume of Satorius muscle in TLEM1 and TLEM2. Thanks to Dr.
929
  Adam D. Sylvester from Johns Hopkins School of Medicine and Dr. Patricia A.
930
  Kramer from the University of Washington for pointing out the error. The error
931
  occurred since the satorius in the original [TLEM1
932
  paper](https://doi.org/10.1016/j.clinbiomech.2006.10.003) was muscles in
933
  series with a pseudo insertion/origin on the femur. Both of these muscle
934
  elements were therefore listed with the full PSCA of Satorius. This detail was
935
  missed in the AnyBody TLEM1 and TLEM2 implementation where Satorius was
936
  implemented two parallel elements (TLEM1) and a single element (TLEM2). Hence
937
  the Satorius had twice the correct volume.
938
939
- Fixed a problem when C3D files are malformed and doesn't contain a
940
  `FORCE_PLATFORM.ZERO` variable. The C3D standard specifies that the variable
941
  should exist but since it not used in the models the reference could just be
942
  remvoed.
943
944
- Fixed an problem which prevented the ANSUR scaling plugin example from working
945
  correctly 7.3.0
946
947
- Fixed incorrect output of `ThoraxHumerus` interface measures. The mesure
948
  wasn't used by other parts of the AMMR until now so the bug had no
949
  consequences in previous AMMR versions.
950
951
- Fixed mass calculation of the foot and talus segments in the `GaitVaughan`
952
  validation model.
953
954
**Removed:**
955
956
- Removed unused `BM_TRUNK_CERVICAL_LIGAMENTS` switch which had no effect since
957
  there were no ligaments defined in the neck model.
958
959
## AMMR 2.3 (2020-07-07)
960
961
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.3932764.svg)](https://doi.org/10.5281/zenodo.3932764) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.3.0-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-3-0-8065_x64/)
962
963
964
**Added:**
965
966
- Added a new Full Body {ref}`"ADL Gait"
967
  <sphx_glr_auto_examples_MoCap_plot_ADL_Gait.py>` MoCap Example based on the
968
  "Rehazenter Adult Walking Dataset" by [Schreiber and Moissenet
969
  (2019)](https://doi.org/10.1038/s41597-019-0124-4). The model is configured to
970
  run all 50 subjects and 1145 trials in the data set. However, you must
971
  download the actual data separately from
972
  [FigShare](https://figshare.com/articles/dataset/A_multimodal_dataset_of_human_gait_at_different_walking_speeds/7734767)
973
  where it is hosted under a Creative Commons license.
974
975
- New GUI plugin which uses statistical information from the ANSUR database to
976
  set anthropometric values in AnyBody. A small example model is added
977
  `Examples/StatisticalScalingPlugin` which shows how to use the plugin.
978
979
- Added a new option to optimize "head width" / "head depth" / "neck length" /
980
  "Tibia torsion" / "hand breadth" as part of the `OptimizeAnthropometricsOnOff`
981
  class_template in the AnyMoCap framework.
982
983
- Added new rotation vector based measures in the interface folder for the arm
984
  degrees of freedom. These measures (`Interface.Right.RotVectorMeasures.*`) for
985
  joint angles do not have a clinical meaning but are useful when exporting and
986
  importing joint angles.
987
988
- Added a new {ammr:bm_statement}`option for setting custom muscle calibration
989
  <BM_CALIBRATION_TYPE>`. I.e. an option which disables calibration so the user
990
  can add their own code.
991
992
  ```{code-block} AnyScriptDoc
993
  #define BM_CALIBRATION_TYPE _CALIBRATION_TYPE_CUSTOM_
994
995
  #include "<ANYBODY_PATH_BODY>\HumanModel.any"
996
997
  // Manually include calibration code.
998
  Main.HumanModel.Calibration = {
999
    #include "<ANYBODY_PATH_BODY>/LegTLEM/Calibration/CalibrationSequenceRight.any"
1000
    #include "<ANYBODY_PATH_BODY>/LegTLEM/Calibration/CalibrationSequenceLeft.any"
1001
    #include "<ANYBODY_PATH_BODY>/Arm/Calibration/CalibrationSequenceRight.any"
1002
    #include "<ANYBODY_PATH_BODY>/Arm/Calibration/CalibrationSequenceLeft.any"
1003
  };
1004
  ```
1005
1006
  :::{note}
1007
  If you need to modify the calibration code, copy it to the application folder 
1008
  and include it from there.
1009
  :::
1010
1011
**Changed:**
1012
 
1013
- All application examples use the new and fast experimental wrapping algorithmn
1014
  in the AnyBody Modeling System 7.3.0. A notice is shown in the output window to
1015
  remind the users that the algorithm is enabled. The experimental wrapping
1016
  algorithm
1017
  can be used in all models by setting:
1018
1019
  ```{code-block} AnyScriptDoc
1020
  System.Compatibility.AnyBody73_ExperimentalShortestPathSolver = On;
1021
  ```
1022
1023
  :::{seealso}
1024
  The release notes for the AnyBoy Modeling System has more information
1025
  on the new and faster experimental wrapping algorithm.
1026
  :::
1027
1028
- Split the SternoCleidomastoid muscle up into two muscle branches. This makes
1029
  the two heads of the muscle able to work independent.
1030
1031
- Add extra muscle-via points on for the Latissimus dorsi on the Thorax segment.
1032
  This change fixes wrapping problems where the Latissimus dorsi muscle strands
1033
  would slide off the wrapping surface representing the thorax segment.
1034
1035
- Renamed all deprecated muscle class names. `AnyViaPointMuscle`-> `AnyMuscleViaPoint`
1036
  and `AnyShortestPathMuscle`-> `AnyMuscleShortestPath`
1037
1038
- The AnyMoCap framework now uses a more robust way of saving optimized
1039
  parameters from the parameter optimization studies, when using AMS 7.3.
1040
1041
- Pectoralis Major has been split from 5 into 10 branches to better represent
1042
  the real fiber direction of the muscle. Similarly the origins of the new
1043
  Pectoralis Major muscles have been moved to align with real anatomy of the
1044
  muscle.
1045
1046
- Changed the format used by the AnyMoCap models when transferring joint angles
1047
  from the mrker tracking step to inverse dynamics simulation. The joint-angles
1048
  for the arms and pelvis rotation are now written in terms of rotation vectors
1049
  instead of Euler angles. This fixes potential singularity problems. The
1050
  temporary joint angle files produced by the MoCap models have been renamed to
1051
  indicate the data is no longer Euler angles.
1052
1053
  :::{note}
1054
  This means that the data in these temporary files can not easily be interpreted from a clinical
1055
  point of view. Create your own output files with physiological joint angles if you need to export that data.
1056
  :::
1057
1058
- The body model configuration plugin have been updated. This fixes a number of
1059
  smaller issues and bugs.
1060
1061
- The via points of PeroneusLongus and PeroneusBrevis have been adjusted to
1062
  ensure the muscles maintain moment arm in a larger range of motion.
1063
1064
- Rectus abdominis muscle has been split into eight branches to better represent
1065
  geometry, than what is possible with one branch. The strength between the new
1066
  branches has been split evenly. Additionally, the PCSA has been increased from
1067
  $2.6 cm^2$ to $7.9 cm^2$ according to McGill et al 1988, the $2.6 cm^2$
1068
  originates from a study with elderly subjects, the McGill study used mid age
1069
  subjects.
1070
1071
- Adjusted the origin of Serratus Anterior 1 so it aligns with the geometry of
1072
  the rib on which it originates.
1073
1074
- Changed the way the deltoid wrapping surfaces move relative to humerus. This
1075
  changes makes it wrapping more robust to deltoid flipping over to the wrong
1076
  side of the wrapping surface in extreme postures.
1077
1078
- The BVH virtual marker protocol have been adjusted. If older BVH models is
1079
  used with AMMR 2.3 a warning/error is triggered to warn the user that the
1080
  protocol needs to be updated.
1081
1082
**Fixed:**
1083
1084
- Fixed problems with the following variables in the `SelectedOuput` folder:
1085
  `HipAbductorMuscleForce`, `HipExtensorMuscleActivity`,
1086
  `HipExtensorMuscleForce`, `KneeFlexorMuscleActivity` and
1087
  `KneeFlexorMuscleForce`.
1088
- Markers on BVH stick-figure model in the AnyMoCap framework now respects the
1089
  setting: `Main.ModelSetup.BVHFileData.ModelDrawOnOff`.
1090
- Fixed occasional kinematics problems with FullBody MoCap models during inverse
1091
  dynamics simulation. This was fixed by changing the internal representation of
1092
  the shoulder joint angles when transferring kinematics from marker tracking to
1093
  the Inverse Dynamics simulations.
1094
- Fixed a problem with the Body Model configurator plugin showing reporting: "No
1095
  Human Model" when a configuration file already exists.
1096
- Corrected the location of via points of Flexor_Digitorum_Superficialis_Digit2
1097
  to avoid wrapping surface collisions in certain hand positions.
1098
- Corrected the location of via points of Flexor_Digitorum_Superficialis_Digit3
1099
  and 4, Palmaris_Longus, Extensor_Carpi_Radialis_Brevis and
1100
  Extensor_Digitorum_Digit2 to avoid wrapping surface collisions in certain hand
1101
  positions.
1102
- The muscle via point representing the bicipital groove have been adjusted to
1103
  ensure the Biceps Caput Longum wraps the humeral head correctly in
1104
- Fixed a bug in the FreePosture model, where input for the Left/Right arm
1105
  drivers was switched in some places.
1106
- Fixed missing visual color indication of force plate forces for type 3 force
1107
  plates in the MoCap models.
1108
- Fixed a bug with in the built-in studies to {ref}`evaluate arm joint strength
1109
  <sphx_glr_auto_examples_Validation_plot_EvaluateJointStrength.py>`. The range
1110
  of motion for the left arm elbow pronation/supination were not correct.
1111
- Fixed a bug preventing the model from loading with with
1112
  {bm_constant}`_SCALING_XYZ_` and both legs excluded.
1113
- Fixed the load-time position of the head segment when neck scaling is changed.
1114
- Fixed a problem with visualization in GRF prediction class which prevented GRF
1115
  prediction to be used with moving base frames (i.e. treadmills). Thanks to
1116
  Marco Antonio Marra (University of Twente) for fixing this.
1117
- Fixed the marker node orientation for BVH (inertial based) MoCap models in the
1118
  CreateMarkerDriver class template. Marker orientations are now handles
1119
  identical to normal C3D based markers.\`\`\`
1120
- Fixed incorrect wrapping of teres minor and teres major at extreme shoulder
1121
  range of motion. New wrapping surfaces have been added. One in Humerus and one
1122
  on scapula. The meet at the glenohumeral joint to prevent the muscles from
1123
  sliding to the wrong side of the humerus.
1124
1125
**Removed:**
1126
1127
- Removed unused support files for muscle contact. `Tools/ModelUtilities/ContactMuscles/*`
1128
1129
## AMMR 2.2.3 (2019-11-13)
1130
1131
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.3521521.svg)](https://doi.org/10.5281/zenodo.3521521) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.2.3-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-2-3-7075_x64/)
1132
1133
1134
**Added:**
1135
1136
- Add new option to set the type of wrapping surface used in the deltoid
1137
  wrapping implementation. The following will force the use of cylinders (which
1138
  is faster) instead of ellipsoids.
1139
1140
  ```{code-block} AnyScriptDoc
1141
  #define BM_ARM_DELTOID_WRAPPING _DELTOID_WRAPPING_CYLINDERS_
1142
  ```
1143
1144
  See {bm_statement}`BM_ARM_DELTOID_WRAPPING` for possible options.
1145
1146
**Fixed:**
1147
1148
- Fixed problems with BVH models that have jumping angular data due to multiple
1149
  solutions to the Euler angle equations when gimbal locks occur. The fix
1150
  requires a new structure of the BVH model, where virtual marker trajectories
1151
  are calculated by the `AnyInputBVH` class. See the updated {ref}`BVH_Xsens
1152
  example <sphx_glr_auto_examples_Mocap_plot_BVH.py>`, and port your existing
1153
  BVH models to the new example structure.
1154
- Fixed a problem in {ref}`AnyMoCap models <anymocap>`, where model view
1155
  operations in `Main.ModelSetup.Views.SetViewMacros` would not trigger a redraw
1156
  of the model view when executed directly.
1157
1158
**Changed:**
1159
1160
- Increase the time offset when running MoCap inverse dynamics simulations. The
1161
  offset was 2 frames which were skipped at the start/end of inverse dynamics
1162
  simulations. But the accelerations of 4th order b-spline are only stable on
1163
  the fourth frame, and hence the offset has been increased to three frames
1164
  instead of two.
1165
- ScalingXYZ scaling law has been extended to respect the following new
1166
  variables in the `HumanModel.Anthropometrics.SegmentDimensions` folder:
1167
  (`HeadWidth`, `HeadDepth`, `TrunkDepth`, `NeckLength`, `FootWidth`)
1168
1169
**Removed:**
1170
1171
- Remove the joint muscles' strength dependency on the range of motion. Joint
1172
  muscles are the torque actuators embedded in the joints when the model is
1173
  loaded without muscles. Previously, joint muscles would reduce their strength
1174
  to 10% when the joint was outside the range of motion. The lower strength
1175
  outside the range of motion was originally implemented to prevent
1176
  inverse-inverse simulations finding non-physiological solutions. However, this
1177
  problem is now better solved with kinematic joint limits, and the change in
1178
  joint strength could sometimes cause models to fail with a muscle recruitment
1179
  failure.
1180
- Remove the warning for modified Body model files. The warning can still be enabled
1181
  by setting the switch `#define ANYBODY_ENABLE_MODIFIED_AMMR_NOTICE`
1182
1183
**Added:**
1184
1185
- Added a warning to MoCap models when the number of frames is below 8. Since
1186
  the low number of frames causes problems with both low-pass filters and
1187
  b-spline interpolation. *Note:* C3D files with only a single frame works fine
1188
  since that is handled specially and often used for static trials.
1189
1190
## AMMR 2.2.2 (2019-09-12)
1191
1192
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.3404750.svg)](https://doi.org/10.5281/zenodo.3404750) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.2.2-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-2-2-7000_x64/)
1193
1194
1195
**Fixed:**
1196
1197
- Fixed kinematic problems when driving specific wrist-flexion/abduction values.
1198
  The definition of wrist flexion in `BodyModel.Interface` now measures the
1199
  flexion between the radius and small artificial `WristJointSeg` segment
1200
  between the radius and the hand segment. This ensures that there is always
1201
  unique solution when driving the wrist flexion and abduction.
1202
- Fixed a bug in the AnyMoCap examples when setting {bm_statement}`BM_SCALING`
1203
  to {bm_constant}`_SCALING_LENGTHMASSFAT_`.
1204
- Fixed a number of smaller bugs with Body Model configuration plugin.
1205
- Fixed a bug in calibration of 3 element leg muscles in the TLEM1 and TLEM2
1206
  model. The problem was that the first calibration study (`LegCal1`) included
1207
  muscles which were also calibrated specifically in later calibrations. This
1208
  could in some cases (certain scaling) lead to a problem where `LegCal1` would
1209
  be forces to change the fiber-length even though later specific calibration of
1210
  the muscle did not need that. Now, `LegCal1` only calibrates muscles which are
1211
  not included in the later calibration studies.
1212
1213
**Changed:**
1214
1215
- Changed the posture of the push-up model example to something which looks more
1216
  natural, and reduces the max muscle activity.
1217
1218
## AMMR 2.2.1 (2019-05-13)
1219
1220
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.2657673.svg)](https://doi.org/10.5281/zenodo.2657673) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.2.1-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-2-1-6927_x64/)
1221
1222
1223
**Fixed:**
1224
1225
- Fixed a symmetry issue with Scapula scaling in the
1226
  {bm_constant}`_SCALING_XYZ_` scaling law.
1227
- Fixed a bug in the Knee Simulator example regarding an extra tibiofemoral
1228
  `AnyForceSurfaceContact`.
1229
- Fixed a bug in how the Conoid driver scales with scapula size.
1230
- Fix bug in reference axes for SacrumPelvis Moment measures in selected output.
1231
  Thanks to Divyaksh Chander from [Politecnico di Torino](https://www.polito.it)
1232
  for fixing this.
1233
- Attempt to fix muscle wrapping errors with Latissimus dorsi when the model
1234
  bends forward. This was done by increasing the Augmented Lagrangian
1235
  coefficient  `SPLine.AugLagCoef` value and the using full wrapping solver.
1236
- Fix some muscle wrapping problems with subscapularis muscle by increasing the
1237
  number of points in the string mesh.
1238
- Fixed minor symmetry issue in the head markers of the Full Body MoCap example.
1239
1240
**Changed:**
1241
1242
- Changed the recruitment criterion to the power of 2 (quadratic) in the two
1243
  MoCap examples using GRF prediction and weak human-ground residuals.
1244
  ({ref}`link 1
1245
  <sphx_glr_auto_examples_MoCap_plot_Plug-in-gait_Simple_FullBody_GRFPrediction.py>`
1246
  and {ref}`link 2 <sphx_glr_auto_examples_MoCap_plot_BVH.py>`). This greatly
1247
  increases the robustness of recruitment solver and prevents many muscle
1248
  recruitment failures.
1249
1250
**Added:**
1251
1252
- New options to optimize pelvis-, trunk- and head- widths and depths in the
1253
  `OptimizeAnthropometricsOnOff` class template.
1254
1255
- Simple library of Python utility functions which can be used from AnyScript.
1256
  This first version only adds a few functions from the Python's `os.path`
1257
  module. They are used by including the `Python.Utils.any` file:
1258
1259
  ```{code-block} AnyScriptDoc
1260
  #include "<ANYBODY_PATH_MODELUTILS>/Python/Utils.any"
1261
1262
  AnySwitchVar file_exists = PyUtils.os.path.exist("some-file")
1263
  ```
1264
1265
## AMMR 2.2 (2019-04-03)
1266
1267
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.1481635.svg)](https://doi.org/10.5281/zenodo.1481635) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.2.0-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-2-0-6876_x64/)
1268
1269
1270
**Added:**
1271
1272
- New implementation of the Deltoid muscles that uses wrapping instead of
1273
  previous rake-segment/via-point approach. The new wrapping deltoid was
1274
  developed by Marta Strzelczak from Ecole de technologie superieure, Montreal,
1275
  CA. The new implementation is used by default but the old implementation can
1276
  be enabled with the {bm_statement}`BM_ARM_DELTOID_WRAPPING` switch.
1277
  Please see the {ref}`Shoulder-Arm Documentation <DeltoidWrapping>` for more
1278
  information.
1279
1280
- Added new example model of a Knee Simulator using a knee implant model and
1281
  force-dependent kinematics (FDK). See the {ref}`Knee Simulator example
1282
  <example_kneesimulator>` for more information.
1283
1284
- New model plugin (BodyModel Configurator) which provides a graphical user
1285
  interface to configure the Body Model (i.e. setting the `BM_*` parameters).
1286
  Please see the [blog
1287
  post](https://anyscript.org/tools/body-model-configurator/) introducing the BM
1288
  plugin.
1289
1290
- Added a new {ref}`Posture prediction model
1291
  <sphx_glr_auto_examples_ADLs_and_ergonomics_plot_PosturePredictionModel.py>`
1292
  based on standing posture. The model can predict posture as a consequence of
1293
  applied loads in hands. It does this by minimizing joint torques and applying
1294
  balance drivers which account for external applied loads.
1295
1296
- Added new standing model example which uses soft constraints and GRF
1297
  prediction. {ref}`See this link
1298
  <sphx_glr_auto_examples_ADLs_and_ergonomics_plot_StandingModel.py>`. This new
1299
  model is good starting point for making standing/balancing models, and the
1300
  corresponding standing model in the template generator has also been updated.
1301
1302
- Added new kinematic rhythm to determine the Sterno-Clavicular axial rotation,
1303
  effectively removing the degree of freedom from the shoulder model.  The
1304
  rhythm distributes the axial rotation equally between SC and AC joint. The
1305
  rhythm is active by default, but can be disabled with
1306
  {bm_statement}`BM_ARM_CLAVICULA_ROTATION_RHYTHM` switch.
1307
1308
- More documentation on the {ref}`AnyMoCap framework and the settings available
1309
  <anymocap-settings>` .
1310
1311
- New measures for shoulder angles based on recommendation from International
1312
  Society of Biomechanics (ISB). The measures are available in the
1313
  `BodyModel.Interface` folder. The new measures are:
1314
1315
  - `AcromioClavicular` ([Wu et al. 2005] section 2.4.3)
1316
1317
    - `Protraction`
1318
    - `MedialRotation`
1319
    - `PosteriorTilt`
1320
1321
  - `ScapulaHumerus` ([Wu et al. 2005] section 2.4.4)
1322
1323
    - `PlaneOfElevation`
1324
    - `Elevation`
1325
    - `InternalAxialRotation`
1326
1327
  - `ThoraxScapula`  ([Wu et al. 2005] section 2.4.6)
1328
1329
    - `Protraction`
1330
    - `MedialRotation`
1331
    - `PosteriorTilt`
1332
1333
  - `ThoraxHumerus` ([Wu et al. 2005] section 2.4.7)
1334
1335
    - `PlaneOfElevation`
1336
    - `Elevation`
1337
    - `InternalAxialRotation`
1338
1339
- Three new BM switches to control add default drivers for the individual neck
1340
  degrees of freedom:
1341
1342
  - {bm_statement}`BM_MANNEQUIN_DRIVER_SKULL_THORAX_FLEXION`
1343
  - {bm_statement}`BM_MANNEQUIN_DRIVER_SKULL_THORAX_LATERALBENDING`
1344
  - {bm_statement}`BM_MANNEQUIN_DRIVER_SKULL_THORAX_ROTATION`
1345
1346
- A default center of mass kinematic measure were added
1347
1348
  - `Main.HumanModel.BodyModel.Interface.CenterOfMass`
1349
1350
- Markers in MoCap models now changes color to gray when they drop out (i.e.
1351
  have a weight of zero).
1352
1353
- Added new `ASIS`/`PSIS`/`PT` bony-landmark nodes to the
1354
  `PelvisSeg.Right`/`Left` folders. This ensures the bony landmarks are easily
1355
  available as nodes in all models even if the legs are not included.
1356
1357
- Added a new setting (`#define MOCAP_FILTER_JOINT_ANGLES ON/OFF`) to the
1358
  AnyMoCap frame work. If enabled a filter will be applied to the intermediate
1359
  set of joint angles generated by the Marker Tracking step. This can be useful
1360
  to remove high accelerations due to kinematic limit constraints (e.g. Joint
1361
  angle limits, surface contacts etc.).
1362
1363
- Added a `#define MOCAP_PARAMETER_FILE_PREFIX` switch to override the prefix
1364
  for parameter identification files (containing marker position and scaling).
1365
  This can be useful in special cases where subjects share a common parameter
1366
  identification file.
1367
1368
- Added two new default arguments (`MANNEQUIN_FOLDER`, `BODYMODEL_FOLDER`) to
1369
  the class_template `Template_MannequinDrivers`, making it easier to reuse the
1370
  class template as a general-purpose driver for all joint angles.
1371
1372
- Added a `PreAnalysis` step to the video recorder template
1373
  (`CameraClassTemplate.any`). Operations placed in the `PreAnalysis` step will
1374
  be executed before the video recorder starts.
1375
1376
- Added a new warning if using low-pass filters in the AnyMoCap model without a
1377
  zero phase filter (e.g. warn if  `FilterForwardBackwardOnOff` is set to `Off`)
1378
1379
- Added a new option for choosing a different implementation of the kinematic
1380
  sliding between scapula and thorax. The new scapula sliding implementation
1381
  uses multiple points on the ribs and a norm measures to surfaces on the
1382
  scapula. This work is preparation of a new thoracic model where ribs are
1383
  individual segments. Note that this implementation is still a
1384
  work-in-progress. The new thorax-scapula contact can be enabled with the
1385
  {bm_statement}`BM_ARM_THORAX_SCAPULA_CONTACT` switch:
1386
1387
  ```{code-block} AnyScriptDoc
1388
  #define BM_ARM_THORAX_SCAPULA_CONTACT _MULTIPLE_POINT_CONTACT_
1389
  ```
1390
1391
- New `DEFAULT_PARAMETER_FOLDER` class template for creating folders with
1392
  default values which can be overridden. See the following example:
1393
1394
  ```{code-block} AnyScriptDoc
1395
  DEFAULT_PARAMETER_FOLDER Settings(
1396
      NPARAM = 2,
1397
      PARAM_1 = TibialRotation, PARAM_1_TYPE = AnyMat33,
1398
      PARAM_2 = Offset, PARAM_2_TYPE = AnyVar
1399
  ) = {
1400
      // Default values are specified in the defaults folder.
1401
      Default.TibialRotation = RotMat(5*pi/180,y);
1402
      Default.Offset = 0.005;
1403
  };
1404
1405
  // Parameters can now be overridden if desired.
1406
  Settings.TibialRotation = RotMat(10*pi/180,y);
1407
  ```
1408
1409
**Changed:**
1410
1411
- Re-implemented the origins for the Semitendinosus and Biceps Caput Longum
1412
  muscles in the TLEM-2.1 model based on the original digitized insertions and
1413
  MRI scans. Better correspondence with the original MRI scans increases the
1414
  moment-arms through range of motion.
1415
1416
- New wrapping surfaces for Semitendinosus and Biceps Caput Longum muscles based
1417
  on original MRI scans. New surfaces ensure that muscles don't penetrate the
1418
  pelvis bone at high hip flexion angles.
1419
1420
- Reimplement insertion of Gluteus Medius/Minimus of the TLEM2.1 model based on
1421
  original TLEM2 dataset. This improves range of motion in which Gluteus Medius
1422
  and Gluteus Minimus has a moment arm for internal rotation of the hip.
1423
1424
- Kinematic rhythms for the shoulder, lumber-spine and cervical-spine can now be
1425
  specified as soft contraints. The setting is controlled by setting the BM
1426
  control statement `BM_XXX RHYTHM` to {bm_constant}`_RHYTHM_SOFT_`. For
1427
  example:
1428
1429
  ```{code-block} AnyScriptDoc
1430
  #define BM_ARM_SHOULDER_RHYTHM _RHYTHM_SOFT_
1431
  ```
1432
1433
- Re-implemented the origins for the Semitendinosus and Biceps Caput Longum
1434
  muscles in the TLEM-2.1 model based on the original digitized insertions and
1435
  MRI scans. Better correspondence with the original MRI scans increases the
1436
  moment-arms through range of motion.
1437
1438
- New wrapping surfaces for Semitendinosus and Biceps Caput Longum muscles based
1439
  on original MRI scans. New surfaces ensure that muscles don't penetrate the
1440
  pelvis bone at high hip flexion angles.
1441
1442
- Reimplement insertion of Gluteus Medius/Minimus of the TLEM2.1 model based on
1443
  original TLEM2 dataset. This improves range of motion in which Gluteus Medius
1444
  and Gluteus Minimus has a moment arm for internal rotation of the hip.
1445
1446
- The {doc}`TLEM2 model</body/leg_tlem2_model>` is now the default leg model
1447
  unless the model is configured otherwise.
1448
1449
- All AnyMoCap examples where changed to use the {bm_constant}`_SCALING_XYZ_`
1450
  scaling law. This scaling law is similar to
1451
  {bm_constant}`_SCALING_LENGTHMASSFAT_`, but allows for optimization of all
1452
  segment dimensions (hence the `XYZ` name).
1453
1454
- Scaling law {ammr:bm_constant}`_SCALING_XYZ_` now has a scaling factors to
1455
  control the neck scaling. Before neck scaling were controlled by
1456
  the head scale factors.
1457
1458
- All MoCap model examples now use the option (`UseC3DWeightResiduals=ON`) in
1459
  the marker protocols. This ensures that the marker weights are reduced to zero
1460
  when a marker drops out (i.e. when the residual value in the C3D file becomes
1461
  negative).
1462
1463
- AnyMoCap examples are updated with extra margin at the start/end of the
1464
  analysis compared to the data in the C3D file. This prevents inaccurate
1465
  kinematics due to low-pass filter transients.
1466
1467
- Add warning to AnyMoCap models when `tStart`/`tEnd` are very close to the
1468
  start/end times of the data in the C3D file. This can cause inaccurate
1469
  kinematics at the very start/end of the simulation due to low-pass filter
1470
  transients.
1471
1472
- Increased the resolution tibia bones for the TLEM1 and TLEM2 models.
1473
1474
- All examples now have their body model configuration in a separate file
1475
  (usually, `BodyModelConfiguration.any`) to accommodate the new Body Model
1476
  Configurator plugin.
1477
1478
- The MoCap models now use joint angles for all degrees of freedom when
1479
  transferring motion from MarkerTracking study to the Inverse dynamic study.
1480
  This means that rhythms can now be soft constraints when running the Marker
1481
  tracking study, and markers can override the kinematic rhythms if needed.
1482
1483
- Refactored all examples to avoid the confusing paradigm with a reference
1484
  called `Model.HumanModel` pointing to `HumanModel.BodyModel`.
1485
1486
- Improvements to the accuracy of the wrapping cylinder used by Teres Minor and
1487
  Teres Major.
1488
1489
- The interface morphing algorithm (which morphs pelvis of the trunk or leg
1490
  dataset to match) now includes the ASIS/PSIS/PT bony landmarks as control
1491
  points. This change ensures that bony-landmarks of the Trunk and Leg datasets
1492
  map to the exact same point.
1493
1494
- Models generated from templates now fail with a descriptive error message if
1495
  they are loaded with an older unsupported version of the AMMR.
1496
1497
**Fixed:**
1498
1499
- Fixed problem with the initial guess for Vastus wrapping which could cause the
1500
  Vastus muscle to wrap incorrectly when the knee started in slightly over
1501
  stretched posture.
1502
- Fixed location of bicep longus via points to pass through bicipital groove
1503
- Fixed a regression in bike model where the foot crank connection did not
1504
  rotate around the correct point (`PedalConnectNode`). The point in the foot
1505
  coordinate system was also updated to a more posteriorly location beneath the
1506
  meta tarsal joints.
1507
- Fixed an issue with over-constraint default mannequin drivers when shoulder
1508
  rhythm was enabled. Now the default mannequin drivers will not create drivers
1509
  for sterno-clavicular rotation, elevation, protraction when the shoulder
1510
  rhythm is enabled.
1511
- Fixed the initial wrapping guess for Teres Minor to prevent incorrect wrapping
1512
  when starting model in postures which are close to range of motion.
1513
- Fixed typo in `Flexor_Digitorum_Profundus_Digit5` name.
1514
- Fixed an interpolation issue with BVH based AnyMoCap models when the models
1515
  were using all frames in a BVH file.
1516
- Added missing hand length/breadth values needed by Detailed Hand to the
1517
  `CustomScaling.any` for custom scaling scenarios
1518
- Fixed missing possibility for overriding the reaction forces for the Trunk
1519
  flexion/extension/rotation drivers in `HumanModel.DefaultMannequinDrivers`.
1520
- Add missing strength scaling factor to `pectoralis_major_thoracic_part_3` in
1521
  the simple muscle configuration.
1522
- Fixed issue with the {ref}`Standing Model example
1523
  <sphx_glr_auto_examples_ADLs_and_ergonomics_plot_StandingModel.py>`, where the
1524
  elbow flexion velocity was incorrectly set to a non zero value.
1525
- Fixed the problem with over-constraint models when adding the shoulder rhythm.
1526
- Fixed a bug with the Video class (`CameraClassTemplate.any`) when specifying
1527
  direct path to ffmpeg.
1528
- Fixed a problem with the FullBody AnyMoCap example where a relative high
1529
  weight on the soft clavicula rotation constraints could cause the model to
1530
  fail kinematically in with the AnyBody Modeling System 7.2.
1531
1532
**Removed:**
1533
1534
- Removed previously deprecated MoCap model which were not based on the AnyMoCap
1535
  framework.
1536
1537
- Removed all references to the previously deprecated `BM_TRUNK_NECK` switch.
1538
1539
- Removed outdated versions of `JointLimits_template.any` and
1540
  `KinLimitsDriver_template.any` from the AnyMoCap folder. Updated version of
1541
  the files still exists in the `Tools\ModelUtilities\KinematicLimits` folder.
1542
1543
- All uses of the Sterno-Clavicular axial rotation in all examples, since this
1544
  DOF is now handled by a kinematic rhythm which distributes the rotation
1545
  equally between SC and AC joint.
1546
1547
- The `BM_MANNEQUIN_DRIVER_INDIVIDUAL_WEIGHTS` switch was removed, since the
1548
  individual weights can be set directly using
1549
1550
  ```{code-block} AnyScriptDoc
1551
  Main.HumanModel.DefaultMannequinDrivers.KneeDriverRight.WeakDriverWeight = 0.1;
1552
  ```
1553
1554
## AMMR 2.1.1 (2018-06-12)
1555
1556
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.1287730.svg)](https://doi.org/10.5281/zenodo.1287730) [![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.1.2-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-1-2-6044_x64/)
1557
1558
1559
The AMMR 2.1.1 version is a minor release of the AMMR with smaller changes and
1560
bugfixes. The AnyBody Managed Model Repository now has a DOI
1561
([10.5281/zenodo.1250764](https://doi.org/10.5281/zenodo.1250764)). This is
1562
handled by [Zenodo.org](https://zenodo.org/) (The European Open Science platform
1563
hosted at CERN).
1564
1565
**Added:**
1566
1567
  model. This RefNode was also present in the TLEM1 model and was used by few
1568
- Added a `Leg.Seg.Foot.GroundJoint` RefNode to the foot segment of the TLEM2
1569
  applications.
1570
- New `GroundVelocity` setting added to the `ForcePlateAutoDetection`
1571
  class_template, which makes class usable with instrumented treadmills.
1572
- All force plate types now have a user-definable `ForcePlate.CalMatrix`
1573
  variable. The feature is useful to easily compensate for errors in the c3d
1574
  file (i.e. swapped channel and wrong sign)
1575
1576
**Changed:**
1577
1578
- Enhanced the {ref}`multi-trial MoCap example
1579
  <sphx_glr_auto_examples_Mocap_plot_Plug-in-gait_MultiTrial_StandingRef.py>`
1580
  for best practice for MoCap trials with multiple subjects and trials. The
1581
  example now shows how to deal with multiple subjects and storing the c3d files
1582
  in a separate folder.
1583
1584
**Fixed:**
1585
1586
- Corrected the default mass of the patella segment in the TLEM2 model from zero
1587
  to 0.025.
1588
1589
- Add missing unilateral reaction between TS node on Scapula and the Thorax when
1590
  using the shoulder rhythm.
1591
1592
- Adjusted the initial wrapping vectors for the semitendinosus, semimembranosus,
1593
  and biceps caput breve muscles around the knee. This has no influence on the
1594
  output of the model, and is only done to reduce the risk of the muscles
1595
  wrapping the wrong direction around the wrapping surface.
1596
1597
- AnyMoCap:
1598
1599
  - The high memory usage of the AnyMoCap BVH model has been fixed. The high
1600
    memory usage was due to a reference in the `CreateMarkerDriver` class
1601
    template which caused the studies to include the BVH input data multiple
1602
    times in the output.
1603
  - The BVH and multi-trial examples now use zero phase shift filtering of force
1604
    plate forces. The zero-phase filter can be important to ensure that forces
1605
    are synchronized with kinematic data.
1606
  - Fix bug in Type 1 Force plate when data is not in meters (i.e.
1607
    `PointScaleFactor != 1`). The PointScaleFactor was applied twice to the z
1608
    moment component.
1609
  - Fix a problem reading C3D files where force plate meta information is saved
1610
    with the wrong dimensionality. Such a issue can, for example, happen if the
1611
    c3d files are created manually in MATLAB.
1612
  - The option to load parameter optimization results is no longer hidden when
1613
    the `MOCAP_CREATE_PARAMETER_ID_SHORTCUT` is set to `OFF`.
1614
1615
## AMMR 2.1.0 (2018-03-22)
1616
1617
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.1251276.svg)](https://doi.org/10.5281/zenodo.1251276) 
1618
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.1.1-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-1-1-6029_x64/)
1619
1620
**Added:**
1621
1622
- New {ref}`squat example
1623
  <sphx_glr_auto_examples_ADLs_and_ergonomics_plot_Squat.py>` model which
1624
  demonstrates a parameterized squatting motion.
1625
1626
- New `#class_template` for adding limit drivers to kinematic measures. Can be
1627
  included with `#include
1628
  "<ANYBODY_PATH_MODELUTILS>/KinematicLimits/KinLimit_template.any"`
1629
1630
- Muscle ColorScale can now be set from the
1631
  `Main.DrawSettings.Muscles.ColorScale`. If you port an older model to the new
1632
  AMMR you will need to update your `DrawSettings.any` file.
1633
1634
- AnyMoCap framework:
1635
1636
  - New argument `DRAW_SCALE` in the `CreateMarkerDriver` class_template to
1637
    control the visual size of markers.
1638
  - Added an option to the ForcePlateAutoDetection class template to make the
1639
    limb1/2 contact detection mutually exclusive. Setting the option
1640
    `ALLOW_MULTI_LIMB_CONTACT=OFF` will ensure that both legs cant be in contact
1641
    with the plate at the same time. This can prevent accidental contact
1642
    detection for the collateral leg in the swing phase.
1643
  - New option to specify the contact nodes in ForcePlateAutoDetection class
1644
    template. This makes the class useful for connecting force plate to other
1645
    limbs than the feet.
1646
  - Add support for the Shoulder Rhythm in AnyMoCap based models.
1647
  - Add support for the {doc}`/body/detailed_hand_model` in AnyMoCap based
1648
    models.
1649
1650
- New `BM_FOOT_MODEL` parameter, as preparation for integrating the
1651
  Glasgow-Maastricht foot model (GM-Foot) back into the AMMR. Currently, the
1652
  parameter can only be used for excluding the feet  (`#define BM_FOOT_MODEL
1653
  _FOOT_MODEL_NONE_`). making it easier to work on integrating  the GM foot
1654
  model.
1655
1656
:::{seealso}
1657
Adding the GM-Foot to the TLEM2 model is a work in progress. An early version is
1658
released on GitHub: <https://github.com/AnyBody/gm-foot>
1659
:::
1660
1661
**Changed:**
1662
1663
- Default mannequin drivers for the Pelvis are changed to drive the Pelvis
1664
  anatomical frame instead of the segmental reference frame. This also fixes the
1665
  discrepancy between the load time position and the mannequin driver position
1666
  and makes the driver consistent with the interface measures
1667
  `BodyModel.Interface.Trunk.PelvisPosX/Y/Z`.
1668
1669
:::{warning}
1670
This change will affect models using the default mannequin drivers unless
1671
the driver values are updated.
1672
:::
1673
1674
- The Wilke spine pressure  validation examples have been updated and now uses
1675
  the TLEM2 lower extremity model.
1676
1677
- In {bm_constant}`_SCALING_XYZ_` scaling law the definition of
1678
  length/depth/width of the scapula is corrected to match the anatomical
1679
  definitions.
1680
1681
- Updated the AAU Mandible Model introduced in AMMR 2.0.0. By accident the
1682
  authors did not share the exact same version of the model that was used in the
1683
  publication by [Andersen et al. 2017](https://doi.org/10.1115/1.4037100) This
1684
  is now corrected and the validation  example produces the same results as
1685
  published version.
1686
1687
- TLEM 2 model
1688
1689
  - Pectineus implementation has been adjusted based on the original MRI Scans.
1690
    Only the most lateral element of the pectineus muscle was changed. This was
1691
    done to prevent it from penetrating the femoral head in some situations.
1692
  - Tweaked the Gluteus Maximum Superior implementation to reduce the risk of
1693
    collisions between muscle insertions and the wrapping surface. The two most
1694
    proximal insertion points of the Gluteus Superior are shifted more distally,
1695
    and the locations of the wrapping surfaces are tweaked.
1696
1697
- AnyMoCap Framework:
1698
1699
  - Models now uses the default kinematic solver for the inverse dynamic
1700
    analysis.
1701
  - Changed the set joint drivers used for transferring the joint angles from
1702
    the over-determinate marker tracking to the inverse dynamic analysis. To
1703
    improve the stability of the scapula kinematics the Scapula Thorax Elevation
1704
    angle is used instead of the sterno clavicula elevation angle.
1705
  - Changed the way marker drivers are excluded from the Inverse Dynamic
1706
    analysis. The drivers are now excluded using the new `AnyMechObjectExcluder`
1707
    class instead of the `MechObjectExlcude` member of the Study. This has no
1708
    practical effect on model output but means that the `MechObjectExlcude` can
1709
    now be assigned by the users.
1710
  - Update to the BVH MoCap example. Pre-processing the BVH data is now a
1711
    separate operation which saves the virtual marker positions to a file. Thus,
1712
    this step can be skipped the next time the model is reloaded.
1713
  - Changed the AnyMoCap Multi trial example
1714
    `Plug-in-gait_MultiTrial_StandingRef` to make it a better starting point for
1715
    creating new models. 1. Moved the Human-Ground residuals from the Trunk to
1716
    the Pelvis segment. 2. Use the TLEM 2 lower body model in the example. 3.
1717
    Disable upper bounds for the muscle recruitment `Criterion.UpperBoundOnOff =
1718
    Off;` to improve the stability of the simulations.
1719
1720
**Fixed:**
1721
1722
- Shoulder-arm model:
1723
1724
  - Fixed problems with Pectoralis Major wrapping. Wrapping could fail
1725
    unpredictively when muscles wrapped in the intersection between the coracoid
1726
    wrapping and pectoralis minor cylinder. The coracoid wrapping cylinder has
1727
    been removed, and the others has been made longer. This creates a more
1728
    robust wrapping for the Pectoralis Major muscle.
1729
  - Better initial position for scapula and clavicula. The initial position is
1730
    now calculated from the initial position of the chain from thorax through
1731
    the clavicula to scapula. This will not change the model output but should
1732
    make the arm model more robust solving the first step.
1733
  - Improve the Teres Minor wrapping by adjusting the wrapping surface, and
1734
    ensure that the insertion point is not directly on the surface.
1735
  - The "Evaluate joint strength" studies now also work when the shoulder rhythm
1736
    is enabled.
1737
  - Fixed problems with via points of the wrist extensor muscles colliding with
1738
    the wrist wrapping surface in normal range of motion. The via point of
1739
    Extensor indicis `Via_Extensor_Indicis_pos` has been slightly adjusted and
1740
    the location of the wrist wrapping cylinder `MedialExtensorCyl` has been
1741
    improved.
1742
1743
- Detailed hand model:
1744
1745
  - Fix a problem causing the hand to scale incorrectly.
1746
  - Fix a problem with the default mannequin drivers for the left thumb, where
1747
    CMC  and MCP abduction was treated as adduction.
1748
  - Fixed compatibility between the detailed hand and scaling law
1749
    {bm_constant}`_SCALING_XYZ_`.
1750
1751
- Lower extremity models:
1752
1753
  - Fixed various warnings when running calibration routines with the lower
1754
    extremity models.
1755
  - Fixed muscle insertions for the old leg model (`#define BM_LEG_MODEL
1756
    _LEG_MODEL_LEG_`). The misaligned pelvis muscles insertions was a regression
1757
    due to the updated Trunk pelvis introduced in AMMR 2.0. The pelvis muscles
1758
    insertions have been translated and rotated to fit the new Trunk geometry as
1759
    best as possible.
1760
  - Fix missing left leg calibration operations when right leg was excluded.
1761
1762
- MoCap models:
1763
1764
  - Weak residuals for GRF prediction: Ensure the same strength is used in all
1765
    directions for the weak recruited actuators.
1766
  - Fix bug in `CreateMarkerDriver` class template which prevented the
1767
    `UseC3DWeightResiduals` from having any effect.
1768
  - Fix the wrong visualization of the contact area in ground reaction force
1769
    prediction class template, when the base frame is different from the global
1770
    coordinate system.
1771
  - Wrong masses in the deprecated "old" MOCAP models. The model was not using
1772
    the body mass specified in `Main.TrialSpecificData.Anthropometrics.BodyMass`
1773
1774
- Other fixes:
1775
1776
  - Wrapping convergence for multiple muscles has been improved. This was done
1777
    by tweaking the string-mesh of the muscles to improve the wrapping solvers
1778
    ability to find the solution within the given number of iterations.
1779
1780
## AMMR 2.0.0 (2017-11-29)
1781
1782
[![Zenodo link](https://zenodo.org/badge/DOI/10.5281/zenodo.1251274.svg)](https://doi.org/10.5281/zenodo.1251274)
1783
[![AnyBody link](https://img.shields.io/badge/Included_with_AnyBody-7.1.0-yellowgreen)](https://www.anybodytech.com/download/anybodysetup-7-1-0-5957_x64/)
1784
1785
### Major changes:
1786
1787
#### New lower extremity model (TLEM2.1)
1788
1789
- The [Twente Lower Extremity Model version 2.0
1790
  dataset](https://dx.doi.org/10.1016/j.jbiomech.2014.12.034), developed in the
1791
  TLEM*safe* EU project was implemented in the AMMR repository. The model is not
1792
  the default model, but can be enabled with the {ref}`BM parameter <bm-config>`
1793
  `#define BM_LEG_MODEL _LEG_MODEL_TLEM2_`
1794
1795
- The model is versioned TLEM 2.1, to indicate the number of changes and
1796
  correction which has been added in the process. The changes and updates to the
1797
  TLEM2 dataset was done in the [Life Long
1798
  Joints](https://web.archive.org/web/20230108081423/https://lifelongjoints.eu/)
1799
  EU research project (paper submitted for publication).
1800
1801
- The most important changes to the TLEM 2 dataset include the following:
1802
1803
  - Updated wrapping for the Gluteus Maximus, Iliacus, Psoas around the hip.
1804
  - Reworked muscle topology for Gluteus Medius and Gluteus Minimus
1805
  - Updated wrapping for Hamstring muscles, and Gastrocnemius around the knee.
1806
  - Redefined revolute knee axis and patella joint axis and patella tendon
1807
    length based on the bone   geometry. The original TLEM knee axis was
1808
    estimated using a functional method, and was only valid for very small
1809
    flexion angles. Thanks to Marco Antonio Marra (Radboudumc) for this for this
1810
    improvement.
1811
   - The  ratio of volume between Gluteus Maximus superior/inferior has been
1812
     re-estimated based on the original cadaver MRI scans.
1813
   - Update the Sartorius via points.
1814
   - Re-implemented the Hip Joint location for the pelvis and the femur by
1815
     fitting spheres to the femoral head and the acetabulum. This is in contrast
1816
     to the original TLEM2.0 implementation where the hip joint center was found
1817
     using a functional method.
1818
   - Included a more detailed version of the patella bone.
1819
   - Various minor bug fixes from the original implementation used in the
1820
     TLEMSafe project.
1821
   - Corrected the femoral attachment points for the popliteus muscle
1822
   - Update ankle joint nodes with positions fitted to the bone geometry
1823
   - Small correction to wrong insertion points for Adductor Longus and Vastus
1824
     Medialis.
1825
1826
- See the dedicated {doc}`TLEM2.1 page </body/leg_tlem2_model>` page for more
1827
  information.
1828
1829
#### AnyMoCap
1830
1831
- New framework for running MoCap models. The AnyMoCap framework is an effort to
1832
  create a simple and unified framework for doing any kind of MoCap analysis
1833
  with the AnyBody Modeling System. See the {ref}`AnyMoCap example gallery
1834
  <mocap_examples>` for more information.
1835
- Algorithms and file for Ground reaction force prediction are added to:
1836
  `ammr/tools/GRFPrediction/`. See the {ref}`MoCap examples
1837
  <sphx_glr_auto_examples_Mocap_plot_Plug-in-gait_Simple_FullBody_GRFPrediction.py>`
1838
  for how they are used.
1839
1840
#### TLEM 1 updates
1841
1842
- The cumulated smaller bug fixes and updates to the TLEM1 model mean that we
1843
  now denote the model 1.2.
1844
- Changed the position of the Heel contact node, to align the heights of the
1845
  TLEM1 and TLEM2 models.
1846
- Added missing `GeomScale` function to the patella segment.
1847
- Update ankle joint nodes with positions fitted to the bone geometry
1848
- PSCA is now calculated based on the scaled fiber length. This aligns the TLEM
1849
  1 model with the new TLEM 2 model. It also means that scaling the model
1850
  without changing the muscle volumes will change the strength of the model.
1851
- Update scaling of the Patella tendon to work with non-linear scaling laws.
1852
- Added visualization of the Fibula bone.
1853
1854
#### AMMR restructure
1855
1856
- Added a top-level `Tools` folder helper files and other models which don't
1857
  belong in `Body/` or `Application`.
1858
- Moved `Body/AAUHuman/Toolbox` to `Tools/ModelUtilities`
1859
- Renamed the `Body/AUHuman` to `Body/Mandible_AU`
1860
- Restructured the anthropometric ("AnyMan") folder.  The folder
1861
  `HumanModel.AnthroDataSubject` is renamed to `HumanModel.Anthropometics`. The
1862
  structure of the folder has also changed with a `SegmentDimensions` and
1863
  `SegmentMasses` subfolder.
1864
1865
#### Configuration parameters
1866
1867
- The previously used system to configure human body using a BodyPartSetup file
1868
  was completely replaced with the new body model (BM) parameters.
1869
- Please see the documentation on: {ref}`BM parameters <bm-config>`.
1870
1871
#### Scaling laws
1872
1873
- An additional scaling law based on individual segmental scaling factors was
1874
  added to the repository. It can be enabled using this {ref}`BM
1875
  parameter<bm-config>` `#define BM_SCALING _SCALING_XYZ_`. See the {ref}`guide
1876
  on scaling <scaling-intro>`.
1877
- Default scaling is now {any}`_SCALING_STANDARD_` (e.g  `#define BM_SCALING
1878
  _SCALING_STANDARD_`) which scales all models to default standard 50% male.
1879
- Introduced {any}`_SCALING_NONE_`, which disables scaling. E.g. models gets the
1880
  original unscaled size.
1881
1882
#### New Mandible model
1883
1884
- Added new mandible model based on a CT scan of a 40 year old male. For more
1885
  information see {doc}`the documentation for the model
1886
  </body/aalborg_mandible>` or the {ref}`validation example
1887
  <sphx_glr_auto_examples_Validation_plot_AalborgMandible.py>`.
1888
1889
#### Spine model
1890
1891
- {ref}`BM parameters <bm-trunk-config>` were updated to have control over each
1892
  section of the spine and relevant components.
1893
- The anatomical reference frame of the thorax segment was modified. This change
1894
  reflects a change in the pelvic anatomical reference, and ensures upright
1895
  posture for the standing postures, to align C1C0 joint with the hip joint
1896
  centers.
1897
- Boney surfaces of both pelvis and sacrum were updated and now correspond
1898
  better to the relevant muscle attachments. These segments now also share a
1899
  common scaling function. Hip joint centers were corrected for the old Leg
1900
  model.
1901
- Improved wrapping surface for Psoas Major muscles based on the TLEM2.0 MR
1902
  scans
1903
- Insertion, via, and attachment nodes of relevant muscles have been updated to
1904
  match new geometries of pelvis and sacrum.
1905
1906
#### Arm model
1907
1908
- The model now facilitates individual personalization for each side using
1909
  nonlinear morphing schemes in a more consistent manner. Previously the
1910
  morphing needed to be done on the right side and then reflect to have the left
1911
  side morphing. This change removes an extra mirroring step.
1912
- Arm calibration was updated
1913
- {ref}`BM parameters <bm-arm-config>` have been updated for more convenient
1914
  use. `BM_ARM_DETAILED_HAND` and `BM_ARM_SHOULDER_RHYTHM` are now used instead
1915
  of individual switches for right and left side, which were deprecated.
1916
- Muscle wrapping surfaces were updated for more physiological behavior.
1917
- Scapula reaction contact forces were simplified, and do not longer utilize
1918
  slider segments.
1919
- Conoid ligament length now scales along with the scapula width.
1920
- Add a `GeomScale` function the Clavicula segment.
1921
1922
#### Muscle models
1923
1924
- All muscle models are updated to support the structure of the new
1925
  `AnyMuscleModel3E` and `AnyMuscleModel` in the AnyBody Modeling System 7.1.
1926
  The following variables are renamed:
1927
1928
  > - The "optimal fiber length" variable renamed from `Lfbar` to `Lf0`
1929
  > - The "Pennation angle" variable renamed from `Gammabar` to `Gamma0`
1930
  > - The "Tendon strain at F0" variable renamed from `Epsilonbar` to `Epsilon0`
1931
1932
- Restructured the muscle model section of both TLEM1 and TLEM2 models.
1933
1934
  - All the original TLEM based muscle parameter are now located under:
1935
    `Leg/ModelParameters/Muscles`
1936
1937
  - All scaled muscle parameters are located in `Leg/MusPar/SubjectMusPar`. This
1938
    folder references the TLEM muscle and applies strength scaling etc. The
1939
    `SubjectMusPar` folder and all subfolders are implemented with
1940
    `class_template`. Thus, all muscle parameter can now be overridden in
1941
    applications by just assigning the variables a new value: E.g.
1942
1943
    ```{code-block} AnyScriptDoc
1944
    Main.HumanModel.BodyModel.Right.Leg.MusPar.SubjectMusPar = {
1945
      GastrocnemiusMedialis.MuscleVolume = 300; // Volume in mililiters
1946
      GastrocnemiusMedialis.Pennationangle = 15; // (in degrees)
1947
    };
1948
    ```
1949
1950
#### Calibration
1951
1952
- Updated calibration for Arms and TLEM legs in the Body Model to
1953
1954
  > - include muscles to the calibration study with search functions.
1955
  > - drive the postures using the measures from the interface folder to remain
1956
  >   anatomically similar throughout future versions.
1957
1958
- Added new **experimental** two-parameter calibration, which is based on
1959
  range-of-motion postures. The calibration type is controlled by the
1960
  {any}`BM_CALIBRATION_TYPE` parameter.
1961
1962
  For example:
1963
1964
  ```{code-block} AnyScriptDoc
1965
  #define BM_CALIBRATION_TYPE _CALIBRATION_TYPE_2PAR_
1966
  ```
1967
1968
### Minor Changes:
1969
1970
- Added new initial guess for wrapping muscles, which make the wrapping more
1971
  when the model starts in extreme postures.
1972
1973
- Updated many examples to use the TLEM 2.1 model. See the {ref}`example gallery
1974
  <example-gallery>`.
1975
1976
- BM mannequin drivers are now implemented with a class_template allowing all
1977
  weights and other settings to be customized.
1978
1979
- A default `HumanModel.Mannequin` folder is now automatically created with a
1980
  `class_template` when no user-defined Mannequin file is set.
1981
1982
- A default `Main.DrawSettings` folder is now automatically created with a
1983
  `class_template` when no user-defined {bm_statement}`DrawSettings
1984
  <BM_DRAWSETTINGS_FILE>` file is set.
1985
1986
- Extra Mannequin drivers for the individual shoulder degrees of freedom:
1987
  {any}`Sterno clavicula protraction <BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_PROTRACTION_RIGHT>`,
1988
  {any}`Sterno clavicula elevation <BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_ELEVATION_RIGHT>`,
1989
  {any}`Sterno clavicula axial rotation <BM_MANNEQUIN_DRIVER_STERNOCLAVICULAR_AXIAL_ROTATION_RIGHT>`
1990
1991
- The initial positions of the pelvis now use the anatomical reference frame.
1992
  This follows the logic from the initial rotation of the pelvis which also uses
1993
  the anatomical frame.
1994
1995
- DeltoidMuscleConnector segment loading time positioning now depends on the
1996
  Humerus segment.
1997
1998
- Added [class template to easily create videos from AnyScript
1999
  model](https://anyscript.org/tips-n-tricks/creating-videos-from-your-simulations/).
2000
  The tool requires that [FFmpeg](https://www.ffmpeg.org/) is installed. The
2001
  class template can be found in:
2002
  `<ANYBODY_PATH_MODELUTILS>/Video/CameraClassTemplate.any`. See [this blog
2003
  post](https://anyscript.org/tips-n-tricks/creating-videos-from-your-simulations/).
2004
2005
- In TLEM models make the opacity of the patellar tendon dependent on the
2006
  opacity of the patellar surface.
2007
2008
- New `AnyDoc` classes are added to the different body model, so the GUI can
2009
  create direct links to the documentation.
2010
2011
- Simplify the Scapular reactions to the thorax segment.
2012
2013
- Foot contact nodes are aligned with the AnatomicalFrame
2014
2015
- Updated the Wilke Validation example to reflect the forces for the AMMR 2.0
2016
  repository.
2017
2018
- Updates to BM parameters:
2019
2020
  - New {bm_statement}`BM_ARM_DETAILED_HAND` parameter for the detailed hand.
2021
    The old `BM_ARM_DETAIL_HAND_RIGHT`/`LEFT` are deprecated.
2022
  - New {bm_statement}`BM_ARM_SHOULDER_RHYTHM` parameter for controlling the shoulder rhythm.
2023
    The old `BM_ARM_SHOULDER_RHYTHM_RIGHT`/`LEFT` are deprecated.
2024
  - Added new `BM_JOINT_TYPE_<joint>_<side>` parameter for completely
2025
    disabling joint and associated nodes in the lower extremity models. (See:
2026
    for example {bm_statement}`BM_JOINT_TYPE_HIP_RIGHT`)
2027
  - New {bm_statement}`BM_LEG_MODEL` parameter for setting the type of leg model
2028
    used. The {bm_statement}`BM_LEG_RIGHT`/{bm_statement}`LEFT <BM_LEG_LEFT>` are
2029
    now only {bm_constant}`ON`/{bm_constant}`OFF` options.
2030
2031
### Fixed:
2032
2033
- Sign for the plantar flexion variable were reversed in some section of the
2034
  model. This has been fixed.
2035
- Bug in Mannequin drivers for the neck, where velocities were not set
2036
  correctly. (Thanks to Assoc. Prof. Michael Skipper Andersen for reporting
2037
  this)
2038
- Fix small bug preventing `StandingModelScalingDisplay` from loading when using
2039
  the {ref}`Leg <old-leg-model>` model.
2040
- Fixed the opacity of the patellar surface in TLEM models, which pointing
2041
  erroneously to the opacity of the talus.
2042
- Fixed wrong symmetry of nodes on the C7 segment of full neck model.
2043
- Latissimus Dorsi 5 fascicle was missing in `MuscleNames.any`  and thus from
2044
  many symmetry measures.
2045
- Fixed a symmetry problem for the Deltoid muscles at the shoulder.
2046
- Fixed a symmetry problem for the Disc stiffness from L1 to L5
2047
- Fix white surfaces in examples with flat STL surfaces. For example
2048
  {ref}`sphx_glr_auto_examples_Sports_plot_CrossTrainer.py`.
2049
- Fixed an issue preventing
2050
  {ref}`sphx_glr_auto_examples_ADLs_and_ergonomics_plot_StandingModel.py` from
2051
  working with one leg.
2052
- Fixed a problem with the drawings of the bones in the Arm model which were not
2053
  always symmetrical.
2054
- Fixed symmetry issues in scaling laws for scapula and clavicula, and humerus.
2055
- Fixed a bug where a the Pectoralis wrapping cylinder was not a included in the
2056
  calibration study.
2057
- Fixed wrong sign for the AnklePlantarFlexion variable.
2058
- Added missing GeomScale and AnatomicalFrame for Ulna segment.
2059
- Fixed ScalingCustom.any to use Thorax folder instead of Trunk.
2060
2061
### Removed:
2062
2063
- Old MoCap examples have been moved to `Application/Examples/Deprecated`
2064
- Removed the deprecated AMMR1.4 hip rotation sequences.
2065
- The GM-foot model. A new version of this in the pipeline. Contact us if you
2066
  are interested in this work.
2067
- All older BodyModels which were deprecated in AMMR1.3
2068
2069
2070
[wu et al. 2005]: https://isbweb.org/images/documents/standards/Wu%20et%20al%20J%20Biomech%2038%20(2005)%20981%E2%80%93992.pdf