# Solving Differential Equations in "real time"

Hi!

Is there a way to use Differential Equations to solve a system in “real time”? I want to solve a dynamic system that will receive data from the Raspberry Pi to update the simulation. Thus, this system must be solved in “real time”, like, one step every 1ms. How is the best way to do this?

“Solving” an ode is subjective. It depends on tolerance for example.

I mean, let’s say you have a problem:

``````dx/dt = f(t,x)
``````

then I want to step it for 1ms every 1ms. I can use something simple, like RK4.

@rdeits had to solve this in:

I don’t recall the solution though. I’d probably do it by making a timer that you then enclose into a discrete callback, and use `sleep` to slow down the solve so the callback finishes at around time `t=n` (by taking a new time and subtracting it from the start time of course). You’d then want to use a counter so that it doesn’t drift.

1 Like

Thanks! The idea of the timer inside a callback is really good

Actually @tkoolen did all the cool simulation stuff for that–I just got to give the talk

In particular, you might find his `PeriodicController` useful: https://github.com/JuliaRobotics/RigidBodySim.jl/blob/master/src/control.jl#L29-L87

That was upstreamed to become the PeriodicCallback in the callback library BTW, and indeed that could be useful here (though if you’re using a fixed time step method and calling after each step, a DiscreteCallback with a `condition(u,t,integrator) = true` is all you need)

1 Like