...
In this project, I make use of different use of the objective function in CMC in order to find optimal input force.
- CMC procedure contains static optimization process, and it tries to minimize the cost function J which can be represented as
- CMC procedure contains static optimization process, and it tries to minimize the cost function J which can be represented as
When we add active actuators on OpenSim Model, the activation term in cost function becomes
- Where X_muscle is muscle control and X_actuator is actuator control. X_actuator is part of activation state, and it is also adjusted after the optimization process.
- Now, if we diminish the influnece of X_actuator on J, and run CMC, the optimizer tries to find X_actuator in order to minimize muscle activation.
- We know that minimizing muscle activation correponds to minimizing metabolic cost, so we can we can say that the actuator input force resulted from CMC after diminishing the influence of X_actuator is the optimal actuator input for most efficient metabolic reduction.
- Muscle force is constructed by the equation
- And if we assign large value of maximum force to each actuator, then actuator control x_actuator decreases, so that the influence of actuator to J is decreases.
- Using this methodology, I could find an optimal input for each actuator, and also see the metabolic cost reduction after active actuators are added to a model.
Result & Discussion
Metabolic cost change
Loaded walking | Unloaded walking | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
| ||||||||
Loaded walking
I put together the metabolic cost changes in loaded gait case and unloaded walking case
The first thing to notice is that the metabolic cost is much lower during unloaded walking than loaded walking. Loaded walking costs only 75% metabolic energy compared to loaded walking. Also, we can see that ankle actuator works better to reduce metabolic cost than hip actuator, especially in loaded walking case.
In loaded walking case, ankle actuator reduces metabolic cost by 10%, while hip actuator reduces it by about 7%.
On the other hand, in unloaded walking case, ankle actuator reduces metabolic cost by 10%, while hip actuator reduces it by 1%.
Therefore, we can say that ankle actuator helps metabolic cost reduction better than hip actuator if we have an optimal actuator which has no maximum force limitation.
Optimal actuator input
Loaded walking | Unloaded walking | |
---|---|---|
Ankle actuator | ||
Hip actuator |
In hip actuator case, the optimal input force is very complex, and I could not find any intuition from it. My initial guess on the optimal input force of hip actuator was to follow the hip flexion angle change, but the result doesn’t follow it at all. The complexity may be due to the optimization procedure in CMC, and I will try to figure out the reason in a future. However, the good thing about hip actuator is that it doesn’t require large amount of force to reduce the metabolic cost. The maximum force in this optimal input is about 400N, which is significantly lower than ankle actuator input, and it is achievable.
Unloaded walking
This is the optimal input force result in unloaded case. Still, you can see that ankle actuator input profile is clean and goes well with our intuition, but hip actuator input profile isn’t.
Analysis of optimal input force for ankle actuator
This result shows how muscle force changes when a model has ankle actuators. The graphs show plantar flexor muscle forces, and first row is muscle forces of a baseline model, and the second row is the muscle forces of a model with ankle actuator.
The red line is The muscle forces of gastrocnemius, and it barely change when ankle actuators are added. However, other muscle forces, which are from uniarticular muscles, are significantly decreased. Therefore, we can say that ankle actuator assists uniarticular muscles during loaded walking
If we draw the sum of baseline uniarticular forces and active actuator input force together, we can see that the active actuator force follows baseline uniarticular muscle forces. The redline here is sum of baseline uniarticular forces and blue line is active actuator input force. This force signal is clear and easy to implement real world. However, the maximum actuation force is about 2500 N, which is too high, so we need to deal with it if we want to use this profile.
Best realistic actuation input force for ankle actuator
As the optimal input force for ankle actuator is not achievable, I tried to find a realistic ankle actuator force which has its maximum force of 400N. My initial guess was to saturate the optimal input force that I found earlier at 400N. Therefore, I cut the optimal input force at 400N, and create new input force. I added this force profile to CMC tool as a control constraints, and run CMC again.
I compared the saturated optimal input to a new CMC results which was acquired with 4000N maximum actuation force and bounded control input between 0 and .1. The new CMC results also has maximum force of 400N as the control input is bounded, and it gives better input force in terms of metabolic cost reduction than a result of CMC which was acquired with an actuator with 400N actuation and conventional control input.
In these graphs, you can see a similaritly between the saturated optimal input and a results of new CMC procedure.
Loaded walking | Unloaded walking |
---|---|
Discussion
ModelBiarticular actuator
Now that we know both ankle actuator hip actuator works well to reduce metabolic cost during loaded walking, the natural progress is to create biarticular actuator which can affect both ankle plantar flexion and hip extension. In order to reduce the number of actuator, I created biarticular actuator with 1 DOF, and see how much it reduces metabolic cost, and what it’s optimal input force is.
Simulation result
Loaded walking- rate of metabolic reduction
Control input is noisy, which makes it hard to realize
Biarticular actuator is not as effective as uni-articular actuators in terms of metabolic cost reduction.
Conclusion
Featured result
Limitations
Source code
You can find the model that I used in htt~~~~