Skip to content

I/O system enhancements #710

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Mar 23, 2022
Merged

I/O system enhancements #710

merged 7 commits into from
Mar 23, 2022

Conversation

murrayrm
Copy link
Member

This PR adds some new functionality for I/O systems that I used in a recent course on optimization-based control that I taught at Caltech:

  • Modify the ss(), rss(), and drss() functions to return LinearIOSystem objects (instead of StateSpace objects). This makes it easier to create LTI state space systems that can be combined with other I/O systems without having to add a conversation step. Since LinearIOSystem objects are also StateSpace objects, no functionality is lost. (This change is implemented through the introduction of a internal NamedIOSystem class, to avoid import cycles.)

  • Added a new function create_statefbk_iosystem() that creates an I/O system for implementing a linear state feedback controller of the form u = ud - Kp(x - xd). The function returns an I/O system that takes xd, ud, and x as inputs and generates u as an output. The integral_action keyword can be used to define a set of outputs y = C x for which integral feedback is also included: u = ud - Kp(x - xd) - Ki(C x - C xd).

  • The lqr and dlqr commands now accept an integral_action keyword that allows outputs to be specified for implementing integral action. The resulting gain matrix has the form K = [Kp, Ki]. (This is useful for combining with the integral_action functionality in create_statefbk_iosystem()).

@coveralls
Copy link

coveralls commented Mar 16, 2022

Coverage Status

Coverage decreased (-0.001%) to 93.593% when pulling 316945d on murrayrm:lti_iosys into e10855e on python-control:master.

@murrayrm murrayrm linked an issue Mar 22, 2022 that may be closed by this pull request
@murrayrm
Copy link
Member Author

I have some changes that build on this one, so I'm accepting the PR. If you have comments on anything here, feel free to post and I can update with another PR to address.

@murrayrm murrayrm merged commit 2f3ca18 into python-control:master Mar 23, 2022
@murrayrm murrayrm deleted the lti_iosys branch March 24, 2022 05:19
@sawyerbfuller
Copy link
Contributor

Am a little late on this, but it looks good to me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Consider using super idiom for child classes
3 participants