Hello,
I am attempting to model the interaction between an exoskeleton and a human model. The particular exoskeleton I am modeling only attaches to the human at the feet and the shoulders, although I may also try to attach it at the hip. I'm using the gait2392 model for the human and I have created separate model for my exoskeleton. The exoskeleton seems to be correctly modeled, I have run IK, ID and CMC simulations with only the exo model successfully. It does not contain any active features, only passive resistive elements I am modeling with point to point forces. I am attempting to run the models together in CMC in order to assess the effect the exoskeleton has on muscle and joint reaction forces of the human as they perform a squat. I had previously tried to attach the models using stiff bushing forces elements and also point constraints, but those either gave me bad results or stopped without finding a solution.
In an attempt to simplify the model so that I might get better results, I have tried running the human and exo models separately. I am attempting to run the exo model by itself in CMC, and extract the forces it would exert on the human. Than I can apply these forces to the human model in a separate CMC run in order to obtain the muscle/joint reaction force results. Does this seem like a reasonable approach to modeling this interaction?
In order to accomplish this, in my CMC run for the exoskeleton, I have 6 translation/rotation residual actuators at the exo-torso mass center, reserve actuators at each joint, and set of 3 point actuators in each direction located at each foot and shoulder contact point. I have given the foot/shoulder actuators large optimal forces (1000) and all residual and reserve actuators low optimal forces (1) to try and bias the system toward using the foot/shoulder actuators to move the model, rather than the reserves. I have run this setup in CMC and gotten results close to my experimentally collected values. However, some of the residual and reserve actuators are still a bit high, and I have some irregularities in the X and Z direction forces.
Is there anything fundamentally wrong with calculating these forces like this, just using CMC actuators? Is my setup for this okay, or is there a better way to accomplish this?
Thanks for any help.
Eric
Exoskeleton Modeling Approach
Re: Exoskeleton Modeling Approach
It should not be necessary to run the exoskeleton and human models separately. You can pose your model with the exoskeleton on and perform short forward dynamic simulations with the ForceReporter (Analysis) attached. Do the forces from the device look reasonable? CMC will fail if it cannot generate the accelerations that match the input kinematics (typically resulting from RRA) and this is most often caused by unexpected or poorly modeled forces (e.g. muscle being stretched to twice or more of its optimal fiber-length; passive forces that are too stiff) or insufficient actuation (un-actuated degrees of freedom).
Connecting a spring to the model via another spring is not possible in OpenSim. There must be an intermediate body. If you have big springs connected to little masses which are in turn constrained or connected to the human segments by bushings (spatial springs) then those light bodies will result a in a stiff system that "chatters" at a very high frequency. That means the Runge-Kutta (variable step) integrator has to take tiny steps (will appear to be stuck). The initial conditions for the uncontrolled dofs of the intermediate bodies are very important, otherwise stiff bushings will generate huge forces. The best thing is to connect the springs of your device directly to the segment (bone) of the human model.
Connecting a spring to the model via another spring is not possible in OpenSim. There must be an intermediate body. If you have big springs connected to little masses which are in turn constrained or connected to the human segments by bushings (spatial springs) then those light bodies will result a in a stiff system that "chatters" at a very high frequency. That means the Runge-Kutta (variable step) integrator has to take tiny steps (will appear to be stuck). The initial conditions for the uncontrolled dofs of the intermediate bodies are very important, otherwise stiff bushings will generate huge forces. The best thing is to connect the springs of your device directly to the segment (bone) of the human model.
- Eric Stetz
- Posts: 4
- Joined: Sun Sep 22, 2013 10:10 pm
Re: Exoskeleton Modeling Approach
Ajay,
Thank you for your reply. I have actually moved back to using a combined model, which I have attached by using point constraints. In order to get the constraints to work, I am only using 1 constraint between the exoskeleton torso to the human torso. This represent a connection at the shoulders (Using one connection at each shoulder resulted in the model crashing every time, possibly from being over-constrained?). I also have 1 constraint on each foot between the exoskeleton and human foot bodies. I used point constraints as I still need a bit of rotational compliance in the model to complete the motion correctly.
Running CMC this way I have gotten promising results, but the moment residuals for the human and exoskeleton are a bit high (50-60 Nm) and the reserve actuators for the exoskeleton joints are much higher than acceptable (although the human reserves are very low). I think this may be due to the fact that there isn't any rotational support at the constraint points which would exist in real life to counteract the moments at those locations. I am trying now to provide some rotational support by adding bushings at each of the constraint points with only rotational stiffness and dampening. However, I am still working to find the appropriate rotational stiffness and dampening values to use. Right now too low of values (k=1000) do nothing, and too high of values (k=10000) add a ton of extra force to the model resulting in very high residuals (100s to 1000s of N). I may try to use forward dynamics with the force reporter as you suggested to try and tune the bushings until I can get realistic performance from the model.
I don't think I'm having the problem you describe in your second paragraph, as I'm not connecting a spring to another spring. All the bushings I'm adding are between a body on the human model and a body on the exoskeleton model. There are other springs on the Exo, but they are not attached to the same bodies that the bushings are attached to.
Sorry for the novel I wrote here, thanks for taking the time to address my questions.
Eric Stetz
Thank you for your reply. I have actually moved back to using a combined model, which I have attached by using point constraints. In order to get the constraints to work, I am only using 1 constraint between the exoskeleton torso to the human torso. This represent a connection at the shoulders (Using one connection at each shoulder resulted in the model crashing every time, possibly from being over-constrained?). I also have 1 constraint on each foot between the exoskeleton and human foot bodies. I used point constraints as I still need a bit of rotational compliance in the model to complete the motion correctly.
Running CMC this way I have gotten promising results, but the moment residuals for the human and exoskeleton are a bit high (50-60 Nm) and the reserve actuators for the exoskeleton joints are much higher than acceptable (although the human reserves are very low). I think this may be due to the fact that there isn't any rotational support at the constraint points which would exist in real life to counteract the moments at those locations. I am trying now to provide some rotational support by adding bushings at each of the constraint points with only rotational stiffness and dampening. However, I am still working to find the appropriate rotational stiffness and dampening values to use. Right now too low of values (k=1000) do nothing, and too high of values (k=10000) add a ton of extra force to the model resulting in very high residuals (100s to 1000s of N). I may try to use forward dynamics with the force reporter as you suggested to try and tune the bushings until I can get realistic performance from the model.
I don't think I'm having the problem you describe in your second paragraph, as I'm not connecting a spring to another spring. All the bushings I'm adding are between a body on the human model and a body on the exoskeleton model. There are other springs on the Exo, but they are not attached to the same bodies that the bushings are attached to.
Sorry for the novel I wrote here, thanks for taking the time to address my questions.
Eric Stetz