unable to run static optimization with clutchedpathspring

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Chetan Thakur
Posts: 17
Joined: Mon Oct 12, 2015 1:35 am

unable to run static optimization with clutchedpathspring

Post by Chetan Thakur » Tue Sep 06, 2016 10:05 am

Hi

I am using model and data provided in working with static optimization tutorial. I am trying to mimic actuator behavior by allowing it to actuate only during heels down and deactivate on heels up.

To do this I am using clutchedpathspring and controller to provide time and switch on flags. My .osim file is created properly but when I run static optimization I see no change in results of with and without clutchedpathspring. How do I figure out where is the problem ?
Attachments
subject01_RRA_Adjusted_clutchedpathspring.osim
model file(.osim) created using the attached code.
(194.46 KiB) Downloaded 74 times
addmuscle.txt
method with code I am using.
(2.33 KiB) Downloaded 66 times

User avatar
Chetan Thakur
Posts: 17
Joined: Mon Oct 12, 2015 1:35 am

Re: unable to run static optimization with clutchedpathspring

Post by Chetan Thakur » Wed Sep 07, 2016 10:14 pm

In the controllerset I added actuator list and piecewiseconstant function properties. I did not add control file.

Could this be reason for no change in results of static optimization with and without actuator. If yes how to create control file.

Thanks
-Chetan

User avatar
Dimitar Stanev
Posts: 1096
Joined: Fri Jan 31, 2014 5:14 am

Re: unable to run static optimization with clutchedpathspring

Post by Dimitar Stanev » Wed Sep 07, 2016 11:34 pm

Hi,

I think that during SO, all the controller are disabled.

https://github.com/opensim-org/opensim- ... n.cpp#L334

I am not sure what you want to do, but if you provide more details, maybe we can suggest you a workaround.

Regards

User avatar
Chetan Thakur
Posts: 17
Joined: Mon Oct 12, 2015 1:35 am

Re: unable to run static optimization with clutchedpathspring

Post by Chetan Thakur » Thu Sep 08, 2016 7:09 pm

In my experiment I use assistive along thigh muscle and measure the changes in gait. This assistive is actuates during initial swing between heels down and heels up period.

In opensim I am using model n data provided in working with static optimization tutorial.

When I run static optimization with pathspring as assistive force I could observe changes in the muscle activation and muscle force.

But when I try to mimic experiment behavior (assistive is actuates during initial swing between heels down and heels up period), using clutched pathspring by using time of heels down to provide control signal to clutchedpathspring. But as you said controllers are disabled during static optimization.

What would be alternative solution for this ?

User avatar
Dimitar Stanev
Posts: 1096
Joined: Fri Jan 31, 2014 5:14 am

Re: unable to run static optimization with clutchedpathspring

Post by Dimitar Stanev » Fri Sep 09, 2016 12:02 am

Hi,

It seems that the ClutchedPathSpring, is an Actuators, so probably SO is aware and produces control signals (can you check the control signals from SO to verify?). What you need to do is to increase the optimal force of the ClutchedPathSpring (by default is probably 1) so it will be preferred to muscles during optimization. Unfortunately, StaticOptimizationTarget is designed to work with optimal force, but in your case ClutchedPathSpring does not use the optimal forces to produce tension but has a more complex expression, thus if you set a value for the optimal force it will not correspond to the tension that will be developed by ClutchedPathSpring for a given control signal. I think you have two options as far as I can tell 1) to use different assistance device, 2) implement your own StaticOptimizationTarget and to account correctly for ClutchedPathSpring. Maybe someone else can suggest something better.

https://github.com/opensim-org/opensim- ... t.cpp#L110

Regards

User avatar
Chetan Thakur
Posts: 17
Joined: Mon Oct 12, 2015 1:35 am

Re: unable to run static optimization with clutchedpathspring

Post by Chetan Thakur » Sun Sep 11, 2016 7:40 am

Hi

I checked controls file generated from SO and it does not creates control signal for clutched path spring (I have attached the controls file actuator name = "leftleg").

I cannot change the assistive device so the only option is to have our own staticOptimizationTarget. I think it will take a while for me because I am not fully familiar with opensim philosophy.

Is there anyone who faces similar issue and has found the workaround without really having to write his/her own staticOptimizationTarget ?

Thanks
Chetan
Attachments
20160908_2_StaticOptimization_controls.xml
controls generated from SO
(417.85 KiB) Downloaded 49 times

User avatar
Chetan Thakur
Posts: 17
Joined: Mon Oct 12, 2015 1:35 am

Re: unable to run static optimization with clutchedpathspring

Post by Chetan Thakur » Tue Sep 13, 2016 10:24 pm

@Dimitar

Can you tell me if possible why static optimization disables all the controllers ? What are the implications of these ?

I could not understand this or get clue.

Thanks
Chetan

User avatar
Dimitar Stanev
Posts: 1096
Joined: Fri Jan 31, 2014 5:14 am

Re: unable to run static optimization with clutchedpathspring

Post by Dimitar Stanev » Tue Sep 13, 2016 11:11 pm

Hi,

There are two ways to solve the static optimization problem. Remember that the optimization tries to find a minimal set of activations a subject to the equality constraints tau = R * f(a) (1), where R is the moment arm matrix nxm and f is a vector of muscle forces for a given set of activation level.

The straight way would be to 1) realize the model to position level, 2) to compute the matrix R, 3) then to estimate the muscle forces f that will be produced for an activation level a and 4) to check whether the equality hold, and if not to find another set of activations, to recompute the muscle forces and to evaluate (1) again.

The estimation of the muscle forces is difficult because the force of the muscle is a dynamic state, there is an alternative approach, the one that is implemented. Compute a set of activation levels a and apply them to the muscles, then integrate forward in time and compute the acceleration produced by the muscle forces (needs to realize the model through acceleration level). Then compare the acceleration produced by the muscles to the one produced if tau is applied and use this comparison as an evaluation of how close you achieve equality (1).

Because the system is evaluated to acceleration level if you had any controllers added to your model sometimes you may introduce an infinite loop, and more importantly you don't want any controller to alter the activation levels that you provided.

Best

User avatar
Karthick Ganesan
Posts: 118
Joined: Thu Oct 10, 2013 12:11 am

Re: unable to run static optimization with clutchedpathspring

Post by Karthick Ganesan » Tue Mar 13, 2018 1:15 am

Hi,
I am also facing similar problem. I am using clutchedPathSpring and performing static optimization. Clutch is activated for a portion of time. But no force is produced. Stretch (z) is zero throughout. What may be the problem? Please suggest.

@Chetan, Hi. Did you find a solution to your problem?

Thanks & Regards,
Karthick.

POST REPLY