I am using AnyBody v8.1 for an inverse dynamics study on back exoskeletons. I am running a counterfactual simulation using MoCap data recorded while the subject was wearing the exoskeleton. I am comparing two conditions on the exact same motion kinematics:
Exo Condition: Assistive torque applied.
No-Exo Condition: Assistive torque set to zero (simulating no-exoskeleton)
The problem I am facing is, in specific frames (particularly at the start of flexion), the "Exoskeleton Condition" yields significantly higher L5/S1 compression than the No-Exo condition. Theoretically, the assistive torque should reduce the load, but here it seems to increase it. I would want to know -
Has anyone else experienced this result where adding assistance increases the joint load in specific phases?
What are the likely causes for this in the AnyBody solver?
Are these transient spikes considered acceptable, or does this indicate any modeling error that needs to be changed? Thank you so much!
I am not too surprised to read that a back exoskeleton results in higher loads at the start of trunk flexion. If I suppose it's a passive exoskeleton, it seems normal that the user has to overcome the resistance in the flexion phase to receive support in the extension phase. But I would also expect to see a consistently higher load in the flexion phase.
You mentioned, you see spikes in a few frames. I wonder if it is caused by the MoCap data. Do you see some artefacts/spikes in the L5/S1 compression force at the same frames in the No-Exo condition? I also wonder if it's the assistive torque and the human-exoskeleton interface. How have you modelled the exoskeleton? Can you please share some details about how have you calculated and applied the assistive torque?
It's good to know you have identified the problem. You could try to play around with the filter settings in LabSpecificData.any/C3DSettings.any. You could consider lowering the marker filter cut off frequencies, but the default values are already on the lower side. There is a risk that you lose information if the movement is too fast for the cut off frequencies.
Another option is to go back to the mocap system and see if you selectively fix those few frames before exporting to c3d/bvh.
Thanks for the suggestions regarding the filter settings.
I looked into the filters and raw data as you advised. While it helped smooth out some noise, the core issue persists, which led me to re-examine my model definition as you asked.
To clarify my setup, I am modeling the assistance as a pure torque (AnyForce) applied directly to the segment, rather than using physical contact elements or reaction forces (related code block attached).
Given this setup (pure assistive moment + no negative forces due to physical contact type), I would theoretically expect the "Exo" conditions to show a consistently lower spinal load than the "No-Exo" condition.
However, while the No-Exo load is generally higher, there are still multiple crossover points where the assistance fails to reduce the load, even with the artifacts removed + filtering.
Do you have any insights on why a pure assistive moment might fail to reduce the net joint reaction force in these specific kinematic phases? Thank you so much, I really appreciate it!
It's hard to say for sure what could be wrong. You are seeing issues at multiple points, and you noted that filtering helped smooth out some noise. I also see that you are applying the assistive torque directly to the pelvis-thorax extension measure. I think there can still be a few problems:
You are reading in the torque profile from a file. There can be issues related to synchronization. You are reading the torque profile as a function of iStep and this can be a risky thing to do because the mocap model crops the trial by a few frames at the beginning and the end of the inverse dynamics analysis. You could therefore be slightly out of sync. Ideally, you should read the torque profile as a function of time to be completely sure about synchronization (your force data file should also be setup accordingly).
You might still be seeing issues related to bad mocap data. If there is noise in the data, it means that the body is subject to unusual acceleration. For example, this can quite simply mean that even when you are doing a simple motion like trunk extension, you could be braking and accelerating in that simple motion instead of doing it in a smooth manner. The braking could require trunk flexors to be activated, and these could be loaded even more due to the presence of assistive torque, which normally helps trunk extensors.
Does that make some sense? Can you investigate the analysis a little bit more? For example, try to find out which muscles are loaded when you see these crossover points, and are these muscles supposed to be supported by the assistive torque profile?