I'd like to run a Control Systems simulation similar to the one demonstrated here. Since OpenMDAO seems to have nice features of component-based modeling, is it possible to run such a simulation with OpenMDAO?
More specifically, I'm trying to accomplish for now is simpler continuous-time simulation of a dynamic system and various PID controllers to a myriad combination of disturbances in different points of the system.
What I have now is done through the lsim()
function, which is available both in Scipy (lsim() doc) and Matlab (lsim() doc). However, those tools are cumbersome in the way they require the complete system to be modeled as a single lumped input-output system. The conversion when multiple input points are used is time-consuming and quite difficult to achieve depending on the complexity of the system. Also, lsim()
is not usable for non-linear problems.
Ideally, I'd also like to mix continuous-time simulation (for the plant) and discrete-time (for the controller, which I'll convert in the future, and to allow easier simulation of time delay). Another reason to desire support for non-linear behavior is to simulate hysteresis in the future.
An easy way out would be to use Simulink (as described here), but I'd rather do it in Python since I'm trying to build a solution which interacts with other Python tools.
Anything is possible! No one has done what you're asking about yet.
Some transient modeling of systems has been done with OpenMDAO. Specifically our satellite work used an explicit time integration scheme for orbital dynamics and solved an optimal control problem. But it did not address controller design, or state space modeling.
However, building the plant model and the discrete time controller should all be possible. So I don't see why this could not be done.