All Versions
12
Latest Version
3.7
Avg Release Cycle
219 days
Latest Release
566 days ago

Changelog History
Page 1

  • v3.7 Changes

    December 01, 2019

    ๐Ÿš€ This release of Simbody includes a smoothed compliant contact model and a few bug fixes.

    • The new SmoothSphereHalfSpaceForce provides a continuous and differentiable contact model, ideal for use with gradient-based optimization algorithms (PR #667).
    • ๐Ÿ›  Fixes a memory issue with CPodes (PR #642).
    • ๐Ÿ“„ The new CMake variable INSTALL_DOCS controls whether docs are installed (PR #655).
    • ๐Ÿ›  Fixes a bug with calculating constraint acceleration errors (PR #670).
    • ๐Ÿ›  Fixes Pathname::getThisExecutablePath() for FreeBSD (PR #672).
    • ๐Ÿ›  Fixes simbody-visualizer on macOS 10.15 Catalina when using high-DPI screens. Now, simbody-visualizer is an app bundle (simbody-visualizer.app) on Mac (PR #676).
  • v3.6.1 Changes

    June 12, 2018

    ๐Ÿš€ This patch release is 3.6 with minor changes:

    • ๐Ÿ›  Fixed a bug wherein a program may crash when using the visualizer if
      the visualizer window was closed manually.
  • v3.6 Changes

    February 21, 2018
    • ๐Ÿ‘ฎ Forced GCC to be at least 4.9.0, so that new C++11 features like regular expressions can be used (PR #485).
    • โšก๏ธ Minimum Ubuntu version supported 14.04 LTS (Trusty), with a manual update of GCC.
    • Recommended minimum Ubuntu version : 15.04 (Vivid), that is shipped with GCC 4.9.2.
    • โž• Added mixin classes ResetOnCopy<T> and ReinitOnCopy<T> to force default construction or reinitialization of data members on copy construction or copy assignment, without requiring a user written copy constructor and copy assignment operator just to get those reinitializations done.
    • โž• Added clone() method to SimTK::Function_ base class and implemented it for Simbody-defined concrete Function classes. Made concrete Function members non-const to permit assignment, and modified Function_::Step to allow changing its parameters after construction.
    • Added C++11 features to the SimTK::Array_ container including std::initializer_list construction, move construction, move assignment, and emplace methods.
    • Prevented copy construction of Array_<T> from Array_<T2> unless T2 is implicitly convertible to T. Previously this was allowed if there was any conversion possible even if it was explicit. Array_ was being too relaxed about this, causing hidden copies to occur.
    • โž• Added CloneOnWritePtr smart pointer (acts like ClonePtr but with deferred cloning).
    • โšก๏ธ Updated ClonePtr and ReferencePtr APIs to follow C++11 standard smart pointer terminology. This required deprecating some existing methods and operators, so you can expect to get annoying warnings until you switch to the new API.
    • ๐Ÿ‘ฏ Possible BREAKING CHANGE: ClonePtr's operator==() previously delegated to the managed object; now it just operates on the managed pointer as is done in other smart pointers. Consequently now only a clone() method is required for a type to be contained in a ClonePtr; previously it had to support comparison also.
    • ๐Ÿ‘€ Make doxygen run silently so errors will be easier to see.
    • โž• Added new methods to Pathname class for interpreting pathnames against a specified working directory instead ๐Ÿ‘€ of the current working directory (thanks to Carmichael Ong). See Issue #264 and PR #307.
    • โž• Added the ability to parallelize forces, robustness/performance improvements ๐Ÿ”’ to ParallelExecutor, mutex state lock. PR #414.
    • โž• Added move constructor and move assignment to State (very fast).
    • โž• Added "stage version" counters for time, q, u, and z that are incremented whenever one of these changes.
    • Separated time-independent position and kinematics calculations so that they are not invalidated by a time change. These can also be initiated explicitly with new methods realizePositionKinematics() and realizeVelocityKinematics(). They are invalidated by a change to q or to u, respectively.
    • Modified floating point-to-String conversions to use lossless number of digits by default. An attempt to use the default type-to-String conversion when no stream insertion operator is available is now a runtime rather than compile time error. PR #459.
    • โฌ†๏ธ Upgraded SimTK::Xml from class to namespace; local classes like Xml::Element were promoted to namespace level within Xml. This was necessary to untangle Array_ and Xml classes which can be mutually dependent. This change is backwards compatible for those following the recommended use of the previously-available Xml::Document typedef instead of Xml directly. Otherwise you will have to change uses of SimTK::Xml to SimTK::Xml::Document. Also any using SimTK::Xml; must be removed or replaced with using namespace SimTK::Xml or using SimTK::Xml::Document depending on the intent. PR #460
    • ๐Ÿ‘Œ Improved NiceTypeName<T>::namestr() to produce a canonicalized name that is the same on all platforms (with a few exceptions). Added xmlstr() method to make an XML-friendly modification of namestr() that replaces angle brackets with curly braces. Added a new regression test to verify that the names come out right. PR #461
    • โž• Added helper class IteratorRange to use range-based for loops with a pair of iterators. PR#467
    • โž• Added the method State::isConsistent() to compare two states PR #469.
    • Started using RPATH on OSX so that users need not set DYLD_LIBRARY_PATH to run simbody-visualizer or the example executables, regardless of where you install Simbody.
    • ๐Ÿ‘Œ Improved the ability to find the simbody-visualizer executable when Simbody is installed in non-standard locations or if the Simbody installation is relocated (even to different computers). This enhancement is only for non-Windows operating systems.
    • ๐Ÿ›  Fixed a bug when compiling on macOS (OSX) with SDK MacOSX10.12.sdk, related to the POSIX function clock_gettime(). Issue #523, PR #524
    • ๐Ÿšš Replaced usages of pthreads with C++11 classes. Removed the following classes:
      • ThreadLocal
      • AtomicInteger
    • ๐ŸŒ Deprecated some badly-named methods in MobilizedBody::Translation Issue #604
    • โœ‚ Removed support for long double. PR #597
    • ๐Ÿ›  Fixed a bug in MultibodyGraphMaker where massless bodies were handled incorrectly. PR #592 and PR #594.
    • ๐Ÿšš Moved Ipopt into the namespace SimTKIpopt to avoid duplicate symbols when combining Simbody with an independent Ipopt.
    • ๐Ÿ›  Fixed a bug where RowVectors could not be constructed with 0 elements.
    • CMake: Downstream projects no longer need to use include_directories().
    • CMAES: You can now specify a different initial step size (standard deviation) for each variable. PR #540
    • SimbodyMatterSubsystem now provides a function for the error in acceleration-level constraint equations. PR #517
    • ๐Ÿ‘ The visualizer now supports lazily loading mesh geometry from a file. PR #475
    • ๐Ÿ Simbody can now be built with MinGW on Windows. PR #441
  • v3.5.4 Changes

    October 01, 2016

    ๐Ÿš€ This patch release is 3.5.3 with minor changes:

    • ๐ŸŽ The source will now compile on macOS with Xcode 8 and SDK MacOSX10.12.sdk.
  • v3.5.3 Changes

    June 15, 2015

    ๐Ÿš€ This is the release that shipped with OpenSim 3.3.

    • Small changes to allow compilation with Visual Studio 2015 (PRs #395 and #396).
    • ๐Ÿ›  Fixed a problem with SpatialInertia::shift() with non-zero COM offset, see issue #334. This also affected calcCompositeBodyInertias(). These are not commonly used.
    • ๐Ÿ›  Fixed a problem with VectorIterator which could unnecessary copying, possibly affecting mesh handling performance. See issue #349.
  • v3.5.2 Changes

    May 16, 2015

    ๐Ÿ Same as 3.5.1 except on 64 bit Windows which now has a patched version of Lapack that
    โž• addresses an obscure error handling problem that caused trouble for some OpenSim users. This release is intended to support OpenSim; there is no reason for Simbody users to upgrade from 3.5.1 although it is harmless to do so.

    ๐Ÿ‘€ The change here is a patch to Lapack 3.4.2 (64 bit) to fix the bug discussed in Issue #177 and PR #342. There were two functions where convergence failures incorrectly caused an abort (XERBLA in Lapack-speak) that bubbled up to trash an IpOpt optimization that should have recovered. See discussion on Lapack forum: http://icl.cs.utk.edu/lapack-forum/viewtopic.php?f=13&t=4586. The patched Lapack DLL is binary compatible with the previous one, same functions and ordinals.

  • v3.5.1 Changes

    January 01, 2015

    ๐Ÿš€ (This patch release fixed an installation problem but is otherwise identical to 3.5.)

    ๐Ÿš€ Release 3.5 focused primarily on infrastructure for and prototyping of rigid contact and impact, and the development of examples showing how to perform task space control using Simbody. These two projects were supported by our DARPA research subcontract with Open Source Robotics Foundation, and were integrated with Gazebo. Further development for rigid contact is required for smooth integration into Simbody; this is planned for Simbody 4.0 and only the bravest among you should attempt to use rigid contact before then. The task space control examples TaskSpaceControl-UR10 and TaskSpaceControl-Atlas can be found in the Simbody examples directory.

    โšก๏ธ Chris Dembia integrated Nikolaus Hansen's Covariant Matrix Adaptation Evolution Strategy (CMA-ES) global optimizer into Simbody's existing Optimizer class framework, and implemented a multithreading capability for it. This is ready to use and we would like feedback. Thanks to Nikolaus Hansen for allowing us to include this in Simbody under the Apache 2.0 license.

    ๐Ÿ“š There were numerous smaller improvements to Simbody since the previous release, in build and installation, documentation, performance, bug fixes, and small enhancements. There are no known incompatibilities with previous release 3.4.1 and we highly recommend that you upgrade. For details, see CHANGELOG.md.

    ๐Ÿ‘€ For installation instructions, see README.md.
    ๐Ÿ‘€ For information on contributing to the Simbody project, see CONTRIBUTING.md.

    If you have questions or problems, please post to the Simbody Forum.

  • v3.5 Changes

    December 18, 2014

    ๐Ÿš€ This release focused primarily on infrastructure for and prototyping of rigid contact and impact, and the development of examples showing how to perform task space control using Simbody. These two projects were supported by our DARPA research subcontract with Open Source Robotics Foundation, and were integrated with Gazebo. Further development for rigid contact is required for smooth integration into Simbody; this is planned for Simbody 4.0 and only the bravest among you should attempt to use rigid contact before then. The task space control examples TaskSpaceControl-UR10 and TaskSpaceControl-Atlas can be found in the Simbody examples directory.

    โšก๏ธ Chris Dembia integrated Nikolaus Hansen's Covariant Matrix Adaptation Evolution Strategy (CMA-ES) global optimizer into Simbody's existing Optimizer class framework, and implemented a multithreading capability for it. This is ready to use and we would like feedback.

    ๐Ÿ“š There were numerous smaller improvements to Simbody since the previous release, in build and installation, documentation, performance, bug fixes, and small enhancements. There are no known incompatibilities with previous release 3.4.1 and we highly recommend that you upgrade.

    ๐Ÿ†• New features

    • โž• Added Task Space control examples (pr #237 #238) (work supported by OSRF)
    • โž• Added IMU (orientation) tracking assembly condition for IK (pr #239)
    • โž• Added STL file reader to PolygonalMesh class (issue #57, pr #176)
    • โž• Added CMA-ES global optimizer with multithreading support (pr #249 #253 #267 #268)
    • ๐ŸŽ‰ Initial rigid contact support (pr #137). Includes a collection of new unilateral constraints and a specialized solver. Not yet well integrated into Simbody overall. (work supported by OSRF)
    • ๐Ÿ‘ Implemented PLUS method impact handling (issue #115 #205, pr #226) (work supported by OSRF)

    ๐Ÿ› Bugs fixed

    • ๐Ÿ›  Fixed bug in orientation of non-camera-facing text in visualizer (issue #214, pr #215)
    • ๐Ÿ›  Fixed bug in mesh triangulation (issue #198, pr #199)
    • ๐Ÿ›  Fixed Assembler bugs; could sometimes make initial solution worse or report spurious failure (issue #164 #167, pr #165 #168)
    • ๐Ÿ›  Fixed Debug visualizer name to have "_d" (issue #5)

    Misc. improvements

    • ๐Ÿ‘Œ Improved regression test timing framework to make it useful for multithreaded tests (pr #265)
    • Much nicer Doxygen for Rotation class (issue #183)
    • Reorganized Simbody example programs (pr #238)
    • โž• Added HalfSpace-ConvexImplicitSurface contact tracker (issue #232, pr #233)
    • โž• Added methods for principal curvatures and directions on arbitrary implicit surface (pr #231)
    • โž• Added missing calcContactPatch() functionality for Hertz contacts (pr #224)
    • โž• Added Brick ContactGeometry shape (pr #218)
    • โž• Added several new bilateral constraints useful as the basis for unilateral constraints in rigid contact: Constraint::PointOnPlaneContact, SphereOnPlaneContact, SphereOnSphereContact, LineOnLineContact (edge/edge) (pr #137 #169)
    • ๐Ÿ‘Œ Improved constraint performance for several basic constraints (pr #137)
    • ๐Ÿšš Moved install instructions to README.md where they can be kept up to date (pr #144 and others)
    • Replaced distance constraint equations to use length rather than length2 (issue #3). This improves scaling when distance constraint is combined with other constraints.
    • ๐Ÿ“š Numerous improvements to build, install, documentation, and performance.
    • โž• Added CONTRIBUTING.md file explaining ways to contribute to the Simbody project.
  • v3.4.1 Changes

    March 31, 2014

    ๐Ÿš€ This release is functionally similar to 3.3 but has had extensive changes to build and install, mostly affecting Linux and OSX systems. The behavior should now conform better to standards on those platforms, thanks to the hard work of @scpeters and @j-rivero at Open Source Robotics Foundation and @chrisdembia at Stanford.

    ๐Ÿ‘€ There are a number of bug fixes but they will not be noticed by most users. The most numerically significant is that SimbodyMatterSubsystem::getTotalCentrifugalForces() now returns the correct result (see issue #112). There are several small new features and enhancements but they were targeted narrowly at specific use cases and are likely to affect only the people who were involved in their development.

    ๐Ÿ— If you run into problems with the build changes, please post to the Simbody forum.

  • v3.4

    February 22, 2014