MocoTrack: Muscle Driven vs. Actuator Driven Problem

OpenSim Moco is a software toolkit to solve optimal control problems with musculoskeletal models defined in OpenSim using the direct collocation method.
POST REPLY
User avatar
cedric attias
Posts: 11
Joined: Tue Jan 10, 2023 8:22 am

MocoTrack: Muscle Driven vs. Actuator Driven Problem

Post by cedric attias » Mon Oct 07, 2024 8:12 am

Hello,

Question about MocoTrack, and Moco in general.

Let's say I am trying to drive a specific motion using a set of muscles.

I am only interested in a particular subset of muscles, but more muscles/actuators may be required to actually initiate the motion I desire.

If I am using MocoTrack, but I am missing the required muscle/reserve actuator to drive this motion, will the model still be able to track?

If not, do I need to add coordinate actuators to act in place of the missing muscles required for that motion?

Thanks!

Cedric

User avatar
cedric attias
Posts: 11
Joined: Tue Jan 10, 2023 8:22 am

Re: MocoTrack: Muscle Driven vs. Actuator Driven Problem

Post by cedric attias » Mon Oct 07, 2024 8:37 am

As a follow up:

Does a coordinate actuator integrated directly into the model work like a reserve actuator (implemented using: ModOpAddReserves)?

Do the reserve actuators added using ModOpAddReserves only activate if the coordinate actuator does not generate sufficient force, or are they used simultamneously? I am looking to supplement my coordinate actuators using a ModOpAddReserves, ONLY if the coordinate actuators do not generate sufficient force.

User avatar
Nicholas Bianco
Posts: 1071
Joined: Thu Oct 04, 2012 8:09 pm

Re: MocoTrack: Muscle Driven vs. Actuator Driven Problem

Post by Nicholas Bianco » Mon Oct 07, 2024 1:06 pm

Hi Cedric,

If you are only interested in a subset of muscles, but they are not strong enough to track the desired motion, then yes you will need to add CoordinateActuators to the problem.

ModOpAddReserves is just a utility function for adding a set of CoordinateActuators to your model, since it is a common use case. If you want the optimizer to use the muscles preferentially over the actuators, then you can either 1) apply a large weight (~100) to the CoordinateActuators in your MocoControlGoal, or 2) make the actuators so weak that they will be naturally expensive to use in the MocoControlGoal. I'd probably recommend option 1), where the actuators have bounds [-1, 1] and a reasonably strong optimal force.

Best,
Nick

POST REPLY