ControlSystems.jl icon indicating copy to clipboard operation
ControlSystems.jl copied to clipboard

dare validation unsuitable for H-inf synthesis

Open kjellqvist opened this issue 4 years ago • 4 comments

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)

kjellqvist avatar Feb 03 '21 11:02 kjellqvist

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

olof3 avatar Feb 03 '21 12:02 olof3

Great - could you provide a link to the PR?

kjellqvist avatar Feb 03 '21 12:02 kjellqvist

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

olof3 avatar Feb 03 '21 15:02 olof3

Thank you @olof3, I will try it.

kjellqvist avatar Feb 04 '21 07:02 kjellqvist