Skip to content

Releases: JuliaRobotics/RigidBodyDynamics.jl

v0.4.0

19 Sep 22:50
Compare
Choose a tag to compare

Highlights:

  • add QuaternionSpherical and Planar joint types (#309, #306)
  • add support for storing position, velocity, and effort limits in Joints and parsing them from URDFs (#305, thanks @rdeits). Note that these limits are currently not used in the dynamics function.
  • add more angular and linear methods (which should be used instead of accessing members directly)
  • add normalize_configuration!(::MechanismState)
  • add a modification count to Mechanism and use it in MechanismState functions to check that the Mechanism hasn't been modified since construction of the MechanismState
  • code reorganization/cleanup: extracted out Spatial and CustomCollections submodules

Notable deprecations and breaking changes:

  • made Joint immutable (#312, fixes #310)
  • deprecate name function. Use base.string instead
  • remove last remnants of camelCase from the package. This includes:
    • renaming the frameBefore and frameAfter fields of Joint to frame_before and frame_after (accessible via functions with the same names).
    • renaming the gravitationalAcceleration field of Mechanism to gravitational_acceleration
    • renaming the maxRealtimeRate keyword argument of simulate to max_realtime_rate.
  • attach! functions now use keyword arguments. Deprecation warnings will help you update existing code to the new syntax.

v0.3.0

20 Aug 04:53
Compare
Choose a tag to compare

Release notes:

Highlights:

  • significant performance improvements: mass_matrix, inverse_dynamics, and dynamics are respectively 40%, 57%, and 11% faster. The biggest improvements are due to the introduction of TypeSortedCollection (#237, #247, #269, #293) and due to faster cache-staleness checks (#253, #254, #294).
  • remove fixed-maximum-size matrix code (StaticArrays/Base type piracy)
  • get rid of <:Number requirement for all types, mainly to support JuMP variable/expression types (#276).
  • add support for user-defined joint types (as opposed to only allowing QuaternionFloating, Revolute, Prismatic, and Fixed) (#247)
  • export dynamics_bias[!] (#295)

Notable deprecations and breaking changes:

  • drop Julia 0.5 support
  • geometric_jacobian[!] now returns/expects a GeometricJacobian with a number of columns that is equal to the number of velocities of the state, instead of the number of velocities of the kinematic path from the base to the body (#269)
  • DynamicsResult type parameters have changed order, to be more consistent with MechanismState. New constructor syntax for MechanismState and DynamicsResult. Deprecation warnings should help you transition to the new syntax. (#248, #286, #295 )
  • Joints are now parameterized on their JointType to allow joint-type-specific dispatch without resorting to @rtti_dispatch (#247). The old Joint{T} is now equivalent to GenericJoint{T}, an exported type alias. Note that methods called on GenericJoints that depend on joint type will generally allocate due to dynamic dispatch.
  • MechanismState is now additionally parameterized on the type of its TypeSortedCollection of Joints, to allow static dispatch based on joint types. (#247, #258)

v0.2.0

16 Jun 14:41
Compare
Choose a tag to compare

Highlights:

  • add 0.6 (rc3) support.
  • add basic penalty-based contact dynamics (point to world-fixed half-plane only at this point).
  • improve geometric_jacobian and momentum_matrix functionality: allow specification of frame in which they are expressed, add non-allocating versions.
  • introduce UnsafeFastDict and type aliases BodyDict and JointDict; use in MechanismState and in inverse_dynamics-related functions for performance without losing much convenience.
  • change Transform3D to be parameterized on underlying array type. Don't exploit sparsity by having a separate rotation and translation field anymore; just use a 4x4 matrix, since this allows for faster concatenation on recent machines with AVX instructions. Rotation and translation can be accessed using rotation and translation functions
  • add Wrench constructor given a force and an application point.
  • add point_velocity function.
  • reduce allocations in kinetic_energy, center_of_mass to zero
  • simplify constraint Jacobian structure in MechanismState: now it's just a Vector of TreePaths, instead of an opaque sparse matrix of Ints.
  • minor improvements to Graphs module (e.g. iteration over and printing of TreePaths)
  • add findbody, findjoint (RigidBody and Joint lookup by name)

Bug fixes:

v0.1.0

21 Mar 03:05
Compare
Choose a tag to compare

Highlights:

  • better support for closed-loop mechanisms (switch from tree + non-tree edges to directed graph + spanning tree representation in Mechanism). See #181 for details.
  • switch to native HTML generation for documentation.
  • some effort towards supporting Julia 0.6 (need StaticArrays updates for full support).
  • optional throttling in MuntheKaasIntegrator. Can be used to limit the speed of simulations, e.g. when realtime (but not faster-than-realtime) visualization is desired.

v0.0.6

16 Feb 20:22
Compare
Choose a tag to compare

Bug fix release:

  • fix allocation in colwise by inlining
  • fix #169
  • fix #170

v0.0.5

14 Feb 20:49
Compare
Choose a tag to compare

Highlights:

  • non-allocating momentum_matrix! method
  • streamline Mechanism type, including moving body-fixed frame definitions from Mechanism to RigidBody
  • add basic documentation using Documenter.jl, including quickstart guide
  • add partial support for parallel Mechanisms (kinematic loops)
  • add symbolic dynamics example (using SymPy.jl)
  • improve @framecheck error message

Fixed issues: