Skip to content

Releases: JuliaRobotics/RigidBodyDynamics.jl

v1.1.0

23 Oct 02:03
a9c66b6
Compare
Choose a tag to compare
  • Add SPQuatFloating joint type (thanks @ryanelandt).
  • Add principal_value! function, similar to Rotations.principal_value (thanks @ryanelandt).
  • Adapt to Rotations.jl changes.
  • Initiate parse_urdf API change. Old methods are not yet deprecated. For the new method, the root_joint_type keyword arguments should still be considered experimental and may be changed in an upcoming release.
  • Add write_urdf (serialization to the URDF file format).
  • Fix #434, array conversion consistency.
  • Various doc fixes, including a fix for #300.
  • Fix all example notebooks.

v1.0.2

08 Sep 03:17
76c23d5
Compare
Choose a tag to compare

Bug fix release.

  • fix forward mode automatic differentiation using ForwardDiff for mechanisms with contacts (thanks, @rdeits)
  • fix showing ConstantDicts (thanks, @rdeits)

v1.0.1

04 Sep 20:41
185a11a
Compare
Choose a tag to compare

Fixes related to loop joint functionality (#482).

v1.0.0

18 Aug 01:32
d9f5cc6
Compare
Choose a tag to compare
  • Final fixes for Julia 1.0.
  • Add point_acceleration function (#472).
  • Add Baumgarte stabilization to avoid drift in loop joint constraints (#478).
  • Fix a scalar type issue in simulate (#475, thanks @blandry)

RigidBodyDynamics.jl will adhere to semver from this point on.

v0.9.0

04 Aug 15:17
9c96a44
Compare
Choose a tag to compare
  • Switch order of arguments for PointJacobian (frame first, to match all other spatial types).
  • More fixes for 0.7.
  • Minor cleanup.

v0.8.0

10 Jul 22:01
f0720d1
Compare
Choose a tag to compare
  • Fix all deprecation warnings on latest Julia nightly.
  • Drop support for Julia 0.6
  • Significant performance improvements (see the updated benchmark results)

v0.7.0

03 Jul 11:52
611aaf0
Compare
Choose a tag to compare
  • Compatibility with Julia 0.7-beta (save for some notebooks due to additional test dependencies), with some deprecation warnings
  • Store motion subspaces and wrench subspaces column by column in MechanismState. This allows dropping two type parameters from MechanismState (MotionSubspaceCollection and WrenchSubspaceCollection). See #435 for more info. This is technically a breaking change, but probably won't affect downstream code.
  • Add point_jacobian!/point_jacobian (thanks, @rdeits!)
  • Implement Jacobians for q̇ <-> v (thanks, @rdeits!)

v0.6.1

11 May 20:37
8141cb8
Compare
Choose a tag to compare
  • fixed mistake in URDF rotation parsing. Thanks @rdeits.
  • add IntervalArithmetic example notebook.

v0.6.0

25 Apr 18:20
c498998
Compare
Choose a tag to compare

Highlights:

  • Progress towards compatibility with Julia master
  • Add an example notebook showcasing automatic differentiation
  • Put q̇ in DynamicsResult
  • Stop relying on inference so much in DynamicsResult-related code (#414). This works around inference limits that can be triggered when using ForwardDiff.
  • Fix flip_direction (called when rerooting the kinematic tree): it should flip the joint bounds as well.
  • Add support for planar joint parsing from URDF (#424) (work done by @rdeits)

Deprecations:

  • Deprecate Base.set!(state::MechanismState, x::AbstractVector) in favor of Base.copy!(state, x)
  • Deprecate state_vector(state::MechanismState) in favor of Vector(state)

v0.5.0

28 Feb 15:34
af96b9c
Compare
Choose a tag to compare

Highlights:

  • significant performance improvements for all of the main algorithms
  • enable controller-in-the-loop simulation with simulate (but see RigidBodySim.jl for a more full-fledged version of this)
  • add PDControl submodule (mostly for internal use in future Baumgarte-stabilization, but can be used by external users as well)
  • add StateCache, which manages the creation, storage, and efficient (type-stable) lookup of MechanismState instances of various scalar types, associated with a given Mechanism. StateCache makes it easy to write efficient generic functions involving RigidBodyDynamics.jl functionality.
  • add JointID and BodyID as light-weight ways to refer to Joints and RigidBodys. Usage of these throughout the codebase played a big part in the performance improvements.
  • motion subspaces and constraint wrench subspaces in world frame are now stored as TypeSortedCollections, and the types of these collections have been added to the type parameters of MechanismState. This was another big part in performance improvements.
  • add SegmentedVector, an AbstractVector that stores a parent AbstractVector, as well as a list of views into the parent, which together cover the parent. These are used to store e.g. configuration and velocity vectors throughout the codebase now, and have allowed removal of UnsafeVectorView/fastview.
  • export configuration_derivative!
  • general code cleanup

Breaking changes:

  • UnsafeFastDict has been replaced with IndexDict, which is a fast Associative type whose keys are an AbstractUnitRange. For efficiency reasons, several algorithms no longer accept Associative{<:RigidBody, T} algorithms, but instead require BodyDict{T} inputs, where BodyDict is an alias for an IndexDict with a Base.OneTo range of BodyID keys. Analogously, Associative{<:Joint, T} arguments have become JointDict{T}s.
  • MechanismState has additional type parameters: MotionSubspaceCollection and WrenchSubspaceCollection.
  • The internals of Graphs.TreePath have been changed a bit to accommodate the MotionSubspaceCollection change in geometric_jacobian!.
  • GenericJoint has been removed. Mechanism now simply stores joints of various types in type-heterogeneous containers. The MechanismState constructor no longer makes 'typed' copies of the joints, but simply sorts the existing joints by type.
  • Several algorithms that used to accept AbstractVector arguments now only accept SegmentedVectors (with arbitrary parent vector type).