You are viewing the documentation for OpenSim 2.4. Are you looking for the latest OpenSim 4.0 Documentation?

Creating Your Own Analysis

In the previous chapter, we created a main program that built a new OpenSim model and performed a forward simulation on it. Another way to utilize the OpenSim API is to use it to create new kinds of objects that are not available in OpenSim. 

One particularly common example of such objects is an Analysis. In OpenSim, an Analysis object defines a computation that gets performed repeatedly either during integration of the equations of motion in a forward simulation or during analysis of a trajectory. While OpenSim comes with a set of Analysis objects, users often wish to perform new kinds of computations to support their work/research needs. Instead of trying to anticipate all possible uses, OpenSim allows users to write their own Analysis and attach it to a simulation or to other tools in OpenSim that process trajectories. 
When creating an Analysis, you'll have to decide which of two different ways to implement it: 

  • Dynamic Library Option (Option A): In this scenario, your class implementing the OpenSim::Analysis interface will be built into a separate dynamic link library (.dll on Windows). Then, you will be able to load this dynamic library into the GUI or into your main program or have it be used by different tools. This approach allows you to share or distribute your Analysis more easily and to reuse it in your work without recompiling it. The disadvantage is having to define the class that includes properties that permit serialization to/from XML files.
  • Main Program Option (Option B): In this scenario, you compile your Analysis along with your main program for immediate use. The advantage of this is that you can, optionally, do away with implementing the parts of the Analysis API specific to serialization, so it is faster to write and test. The disadvantage is that you cannot use it in the GUI or embed it in XML files, which are the setup files for most of the OpenSim tools. Also, you will have to manually point your build system to the Analysis code you are using, rather than link to or load a library that you build once.

Your use case will dictate which approach to take for the long term. In some cases, you may start out using option B, do some testing, and then migrate to option A for the long term. 
The OpenSim distribution includes a templates directory (if you installed to the default location, the full path is C:\Program Files\OpenSim 2.0\sdk\templates) showing the use of option A, as it is the more general use case and is more involved, as well. The distribution also contains the same code built as a plug-in (by default, this is available in C:\Program Files\OpenSim 2.0\sdk\examples\plugin). In the example below, we will use the plug-in to build our Analysis:

Next: Creating Your Own Analysis Part One

OpenSim is supported by the Mobilize Center , an NIH Biomedical Technology Resource Center (grant P41 EB027060); the Restore Center , an NIH-funded Medical Rehabilitation Research Resource Network Center (grant P2C HD101913); and the Wu Tsai Human Performance Alliance through the Joe and Clara Tsai Foundation. See the People page for a list of the many people who have contributed to the OpenSim project over the years. ©2010-2024 OpenSim. All rights reserved.