GaitSym 3.0

GaitSym is a forward dynamic modelling program. What that means is that you specify the forces and the program uses Newton's Laws to calculate the movements. It uses the Open Dynamics Engine physics library to do most of the hard work ( and provides a file format and display system so the user does not have to do any programming. It also provides various muscle models so that the forces can be generated directly from muscle activation levels and a number of hooks to allow it to be used with global optimisation tools such as genetic algorithms. The software is open source and is released under the GNU General Public License version 3.0 except for parts of the software that are covered by different licences (for example the OpenDE portions are covered by either Lesser GPL or a BSD license). If this license does not let you do what you want to do then please contact me and I am sure I can sort something out.

GaitSym version 3 with a chimpanzee model.


The following downloads are provided:
You can also browse the GaitSym 3.0.0 source tree here.


The program is developed under MacOSX Leopard using the Qt GNU GPL v. 3.0 Version cross-platform development system. It therefore compiles and runs on many of the Qt supported platforms including Linux and Windows. There is also a command line version designed for batch processing. Source code, makefiles and Qt project files are provided for MacOSX, Linux and for MinGW to allow compilation under Windows. Binary files for MacOSX and Windows are also provided.
  • For MacOSX, double-click the downloaded DMG file and drag the application to a convenient place on your hard drive.
  • For Windows, double click the downloaded ZIP file and decompress the contents to a convenient folder on your hard drive. The DLL files and the EXE files all need to be in the same folder for the program to run correctly.
What's New

There are two main differences between version 3 and version of 2 of GaitSym. Firstly, and most obviously, there are a lot of new options in the config file that allow you to specify new elements of the model. Of particular interest are the new Reporter and Controller elements. These are detailed in the manual and listed here. However there are also some major under-the-hood improvements which may be less obvious but which will make a difference. The biggest change is the adoption of more modern graphics card coding practices. This means that the display is much faster on modern cards. However it also means that the programme probably will not work on very old cards. Saying that I have not managed to find a computer that did not work so I think anything less than 5 years old will be fine and probably anything less than 10 years old will also be perfectly OK. The source code has also been cleaned up a little to allow some of the new features to be implemented efficiently and the custom version of OpenDE has also been modified so if you wish to recompile the code then you will need to use the new version. As before precompiled binaries for both MacOSX and Windows are available. There are also some interface changes that mean that the visual appearance of the model can be adjusted much more easily.

Interface Changes
  • BadMesh is no longer specified globally using the on screen checkbox but instead is defined using the "BadMesh"="true" option on a BODY by BODY basis.
  • The display can optionally include a Framerate to show the current graphics card refresh rate.
  • New output options to accommodate extra joints plus task specific Reporters.
  • Built in Quicktime output and fixed window sizes to produce standard resolutions (e.g. 1080p)
Config Changes

OldStyleOutputs option removed.
New SanityCheckLeft, SanityCheckRight, SanityCheckAxis options for sanity checking symmetrical models.

Almost all the control options are now set by a Preferences pane in the GUI. Drawing order is no longer used and instead all objects are sorted by transparency before drawing and the the most opaque objects are drawn first. This is not perfect but is a good compromise between speed and the transparent effect.

New body specific damping controls.
New BadMesh option to allow control of the bad mesh option on a per body level.

Added new joints: Universal and AMotor. There is also experimental support for joint limits in the Ball joint.

Muscle Cylinder directions can now be specified by axis instead of quaternion.

These are a new way of getting custom data out of the simulation. Currently implemented are Torque, Position and SwingClearance reporters which can be used to investigate arbitrary locations, the torques and moment arms of specific muscles around joints, and can be used as simulation abort criteria if required.

New PIDMuscleLength controller available.

New Models

A new base human model is available with rather better moment arms around the knee particularly and set using posable segment position definitions so that starting pose can be set more easily. It also includes a ball hip joint and a universal ankle joint.