DynaMechs (Dynamics of Mechanisms):
A Multibody Dynamic Simulation Library

Home Page

    Introduction

    Features

    Requirements

    Download

    Installation

    Documentation

    Developers Info

    Contributors

    Contact
 
 

Projects/Screenshots

Publications
 
 
 
 
 
 

Powered by:

 
 

 

News
  • [01/07/18] Version 4.0pre1 (finally!) is released that includes Duane Marhefka's code for closed chain dynamics. This is a pre-release until I can get all the documentation updated. Go to the DynaMechs Project Home Page and look at the File Releases section.
  • [00/05/04] The DynaMechs home page has a new look.
  • [00/03/xx] Sourceforge has agreed to host the development of DynaMechs.
Introduction

Development of the DynaMechs simulation software began in 1991 by myself (Scott McMillan) at The Ohio State University Department of Electrical Engineering driven by the need to develop a real-time dynamic and hydrodynamic simulation system for two graduate research projects: (1) to aid in the development of a new walking control algorithm for Aquarobot, an underwater walking hexapod to be used in surveying and construction applications during construction of seawalls in Japan; and (2) to develop real-time control algorithms and operator interfaces for a remotely-operated vehicle (ROV), Tiburon, that was under development at the Monterey Bay Aquarium Research Institute (MBARI) for scientific research in the 3000m deep Monterey Canyon. Since then Duane Marhefka has added the capability to simulation systems with closed kinematic loops (new in version 4.0). Go to the Projects Page for more details about these and other projects that use the DynaMechs library.

This software package (a cross-platform, object-oriented, C++ class library) supports dynamic simulation of a large class of articulated mechanisms. From simple serial chains to tree-structured articulated mechanisms (including the simpler star topologies) to systems with closed loops. Code to compute approximate hydrodynamic forces are also available to simulate underwater robotic systems of this class including submarines (ROVs, AUVs, etc.) with one or more robotic manipulators. Joint types supported include the standard revolute and prismatic classes, as well as an efficient implementations (using Euler angles or quaternions) for ball joints.

Work is ongoing (mainly at The Ohio State University) to extend the capabilities of DynaMechs and develop a user-friendly front-end (called RobotBuilder) to facilitate ease of use while targeting the upperclass- and graduate-level engineering courses. Other work is underway to add the ability to simulate other joint types like the the 2 revolute degree of freedom universal (Hooke) joint, and to develop more accurate contact force models to aid in the development of walking machines.
 
Features

Current Features: 

  • Object-oriented (implemented in C++) therefore extendable (subclassing nodes is easy).
  • Cross platform - currently runs on:
    • Linux - g++ 2.91.x and 2.95.x,
    • Solaris - g++ 2.95.x,
    • IRIX - MIPSPro C++ 7.3.x
    • NT - VC++ 6.0 (all current Service Paks)
  • Joint types supported:
    • Rigid Z-transform (used for branching)
    • 1 DOF revolute and prismatic joints
    • 3 DOF ball-joint (euler angles or quaternion)
    • 2 DOF universal joint (in the works)
  • Support for serial chain and tree structured mechanisms.
  • Support for closed chain systems (NEW).
  • Support for fixed or mobile bases
  • Support for lumped parameter hydrodynamic effects (drag, added mass, lift,...)
  • Can be compiled for single or double precision computations
  • Multiple numerical integrators (choose your accuracy vs. numerical stability).
Software Requirements and Recommendations

Right now DynaMechs comes in source code only. This means that you have to compile the package for yourself.  The following is a list of other software you will need or is recommended to build this package: 

  • OpenGL v1.1 or later - DynaMechs is built on top of OpenGL.  A free workalike version, called Mesa, can be downloaded from www.mesa3d.org. If you go this route, I strongly recommend getting version 3.2 of Mesa (currently beta) over version 3.1 which exhibits many bugs.
  • GLUT - DynaMechs uses GLUT (OpenGL Utility Toolkit) for its demo/test programs. Version 3.6 or later which can be downloaded with the Mesa demos distribution or from its own site here.
  • GNU make v.3.77 or later is required to build with the provided makefiles.
  • C++ compiler - A current C++ compiler is also recommended.  I use MIPSPro 7.3.x on IRIX, VC++ 6.0 on NT with all available Service Paks,  g++ 2.91.66 that came with RedHat 6.0 Mandrake distribution, and g++ 2.95.x on Solaris.  This does not mean other compilers won't work, but I have had many problems with earlier versions (e.g., g++ 2.7.2) in the past. Support for g++ versions prior to 2.95.1 may be dropped in the near future.
  • Cygwin tools for NT is recommended if you are building on an NT platform with the provided makefiles. You can only use the provided makefiles if you install the Cygwin tools (a bash environment for Windows) from Cygnus . I have finally found some time to develop VC++ project files that mimic, as closely as I could, the behaviour of the provided makefiles...read below.

  • If you discover any other requirements let me know.

NOTE to Microsoft Dev Studio Users:  As of release 4.0, a workspace and project files have been included with the distribution in the make.msdev subdirectory.  You will not need Cygwin tools or  GNU make 3.77 to build the windows version of the libraries. It is required that you apply the latest DevStudio Service Paks to ensure a successful compiled.
 
Download

You can obtain the source code in one of two ways: (1) download a packaged released from the DynaMechs Releases Page, or (2) check out the distribution from the cvs server (details about how to do this is available on the DynaMechs CVS Repository Info Page. The entire package is contained in the DynaMechs module, and you can check this out with the following cvs command:
    cvs checkout dynamechs

This will create a directory called 'dynamechs' consisting of the following files/directories: 

Makefile   - top level makefile
make/        - all of the files used to build the package for each of the supported platforms
dynamechs/dm        - source files for the scenegraph library
dynamechs/dmu      - source code for miscellaneous utilities (libdmu.so or dmu.dll)
dynamechs/dmGL    - wrappers for GLUT objects used by test and example programs
dynamechs/testdm  - test programs
dynamechs/aquarobot  - example: the aquarobot with Gait algorithm
dynamechs/mesh  - example: a closed-chain example
dynamechs/models - data to test the loaders
Installation

Please read the INSTALL file for the latest instructions on building the package (it changes too often to include directions here).
 
Documentation

The following is a list of documentation related to DynaMechs:

Developers Information 

Sourceforge provides a host of services: CVS repository for the code and documentation; a bug list that also contains future features to be worked on; a mailing list, DynaMechs-dev, which also gets all of the CVS repository commit messages; and an anonymous FTP site. The links to these are listed below: 

Contributors

The following is a list of other contributors (thanks): 

  • Dr. David E. Orin and Dr. Robert B. McGhee - advisors on the original project
  • Duane Marhefka - quadruped simulation, closed-chain work
  • Chris Tegnalia and Steven Rodenbaugh - a more accurate contact force algorithm, and the driving force behind developing dynamic terrain.
  • Steven Rodenbaugh - developer of RobotBuilder which is an application using DynaMechs that provides a GUI for graphically building robots.
  • Kenji Suzuki, Kan Yoneda, Yutaka Kanayama - the gait algorithm in the aquarobot example.
  • Contact

    I am interested to know if you find DynaMechs useful. If you would like to give feedback and/or contribute to its development, please feel free to contact me.


    Last modified: 18 July 2001 by Scott McMillan