Releases: JuliaRobotics/RigidBodyDynamics.jl
Releases · JuliaRobotics/RigidBodyDynamics.jl
v0.4.0
Highlights:
- add
QuaternionSpherical
andPlanar
joint types (#309, #306) - add support for storing position, velocity, and effort limits in
Joint
s and parsing them from URDFs (#305, thanks @rdeits). Note that these limits are currently not used in thedynamics
function. - add more
angular
andlinear
methods (which should be used instead of accessing members directly) - add
normalize_configuration!(::MechanismState)
- add a modification count to
Mechanism
and use it inMechanismState
functions to check that theMechanism
hasn't been modified since construction of theMechanismState
- code reorganization/cleanup: extracted out
Spatial
andCustomCollections
submodules
Notable deprecations and breaking changes:
- made
Joint
immutable (#312, fixes #310) - deprecate
name
function. Usebase.string
instead - remove last remnants of camelCase from the package. This includes:
- renaming the
frameBefore
andframeAfter
fields ofJoint
toframe_before
andframe_after
(accessible via functions with the same names). - renaming the
gravitationalAcceleration
field ofMechanism
togravitational_acceleration
- renaming the
maxRealtimeRate
keyword argument ofsimulate
tomax_realtime_rate
.
- renaming the
attach!
functions now use keyword arguments. Deprecation warnings will help you update existing code to the new syntax.
v0.3.0
Release notes:
Highlights:
- significant performance improvements:
mass_matrix
,inverse_dynamics
, anddynamics
are respectively 40%, 57%, and 11% faster. The biggest improvements are due to the introduction ofTypeSortedCollection
(#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
, andFixed
) (#247) - export
dynamics_bias[!]
(#295)
Notable deprecations and breaking changes:
- drop Julia 0.5 support
geometric_jacobian[!]
now returns/expects aGeometricJacobian
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 withMechanismState
. New constructor syntax forMechanismState
andDynamicsResult
. Deprecation warnings should help you transition to the new syntax. (#248, #286, #295 )Joint
s are now parameterized on theirJointType
to allow joint-type-specific dispatch without resorting to@rtti_dispatch
(#247). The oldJoint{T}
is now equivalent toGenericJoint{T}
, an exported type alias. Note that methods called onGenericJoint
s that depend on joint type will generally allocate due to dynamic dispatch.MechanismState
is now additionally parameterized on the type of itsTypeSortedCollection
ofJoint
s, to allow static dispatch based on joint types. (#247, #258)
v0.2.0
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
andmomentum_matrix
functionality: allow specification of frame in which they are expressed, add non-allocating versions. - introduce
UnsafeFastDict
and type aliasesBodyDict
andJointDict
; use inMechanismState
and ininverse_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 usingrotation
andtranslation
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 aVector
ofTreePath
s, instead of an opaque sparse matrix of Ints. - minor improvements to
Graphs
module (e.g. iteration over and printing ofTreePath
s) - add
findbody
,findjoint
(RigidBody
andJoint
lookup by name)
Bug fixes:
v0.1.0
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
v0.0.5
Highlights:
- non-allocating momentum_matrix! method
- streamline
Mechanism
type, including moving body-fixed frame definitions fromMechanism
toRigidBody
- 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: