Computing Quadratic Invariants Pierre Roux 1 , 2 , 3 Pierre-Loïc Garoche 1 October 4, 2014 1 ONERA – The French Aerospace Lab, Toulouse, France 2 ISAE, University of Toulouse, Toulouse, France 3 currently visiting CU Boulder
Control Command Systems plant (physical system to control) Image: public domain command Image: Thomasione (CC by-sa) Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command + u c y c − Image: Thomasione (CC by-sa) Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } critical system (human lifes at stake) Computing Quadratic Invariants 2 / 18 �
Control Command Systems plant (physical system to control) sensors actuators Image: public domain controller command double x[3] = {0, 0, 0}; double nx[3]; + double in; while (1) { in = acquire_input(); // u c nx[0] = 0.9379*x[0]-0.0381*x[1]-0.0414*x[2]+0.0237*in; u c y c − nx[1] = -0.0404*x[0]+0.968*x[1]-0.0179*x[2]+0.0143*in; nx[2] = 0.0142*x[0]-0.0197*x[1]+0.9823*x[2]+0.0077*in; x[0] = nx[0]; x[1] = nx[1]; x[2] = nx[2]; send_output(x); // y c wait_next_clock_tick(); // a tick every 10 ms Image: Thomasione (CC by-sa) } critical system (human lifes at stake) ⇒ verification Computing Quadratic Invariants 2 / 18 �
Stability Proofs Closed loop stability y p u p plant (state x p ) + y d controller (state x c ) u c y c − command y d bounded ⇒ x c and x p bounded (hence y c and y p bounded) Computing Quadratic Invariants 3 / 18 �
Stability Proofs Closed loop stability y p u p plant (state x p ) + y d controller (state x c ) u c y c − command y d bounded ⇒ x c and x p bounded (hence y c and y p bounded) Intuitively: plane stays close from pilot orders. Computing Quadratic Invariants 3 / 18 �
Stability Proofs Closed loop stability y p u p plant (state x p ) + y d controller (state x c ) u c y c − command y d bounded ⇒ x c and x p bounded (hence y c and y p bounded) Intuitively: plane stays close from pilot orders. Open loop stability controller (state x c ) u c y c input u c bounded ⇒ x c bounded (hence y c bounded) Computing Quadratic Invariants 3 / 18 �
Stability Proofs Closed loop stability y p u p plant (state x p ) + y d controller (state x c ) u c y c − command y d bounded ⇒ x c and x p bounded (hence y c and y p bounded) Intuitively: plane stays close from pilot orders. Open loop stability controller (state x c ) u c y c input u c bounded ⇒ x c bounded (hence y c bounded) “Intuitively”: no arithmetic overflow. Computing Quadratic Invariants 3 / 18 �
Invariants A set of points is an (inductive) invariant if it: x 1 x 0 contains initial state ((0 , 0) for instance) Computing Quadratic Invariants 4 / 18 �
Invariants A set of points is an (inductive) invariant if it: x 1 x 1 x 0 x 0 contains initial state is stable in one step ((0 , 0) for instance) (loop body) Computing Quadratic Invariants 4 / 18 �
Invariants A set of points is an (inductive) invariant if it: x 1 x 1 x 0 x 0 contains initial state is stable in one step ((0 , 0) for instance) (loop body) Computing Quadratic Invariants 4 / 18 �
Example On following code: x0 := 0; x1 := 0; x2 := 0; while − 1 ≤ 0 do in := ?( − 1, 1 ) ; x0’ := x0; x1’ := x1; x2’ := x2; x0 := 0 . 9379 x0’ − 0 . 0381 x1’ − 0 . 0414 x2’+0 . 0237 in; x1 := − 0 . 0404 x0’+0 . 968 x1’ − 0 . 0179 x2’+0 . 0143 in; x2 := 0 . 0142 x0’ − 0 . 0197 x1’+0 . 9823 x2’+0 . 0077 in; od our tool automatically proves: | x 0 | ≤ 0 . 4236 ∧ | x 1 | ≤ 0 . 3371 ∧ | x 2 | ≤ 0 . 5251 Computing Quadratic Invariants 5 / 18 �
Example On following code: x0 := 0; x1 := 0; x2 := 0; while − 1 ≤ 0 do in := ?( − 1, 1 ) ; x0’ := x0; x1’ := x1; x2’ := x2; x0 := 0 . 9379 x0’ − 0 . 0381 x1’ − 0 . 0414 x2’+0 . 0237 in; x1 := − 0 . 0404 x0’+0 . 968 x1’ − 0 . 0179 x2’+0 . 0143 in; x2 := 0 . 0142 x0’ − 0 . 0197 x1’+0 . 9823 x2’+0 . 0077 in; od our tool automatically proves: | x 0 | ≤ 0 . 4236 ∧ | x 1 | ≤ 0 . 3371 ∧ | x 2 | ≤ 0 . 5251 by producing the invariant: 6 . 2547 x 2 0 + 12 . 1868 x 2 1 + 3 . 8775 x 2 2 − 10 . 61 x 0 x 1 − 2 . 4306 x 0 x 2 + 2 . 4182 x 1 x 2 ≤ 1 . 0029 ∧ x 2 0 ≤ 0 . 1795 ∧ x 2 1 ≤ 0 . 1136 ∧ x 2 2 ≤ 0 . 2757. Computing Quadratic Invariants 5 / 18 �
Quadratic invariants Linear invariants commonly used in static analysis are not well suited: at best costly; at worst no result. Computing Quadratic Invariants 6 / 18 �
Quadratic invariants Linear invariants commonly used in static analysis are not well suited: at best costly; at worst no result. x 1 x 0 Computing Quadratic Invariants 6 / 18 �
Quadratic invariants Linear invariants commonly used in static analysis are not well suited: at best costly; at worst no result. x 1 x 0 Computing Quadratic Invariants 6 / 18 �
Quadratic invariants Linear invariants commonly used in static analysis are not well suited: at best costly; at worst no result. Control theorists know for long that quadratic invariants are a good fit for linear systems. x 1 x 1 x 0 x 0 Computing Quadratic Invariants 6 / 18 �
Quadratic invariants Linear invariants commonly used in static analysis are not well suited: at best costly; at worst no result. Control theorists know for long that quadratic invariants are a good fit for linear systems. x 1 x 1 x 0 x 0 Computing Quadratic Invariants 6 / 18 �
Quadratic Invariants Remark Reachable state space is usually not an ellipsoid. Computing Quadratic Invariants 7 / 18 �
Quadratic Invariants Remark Reachable state space is usually not an ellipsoid. Example x 0 := 0 and x k +1 := Ax k + Bu k where � u k � ∞ ≤ 1 and � � � � 0 . 92565 − 0 . 0935 1 A := B := 0 . 00935 0 . 935 0 x 1 x 0 Computing Quadratic Invariants 7 / 18 �
Recommend
More recommend