|
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 |
[](https://doi.org/10.5281/zenodo.15094590) |
|
|
9 |
[](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 |
[](https://doi.org/10.5281/zenodo.12592455) |
|
|
73 |
[](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 |
[](https://doi.org/10.5281/zenodo.11191711) |
|
|
84 |
[](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 |
[](https://doi.org/10.5281/zenodo.10803883) |
|
|
104 |
[](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 |
[](https://doi.org/10.5281/zenodo.10527958) |
|
|
119 |
[](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 |
[](https://doi.org/10.5281/zenodo.7764841) |
|
|
379 |
[](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 |
[](https://doi.org/10.5281/zenodo.7572879) [](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 |
[](https://doi.org/10.5281/zenodo.6809697) [](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 |
[](https://doi.org/10.5281/zenodo.6533249) [](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 |
[](https://doi.org/10.5281/zenodo.6471999) [](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 |
[](https://doi.org/10.5281/zenodo.5060249) [](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 |
[](https://doi.org/10.5281/zenodo.4616316) [](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 |
[](https://doi.org/10.5281/zenodo.4305559) [](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 |
[](https://doi.org/10.5281/zenodo.4023956) [](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 |
[](https://doi.org/10.5281/zenodo.3932764) [](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 |
[](https://doi.org/10.5281/zenodo.3521521) [](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 |
[](https://doi.org/10.5281/zenodo.3404750) [](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 |
[](https://doi.org/10.5281/zenodo.2657673) [](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 |
[](https://doi.org/10.5281/zenodo.1481635) [](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 |
[](https://doi.org/10.5281/zenodo.1287730) [](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 |
[](https://doi.org/10.5281/zenodo.1251276) |
|
|
1618 |
[](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 |
[](https://doi.org/10.5281/zenodo.1251274) |
|
|
1783 |
[](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 |