Skip to content
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

dare validation unsuitable for H-inf synthesis #440

Open
kjellqvist opened this issue Feb 3, 2021 · 4 comments
Open

dare validation unsuitable for H-inf synthesis #440

kjellqvist opened this issue Feb 3, 2021 · 4 comments

Comments

@kjellqvist
Copy link

kjellqvist commented Feb 3, 2021

The command dare(A, B, Q, R) has validation on R > 0, this is unsuitable for H-infinity synthesis.

finding the stationary H-inf controller amounts to finding a fixpoint to the dare:

P = Q + A'(P^(-1) + BR^(-1)B -I/gamma^2)A.

This is equivalent to solving the lqr problem with augmented B* = [B I] and R* = [R 0;0 -gamma^2]. The algorithm which is already implemented works well, however R* is indefinite so calling dare(A, B, Q, R) throws an error.

Minimal test case:

gamma = 2
A = ones((1,1))
B = ones((1,2))
Q = ones((1,1))
R = [1. 0;0 -gamma^2]

P = dare(A,B,Q,R)

@test P[1,1] \approx 1/2 + sqrt(4/3 + 1/4)

@olof3
Copy link
Contributor

olof3 commented Feb 3, 2021

I'm working on a PR fixing this and some other issues, I hope to have the time to finish it any day now.

@kjellqvist
Copy link
Author

Great - could you provide a link to the PR?

@olof3
Copy link
Contributor

olof3 commented Feb 3, 2021

https://github.com/olof3/ControlMatrixEquations.jl A lot more that needs to be done and some design decisions that need to be taken. I'd be happy if you'd give it a try. You can post issues in that package or just let me know directly.

For an idea of the integration with ControlSystems.jl see #443

@kjellqvist
Copy link
Author

Thank you @olof3, I will try it.

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

No branches or pull requests

2 participants