Add two MRAC siso examples#914
Conversation
|
This PR will break once #916 is merged. The changes needed to use the new I/O system structure ar straightforward (eg, replace |
murrayrm
left a comment
There was a problem hiding this comment.
This PR needs to be rebased on top of the current main branch to catch the changes in #916, which eliminates the LinearIOSystem class and adds a ct.nlsys factory function. In addition, it would be good to replace calls to the class constructors (NonlinearIOSystem, InterconnectedSystem, etc) with calls to factor functions (ct.nlsys, ct.interconnect, etc).
doc/examples.rst
Outdated
| mrac_siso_direct_mit_rule_statespace | ||
| mrac_siso_direct_lya_rule_statespace |
There was a problem hiding this comment.
Perhaps use shorter filenames? It seems like mrac_siso_mit and mrac_siso_lyapunov would fit the bill.
| @@ -0,0 +1,15 @@ | |||
| Model-Reference Adaptive Control (MRAC) siso, direct lyapunov rule | |||
There was a problem hiding this comment.
I would change "siso" to "SISO" (since it is an acronym) and capitalize Lyapunov (since it is a proper name).
| @@ -0,0 +1,185 @@ | |||
| # mrac_siso_direct_lya_rule_statespace.py | |||
| # June 2023 | |||
| G_plant_ss = ct.StateSpace(A,B,C,D) | ||
|
|
||
| io_plant = ct.LinearIOSystem( | ||
| G_plant_ss, | ||
| inputs=('u'), | ||
| outputs=('x'), | ||
| states=('x'), | ||
| name='plant' | ||
| ) |
There was a problem hiding this comment.
This can all be done by a single call to ct.ss:
io_plant = ct.ss(A, B, C, D, inputs='u', outputs='x', states='x', name='plant')
| G_model_ss = ct.StateSpace(Am,Bm,Cm,Dm) | ||
|
|
||
| io_ref_model = ct.LinearIOSystem( | ||
| G_model_ss, | ||
| inputs=('r'), | ||
| outputs=('xm'), | ||
| states=('xm'), | ||
| name='ref_model' | ||
| ) |
| ) | ||
|
|
||
| # Overall closed loop system | ||
| io_closed = ct.InterconnectedSystem( |
There was a problem hiding this comment.
Use ct.interconnect rather than calling the class constructor.
| G_plant_ss = ct.StateSpace(A,B,C,D) | ||
|
|
||
| io_plant = ct.LinearIOSystem( | ||
| G_plant_ss, | ||
| inputs=('u'), | ||
| outputs=('x'), | ||
| states=('x'), | ||
| name='plant' | ||
| ) |
| G_model_ss = ct.StateSpace(Am,Bm,Cm,Dm) | ||
|
|
||
| io_ref_model = ct.LinearIOSystem( | ||
| G_model_ss, | ||
| inputs=('r'), | ||
| outputs=('xm'), | ||
| states=('xm'), | ||
| name='ref_model' | ||
| ) |
|
|
||
| params={"gam":1, "Am":Am, "Bm":Bm, "signb":np.sign(B)} | ||
|
|
||
| io_controller = ct.NonlinearIOSystem( |
| ) | ||
|
|
||
| # Overall closed loop system | ||
| io_closed = ct.InterconnectedSystem( |
There was a problem hiding this comment.
Replace with call toct.interconnect.
|
Thanks for the review. I will incorporate your suggestions. |
|
I need help. In fact, I'm not sure about the recent commits of this PR. I think I did something wrong. The old files have been merged back into the branch "mrac-examples" by "git rebase main". In steps 8 of the manual, (https://github.com/python-control/python-control/wiki/How-to-contribute-with-a-pull-request) Current situation of "mrac-examples".
Not sure how to fix this. |
doc/examples.rst
Outdated
| <<<<<<< HEAD | ||
| mrac_siso_mit | ||
| mrac_siso_lyapunov | ||
| ======= | ||
| mrac_siso_direct_mit_rule_statespace | ||
| mrac_siso_direct_lya_rule_statespace | ||
| >>>>>>> refs/remotes/origin/mrac-examples |
There was a problem hiding this comment.
This is an artifact of a merge, which must be fixed
There was a problem hiding this comment.
Oops I was looking at an intermediate commit. Please rebase so that it does not appear in the commit history.
There was a problem hiding this comment.
In reference to your comment: Do a git rebase -i main and "squash" some commits.
There was a problem hiding this comment.
Thx, I will try git rebase -i main.
In steps 8 of the manual, (https://github.com/python-control/python-control/wiki/How-to-contribute-with-a-pull-request)
which branch must be updated & synchronized, main or feature?
There was a problem hiding this comment.
Both. First get your local main branch in sync with upstream and then rebase feature onto your synced local main
…ys, interconnect)
0c04a2c to
f3713f1
Compare
examples based on Aström & Wittenmark