Releases: JuliaRobotics/RigidBodyDynamics.jl
Releases · JuliaRobotics/RigidBodyDynamics.jl
v1.1.0
- Add
SPQuatFloating
joint type (thanks @ryanelandt). - Add
principal_value!
function, similar toRotations.principal_value
(thanks @ryanelandt). - Adapt to Rotations.jl changes.
- Initiate
parse_urdf
API change. Old methods are not yet deprecated. For the new method, theroot_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
v1.0.1
v1.0.0
v0.9.0
v0.8.0
- 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
- 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 fromMechanismState
(MotionSubspaceCollection
andWrenchSubspaceCollection
). 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
v0.6.0
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
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 ofMechanismState
instances of various scalar types, associated with a givenMechanism
.StateCache
makes it easy to write efficient generic functions involving RigidBodyDynamics.jl functionality. - add
JointID
andBodyID
as light-weight ways to refer toJoint
s andRigidBody
s. 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
TypeSortedCollection
s, and the types of these collections have been added to the type parameters ofMechanismState
. This was another big part in performance improvements. - add
SegmentedVector
, anAbstractVector
that stores a parentAbstractVector
, 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 ofUnsafeVectorView
/fastview
. - export
configuration_derivative!
- general code cleanup
Breaking changes:
UnsafeFastDict
has been replaced withIndexDict
, which is a fastAssociative
type whose keys are anAbstractUnitRange
. For efficiency reasons, several algorithms no longer acceptAssociative{<:RigidBody, T}
algorithms, but instead requireBodyDict{T}
inputs, whereBodyDict
is an alias for anIndexDict
with aBase.OneTo
range ofBodyID
keys. Analogously,Associative{<:Joint, T}
arguments have becomeJointDict{T}
s.MechanismState
has additional type parameters:MotionSubspaceCollection
andWrenchSubspaceCollection
.- The internals of
Graphs.TreePath
have been changed a bit to accommodate theMotionSubspaceCollection
change ingeometric_jacobian!
. GenericJoint
has been removed.Mechanism
now simply stores joints of various types in type-heterogeneous containers. TheMechanismState
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 acceptSegmentedVector
s (with arbitrary parent vector type).