@@ -706,40 +706,52 @@ See also [`control_step!`](@ref)
706706"""
707707function new_control_cache end
708708
709-
709+ # Compiled mechanisms cache bundles
710+ new_kinematics_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_kinematics_cache (m, eltype (m); initialize)
711+ new_jacobians_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_jacobians_cache (m, eltype (m); initialize)
712+ new_rbstates_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_rbstates_cache (m, eltype (m); initialize)
713+ new_dynamics_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_dynamics_cache (m, eltype (m); initialize)
714+ new_inverse_dynamics_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_inverse_dynamics_cache (m, eltype (m); initialize)
710715
711716function new_kinematics_cache (m:: CompiledMechanism , :: Type{T} ; initialize:: Bool = true ) where T
712717 cache = MechKinematicsCache {T} (m)
713718 bundle = MechanismCacheBundle (m, cache)
714- if initialize
715- # As the kinematics cache is used for plotting, it would be confusing if when we plot with
716- # a fresh cache, things look broken because the cache is full of invalid data. Therefore
717- # the default behaviour is to initialize the cache by calling `kinematics!` once.
718- kinematics! (bundle, zero (T), zeros (ndof (m)))
719- end
719+ # As the kinematics cache is used for plotting, it would be confusing if when we plot with
720+ # a fresh cache, things look broken because the cache is full of invalid data. Therefore
721+ # the default behaviour is to initialize the cache by calling `kinematics!` once.
722+ initialize && kinematics! (bundle, zero (T), zero_q (m))
720723 bundle
721724end
722- new_kinematics_cache (m:: CompiledMechanism ; initialize:: Bool = true ) = new_kinematics_cache (m, eltype (m); initialize)
723725
724- new_jacobians_cache (m:: CompiledMechanism , :: Type{T} ) where T = MechanismCacheBundle (m, MechJacobiansCache {T} (m))
725- new_jacobians_cache (m:: CompiledMechanism ) = new_jacobians_cache (m, eltype (m))
726-
727- new_rbstates_cache (m:: CompiledMechanism , :: Type{T} ) where T = MechanismCacheBundle (m, MechRBStatesCache {T} (m))
728- new_rbstates_cache (m:: CompiledMechanism ) = new_rbstates_cache (m, eltype (m))
729-
730- new_dynamics_cache (m:: CompiledMechanism , :: Type{T} ) where T = MechanismCacheBundle (m, MechDynamicsCache {T} (m))
731- new_dynamics_cache (m:: CompiledMechanism ) = new_dynamics_cache (m, eltype (m))
732-
733- new_inverse_dynamics_cache (m:: CompiledMechanism , :: Type{T} ) where T = MechanismCacheBundle (m, MechRNECache {T} (m))
734- new_inverse_dynamics_cache (m:: CompiledMechanism ) = new_inverse_dynamics_cache (m, eltype (m))
726+ function new_jacobians_cache (m:: CompiledMechanism , :: Type{T} ; initialize:: Bool = true ) where T
727+ cache = MechJacobiansCache {T} (m)
728+ bundle = MechanismCacheBundle (m, cache)
729+ initialize && jacobians! (bundle, zero (T), zero_q (m))
730+ bundle
731+ end
735732
736- precompute! (m:: CompiledMechanism , t:: Real , q:: SVector , q̇:: SVector , gravity:: SVector{3} ) =
737- error (" Deprecated. Please use the new interface with a mechanism cache constructed using `new_dynamics_cache(m)`" )
733+ function new_rbstates_cache (m:: CompiledMechanism , :: Type{T} ; initialize:: Bool = true ) where T
734+ cache = MechRBStatesCache {T} (m)
735+ bundle = MechanismCacheBundle (m, cache)
736+ initialize && velocity_kinematics! (bundle, zero (T), zero_q (m), zero_q̇ (m))
737+ bundle
738+ end
738739
739- precompute_transforms! (m:: CompiledMechanism , t:: Real , q:: SVector ) =
740- error (" Deprecated. Please use the new interface with a mechanism cache constructed using `new_kinematics_cache(m)`" )
740+ function new_dynamics_cache (m:: CompiledMechanism , :: Type{T} ; initialize:: Bool = true ) where T
741+ cache = MechDynamicsCache {T} (m)
742+ bundle = MechanismCacheBundle (m, cache)
743+ initialize && dynamics! (bundle, zero (T), zero_q (m), zero_q̇ (m), DEFAULT_GRAVITY, zero_u (m))
744+ bundle
745+ end
741746
747+ function new_inverse_dynamics_cache (m:: CompiledMechanism , :: Type{T} ; initialize:: Bool = true ) where T
748+ cache = MechRNECache {T} (m)
749+ bundle = MechanismCacheBundle (m, cache)
750+ initialize && inverse_dynamics! (bundle, zero (T), zero_q (m), zero_q̇ (m), zero_q̈ (m), DEFAULT_GRAVITY)
751+ bundle
752+ end
742753
754+ # VirtualMechanismSystem cache bundles
743755function new_kinematics_cache (vms:: CVMSystem , :: Type{T} ; initialize:: Bool = true ) where T
744756 cache = VMSKinematicsCache {T} (vms)
745757 bundle = VirtualMechanismSystemCacheBundle (vms, cache)
0 commit comments