-
Notifications
You must be signed in to change notification settings - Fork 20
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
Implement stability constraints #251
Comments
for my understanding: if solutions are found which give unstable solutions even though the system is stable, this means the solutions are wrong (e.g. wrong spring constant, wrong dampening...)? |
Preventing unstable systems was one motivation for adding the noise to the plant model. If one feedback controller can produce good tracking for all episodes, which all have different noise signals, you have a better chance of finding a stable solution. But it's no guarantee. The intuition is that the number of episodes must be large compared to the number of parameters identified. Otherwise, you may end up with a controller that is too "specialized" and only works when the noise is exactly the pattern that was simulated. We learned this by trying. During one of Huawei's committee meetings, my colleague Hanz Richter mentioned that there are ways to constrain the solution to be stable, by eigenvalues, as Jason already alluded to. You would need the derivatives of the eigenvalues with respect to the unknown parameters and he said that could be done. For a 2-link inverted pendulum, it may be possible symbolically. |
This may or may not be helpful, but just in case... I have been dabbling in solid mechanics recently. When strain energy density is specified in terms of the principal stretches (eigenvalues of the deformation gradient matrix), first and second derivatives of the eigenvalues are needed for the stress and stiffness calculation. I tried and failed to do it symbolically, even for a 2D triangle element, but spectral decomposition apparently makes it simple. The math is a bit much for me, but I copied the equations from Bonet's book and they worked correctly as verified by numerical differentiation. |
The way I visualized it yesterday was this: You want to get the
I studied control theory in Stuttgart some 45 years ago, so this is no longer fresh in my mind. :-( |
When I studied in the USA, in California, I had one course of solid mechanic - but again too long ago. :-( |
I never had a course in solid mechanics. We had 3 weeks of multibody dynamics in my physics program, which I mostly missed due to sickness and could never catch up. As I get older, I seem to get better at learning new things. And now I am retired and have time! |
There are two ways I can think of to get derivatives of the eigenvalues:
|
Those are probably the first directions to go in (in that order). I had never heard of Routh stability criteria (another gap in my education), so I read the Wikipedia article. This is probably what Hanz was talking about and it seems doable. |
Lucky you!! I am also retired and have time - but learning new things comes hard to me! :-( |
It is common in parameter identification problem (or even dual parameter id + trajectories) to find solutions that give unstable systems, even when the measurement data comes from a stable system. If the system can be represented as a linear system about an equilibrium point, you could make constraints that enforce the real parts of the eigenvalues < 0. This would add new constraints and we'd need to find their Jacobian, which isn't so suitable for a symbolic method when the system order is high. Another option is to calculate the Routh table for the linear system, which effectively gives a set of inequality constraints that would guarantee stability. That may work for high order systems, even if the symbolic expressions get large. These are a couple of ideas for a subclass of parameter id problems for systems that are linearly stable. More ideas would be needed for nonlinear systems.
The text was updated successfully, but these errors were encountered: