I want to set up a stepwise Munthe-Kass integrator for use in a real-time control system. I do:
t = 0.0; Δt = 1e-4
ringBuff2 = RigidBodyDynamics.OdeIntegrators.RingBufferStorage{Float64}(state, 10000)
butcherTableau = RigidBodyDynamics.OdeIntegrators.runge_kutta_4(Float64)
mk_integrator = RigidBodyDynamics.OdeIntegrators.MuntheKaasIntegrator(state, dynamics!, butcherTableau, ringBuff2)
everything is fine until I do this:
step(mk_integrator, t, Δt)
when I get this:
ERROR: MethodError: no method matching
step(::RigidBodyDynamics.OdeIntegrators.MuntheKaasIntegrator{4,Float64,typeof(dynamics!),RigidBo
dyDynamics.OdeIntegrators.RingBufferStorage{Float64,SegmentedVector{JointID,Float64,Base.OneTo
{JointID},Array{Float64,1}},SegmentedVector{JointID,Float64,Base.OneTo{JointID},Array{Float64,1}}},
MechanismState{Float64,Float64,Float64,TypeSortedCollections.TypeSortedCollection{Tuple{Array{Joi
nt{Float64,Revolute{Float64}},1}},1}},16,RigidBodyDynamics.OdeIntegrators.MuntheKaasStageCache{
4,Float64,SegmentedVector{JointID,Float64,Base.OneTo{JointID},Array{Float64,1}},SegmentedVector{
JointID,Float64,Base.OneTo{JointID},Array{Float64,1}},Array{Float64,1}}}, ::Float64, ::Float64)
Checking the type:
julia> typeof(mk_integrator) <: RigidBodyDynamics.MuntheKaasIntegrator
true
I can’t see where I have deviated from the documentation. (I am looking forward to reading Twan’s @tkoolen PhD thesis as I hope I will get a better understanding of what I’m doing!)