Model development, reduction, and validation are key components in the construction of a meaningful simulation study. In this exercise, you will build a simple model for use in a passive dynamic simulation of walking. For the past few decades, passive dynamic systems have been created to study the fundamental principles of locomotion. By studying passive dynamic systems, researchers aim to understand how the geometric and inertial properties of a system influence the occurrence and stability of low-energy gaits. Proper selection of passive system dynamics can reduce the demand of a control system and allow locomotion to be achieved by modulating a small set of signals. The knowledge gained by studying passive dynamic walking can help improve the designs of autonomous legged robots and rehabilitation robots for locomotion.

In this exercise, you will create an un-actuated, four-link walker model using the C++ OpenSim API. This simple model could be useful for exploring control and optimization strategies in the OpenSim API.

The objectives of this exercise are to

  • Learn the basics of using CMake to create a C++ project;
  • Learn how to create models using the OpenSim API;
  • Learn how to describe the kinematic relationships between bodies; and
  • Learn how to create basic model components, such as Bodies, Forces, and ContactGeometry.


The original exercise was created by Daniel Jacobs.

Model Description

The model you will create in this exercise consists of a rigid platform and a four-link walker. The platform is connected to the ground by a pin joint that permits rotation about the Z-axis (out of the screen as shown in the image at left). The angle of the platform is used to control the amount of potential energy added to the system after each stride. To maintain a stable motion, energy must be added into the system to overcome losses from ground contact. The pelvis of the walker is connected to the platform by a FreeJoint object, which allows 6-degree-of-freedom (i.e., unconstrained) motion between the pelvis and the platform. PinJoint objects are used to connect the thighs to the pelvis and the shanks to the thighs. ContactSphere elements are attached to the walker and a ContactHalfSpace element is attached to the platform. When these elements collide, contact forces are applied to the walker according to the Hunt–Crossley contact model.








The following slides were created for the Developer's Week July 2012 workshop. The main page can be found under Workshops → Developer's Week July 2012 → Dev Week Lecture Slides.

OpenSim API Lecture Slides

Simbody Lecture Slides


Plugin Lecture Slides




  1. Sherman, M.A., Seth, A., Delp, S.L. (2011). Simbody: multibody dynamics for biomedical research. Procedia IUTAM 2:241–261.
  2. Seth, A., Sherman, M.A., Eastman, P., Delp, S.L. (2010). Minimal formulation of joint motion for biomechanisms. Nonlinear Dynamics 62:291–303.