doc:model

SCONE Models

The central part of a predictive simulation is the (musculoskeletal) model of the entity you wish to simulate. Out-of-the-box, SCONE supports the models for the following simulation engines:

The Hyfydy Simulation Engine provides a 50-100x speedup over OpenSim, using the same muscle and contact models.

Even though SCONE is compatible with any model, the following is required for use in predictive simulations:

  • The model must contain actuators, such as muscles or torque-based actuators.
  • In order to simulate contacts, a model requires collision shapes and contact force models.
  • Models typically contain limit forces to simulate the forces generated by tendons and bony structures when a joint reaches a certain limit.
  • Since the optimization process requires many individual simulations, the model must have decent forward simulation performance. To check simulation performance in OpenSim, hit the Simulate button in the OpenSim UI. To improve simulation performance, please consider:
    • It is strongly advised to avoid OpenSim wrapping surfaces, because of the poor performance of their implementation.
    • Avoid low-mass bodies in your model (0.1kg or less) to avoid stiff equations.
    • Keep the amount of muscle-tendon-units as low as possible; this is especially true when using OpenSim models.
  • Even though SCONE works with both 2D (planar) and 3D models, for complicated tasks (such as gait it) is advised to start off with 2D models.

For examples of suitable models, please check the Tutorials and Examples. When using a custom model, it is always advised to use these models as a starting point.

In order to use the GaitStateController, SCONE must know the names of the leg bodies and contact forces. If these names are different from the defaults (femur, calcn and foot), you must specify them explicitly inside the ModelOpenSim3, ModelOpenSim4 or ModelHfd section of your SCONE scenario. For instance:

ModelOpenSim3 {
    ...
    
    leg_upper_body = my_femur_body_name
    leg_lower_body = my_foot_body_name
    leg_contact_force = my_contact_force_name
    
    ...
}