3.5.23 · D3 · Physics › Guidance, Navigation & Control (GNC) › Observability — when KF can estimate state
Intuition Yeh page kya hai
Parent note ne tumhe observability ka rank test diya tha. Yahan hum use har tarah ke case pe run karte hain jo ek problem tumhare samne rakh sakti hai — clean full-rank systems, degenerate zero-coupling systems, woh systems jinhe picture chahiye, woh systems jo technically observable hain par barely , aur kuch exam traps. Is page ke baad, koi bhi scenario tumhe surprise nahi karegi.
Yaad karo woh ek tool jo hum har jagah use karte hain:
O = C C A C A 2 ⋮ C A n − 1 , observable ⟺ rank ( O ) = n .
Yahan n = states ki sankhya, O mein A ki har power ke liye ek block-row hai, aur "rank" count karta hai ki kitni rows linearly independent hain (yaani ek-doosre ki copies ya scaled sums nahi hain).
Har observability problem inhi cells mein se kisi ek mein aati hai. Neeche har worked example ke saath woh cell(s) tag ki gayi hain jo woh cover karta hai.
Cell
Kya cheez use alag banati hai
Covered by
A. Coupling saves you
unmeasured state ek measured wale ko drive karta hai → observable
Ex 1
B. Decoupled & blind
unmeasured state kisi cheez se connected nahi → NOT observable
Ex 2
C. Degenerate zero dynamics
A = 0 (pure integrators), single sensor
Ex 3
D. Multi-output redundancy
extra sensor rows koi rank add nahi karte
Ex 4
E. 3-state chain
poora A 2 block chahiye; information flow ki picture
Ex 5
F. Weak/limiting observability
full rank hai par almost singular jab parameter → 0
Ex 6
G. Real-world word problem
attitude + gyro bias, sensor choice matters
Ex 7
H. Exam twist
"use fix karne ke liye sensor add karo" / controllability ke saath duality
Ex 8
Yeh examples milke har cell ko touch karte hain.
Worked example Position–velocity, measure position only
A = [ 0 0 1 0 ] , C = [ 1 0 ] , n = 2.
State hai x = ( position , velocity ) . Sensor position read karta hai.
Forecast: hum sirf position measure karte hain — kya ek filter phir bhi velocity recover kar sakta hai? Padhne se pehle yes/no guess karo.
Pehle bottom power: C = [ 1 0 ] .
Yeh step kyun? O ki pehli block-row hamesha C hoti hai — yeh batati hai "zero derivatives ke saath hum kya dekhte hain."
C A = [ 1 0 ] [ 0 0 1 0 ] = [ 0 1 ] .
Yeh step kyun? C A pehla derivative hai y ˙ ( 0 ) = C A x ( 0 ) ; yeh batata hai ki measurement ki rate of change kya reveal karti hai. Yahan yeh velocity component ko expose karta hai.
Stack karo aur rank dekho:
O = [ 1 0 0 1 ] , rank = 2 = n ⇒ observable .
Yeh step kyun? Do independent rows dono coordinates span karte hain ⇒ null space { 0 } hai ⇒ unique x ( 0 ) .
Verify: dono rows standard basis vectors hain — clearly independent, determinant = 1 = 0 . Kyunki A 12 = 1 (velocity position ko drive karta hai), position kitni tezi se move karti hai woh literally velocity hai. Window position dikhata hai; us window ki motion velocity leak karti hai.
Worked example Do independent decay modes, sirf ek measure karo
A = [ − 1 0 0 − 2 ] , C = [ 1 0 ] .
Forecast: do alag springs, hum sirf ek dekh rahe hain. Observable?
C = [ 1 0 ] . Kyun? pehli block-row.
C A = [ 1 0 ] [ − 1 0 0 − 2 ] = [ − 1 0 ] .
Yeh step kyun? Measurement ka derivative. Notice karo ki doosri entry abhi bhi zero hai — chahe kitna bhi differentiate karo, state 2 kabhi appear nahi hoti.
Stack karo:
O = [ 1 − 1 0 0 ] , rank = 1 = 2 ⇒ NOT observable .
Kyun? Doosri row − 1 × pehli row hai ⇒ sirf ek independent row.
Verify: null space mein v = ( 0 , 1 ) ⊤ hai: O v = ( 0 , 0 ) ⊤ . To ek initial state "x 2 = kuch bhi, x 1 = 0 " se y ≡ 0 milta hai. State 2 ek sealed box hai. Uska Kalman covariance kabhi shrink nahi karta.
Worked example Do pure integrators,
A = 0
A = [ 0 0 0 0 ] , C = [ 1 1 ] .
Forecast: koi internal dynamics nahi (A = 0 ), output ko differentiate karna bekaar hai — sab kuch ruka hua hai. Observable?
C = [ 1 1 ] . Kyun? Hum sum x 1 + x 2 measure karte hain.
C A = [ 1 1 ] ⋅ 0 = [ 0 0 ] .
Yeh step kyun? A = 0 ke saath state kabhi move nahi karti, to y ˙ ( 0 ) = 0 koi info nahi leta — poora "derivative pump" dead hai.
Stack karo:
O = [ 1 0 1 0 ] , rank = 1 = 2 ⇒ NOT observable .
Verify: null space mein v = ( 1 , − 1 ) ⊤ hai kyunki C v = 1 − 1 = 0 . Hum sirf sum x 1 + x 2 jaante hain; difference x 1 − x 2 hamesha ke liye hidden hai. Lesson: jab A = 0 , observability collapse ho jaati hai "kya C akele rank n rakhta hai?" — tumhe kam se kam n independent sensor rows chahiye.
Worked example Ek doosra sensor jo kuch add nahi karta
A = [ − 1 0 0 − 2 ] , C = [ 1 2 0 0 ] .
Humne ek doosra sensor add kiya jo 2 x 1 measure karta hai. Same system jaise Example 2 par "zyada data" ke saath.
Forecast: zyada sensors — kya ab x 2 observable hoga? (Yeh classic trap hai.)
C ke do rows hain [ 1 0 ] aur [ 2 0 ] . Kyun? do sensors ⇒ C ke do block-rows.
C A = [ 1 2 0 0 ] [ − 1 0 0 − 2 ] = [ − 1 − 2 0 0 ] .
Yeh step kyun? Har derivative mein x 2 slot mein abhi bhi zero hai.
Stack karo (4 rows):
O = 1 2 − 1 − 2 0 0 0 0 , rank = 1 = 2 ⇒ NOT observable .
Kyun? Charon rows [ 1 0 ] ke multiples hain. Char rows, ek independent direction.
Verify: doosra sensor 2 x 1 read karta hai — sensor 1 jo pehle se deta hai uska scalar multiple. Yeh ek linear combination already visible hai. Rank independence count karta hai, rows nahi. Jo sensors same cheez dekhte hain unhe add karne se observability kabhi nahi milti.
Worked example Ek cascade
x 3 → x 2 → x 1 , sirf x 1 measure karo
A = 0 0 0 1 0 0 0 1 0 , C = [ 1 0 0 ] , n = 3.
Yeh position–velocity–acceleration hai: x ˙ 1 = x 2 , x ˙ 2 = x 3 , x ˙ 3 = 0 . Hum sirf position x 1 measure karte hain. Yeh woh case hai jahan tumhe poore A 2 block tak jaana padta hai.
Forecast: teen-link chain ke end par ek sensor. Observable? Information flow ki figure dekho.
C = [ 1 0 0 ] . Kyun? hum position dekhte hain (derivative order 0).
C A = [ 0 1 0 ] . Yeh step kyun? pehla derivative y ˙ = x 2 — velocity A 12 = 1 ke through leak karti hai.
C A 2 = [ 0 0 1 ] . Yeh step kyun? doosra derivative y ¨ = x 3 — acceleration chain A 12 A 23 ke through leak karti hai. Isliye humhe A 2 block chahiye tha: deepest state sirf do differentiations ke baad dikhti hai.
Stack karo:
O = 1 0 0 0 1 0 0 0 1 = I 3 , rank = 3 = n ⇒ observable .
Verify: O = I , determinant 1 — perfectly observable. Figure mein, red arrows dikhate hain ki har state next mein push karti hai jab tak x 1 par window tak nahi pahunchti. Lesson: measured state mein ek poori chain observable hoti hai ek bhi sensor se , par isse prove karne ke liye tumhe A n − 1 tak chadna padta hai.
Worked example Full rank, par barely — near-degenerate limit
A = [ − 1 0 0 − 1 − ε ] , C = [ 1 1 ] , ε > 0 small .
Do decay modes jinki rates almost equal hain, unke sum ke through measure kiya gaya.
Forecast: dono modes almost identical hain. Technically observable? Aur ε → 0 hone par kya hoga?
C = [ 1 1 ] . Kyun? hum x 1 + x 2 measure karte hain.
C A = [ − 1 − 1 − ε ] . Yeh step kyun? derivative dono modes ko alag-alag weight karta hai — yeh difference hi woh cheez hai jo unhe alag karta hai.
Stack karo aur determinant compute karo:
O = [ 1 − 1 1 − 1 − ε ] , det O = ( 1 ) ( − 1 − ε ) − ( 1 ) ( − 1 ) = − ε .
Yeh step kyun? Ek 2 × 2 square O ke liye, rank = 2 ⟺ det = 0 .
ε par case split:
ε > 0 : det = − ε = 0 ⇒ observable .
ε = 0 : det = 0 ⇒ NOT observable (dono modes identically decay karte hain, sirf unka sum kabhi visible hota hai — exactly Example 3 ka "difference is hidden").
Verify: jaise-jaise ε → 0 + determinant → 0 , to O ill-conditioned ho jaata hai. Technically full rank hai, par Gramian mein ek tiny eigenvalue hai: difference mode weakly observable hai aur noise use daba deta hai. Lesson: "observable" ek yes/no cheez hai, par degree matter karta hai — near-degenerate systems confident-dikhne-wale par fragile estimates dete hain.
Worked example Spacecraft attitude + drifting gyro bias
Ek gyro rate report karta hai ω meas = ω true + b , jahan b ek dheere-dheere drifting bias hai. Gyro ko integrate karne se angle milta hai. Ek star tracker true angle θ measure karta hai. States x = ( θ , b ) :
θ ˙ = ω meas − b , b ˙ = 0 ⇒ A = [ 0 0 − 1 0 ] , C = [ 1 0 ] .
Forecast: hum angle measure karte hain, par actually bias jaanna chahte hain jo hum directly sense nahi kar sakte. Kya filter gyro ko calibrate kar sakta hai?
C = [ 1 0 ] . Kyun? star tracker angle dekhta hai, bias nahi.
C A = [ 1 0 ] [ 0 0 − 1 0 ] = [ 0 − 1 ] .
Yeh step kyun? Angle measurement ka derivative b se influenced hai (A 12 = − 1 ke through): ek nonzero bias measured angle ko true angle ke relative drift karwata hai, aur woh drift visible hai.
Stack karo:
O = [ 1 0 0 − 1 ] , rank = 2 = n ⇒ observable .
Verify: det O = − 1 = 0 . Bias khud ko ek creeping mismatch ke roop mein reveal karta hai integrated gyro angle aur star-tracker angle ke beech mein. Isliye real spacecraft star-trackers use karte hain gyro bias calibrate karne ke liye — bias unmeasured hai phir bhi fully observable hai. (Example 2 se compare karo: wahan hidden state ka koi pathway output tak nahi tha; yahan A 12 = − 1 ek pathway kholta hai.)
Worked example Ek unobservable system repair karo, aur duality check karo
Example 2 ke blind system se shuru karo:
A = [ − 1 0 0 − 2 ] .
Humne dikhaya tha ki C old = [ 1 0 ] rank 1 deta hai. Twist: kaunsa single nayi sensor row ise observable banayega — C a = [ 2 0 ] ya C b = [ 0 1 ] ?
Forecast: compute karne se pehle guess karo kaunsa sensor actually help karta hai.
C a = [ 2 0 ] try karo (redundant, jaise Ex 4). C a A = [ − 2 0 ] .
O a = [ 2 − 2 0 0 ] , rank = 1 ⇒ still blind .
Kyun? [ 2 0 ] ka [ 1 0 ] ka multiple hai — koi nayi direction nahi.
C b = [ 0 1 ] try karo (x 2 measure karta hai). C b A = [ 0 − 2 ] .
O b = [ 0 0 1 − 2 ] , rank = 1.
Kyun? Akele yeh sirf x 2 dekhta hai! Rank abhi bhi 1 — yeh sensor x 1 ke liye blind hai.
Dono sensors combine karo C = [ 1 0 0 1 ] .
O = 1 0 − 1 0 0 1 0 − 2 , rank = 2 = n ⇒ observable .
Yeh step kyun? Ab do independent sensor directions milke R 2 span karte hain.
Duality cross-check (controllability link): ( A , C ) observable ⟺ ( A ⊤ , C ⊤ ) controllable. A ⊤ = A (diagonal) aur B = C ⊤ = [ 1 0 0 1 ] = I ke saath, controllability matrix [ B A ⊤ B ] = [ 1 0 0 1 − 1 0 0 − 2 ] ka rank 2 hai — controllable, consistent.
Verify: decoupled diagonal dynamics ko har decoupled mode ke liye ek independent sensor chahiye. Redundant sensors (C a ) fail karte hain; ek genuinely nayi direction kaam aati hai. Aur Cayley–Hamilton -guaranteed dual test agree karta hai.
Recall Kaunsi cell kaunsi hai — quick self-test
Ek measured state mein coupling (position–velocity) — observable? ::: Haan (Cell A) — velocity position ko drive karti hai.
Do decoupled modes, ek measured — observable? ::: Nahi (Cell B) — hidden mode ka koi output pathway nahi.
A = 0 ek single summing sensor ke saath — observable? ::: Nahi (Cell C) — sirf sum dikhta hai, difference hidden.
Extra sensor = existing ka scalar multiple — kya yeh help karta hai? ::: Nahi (Cell D) — rows without rank.
Nearly-equal decay rates unke sum ke through — observable aur kitna strongly? ::: ε > 0 ke liye full rank par weakly (det = − ε → 0 ) (Cell F).
Star tracker gyro bias kyun calibrate kar sakta hai? ::: Bias measured angle mein ek visible drift create karta hai (A 12 = − 1 ), isliye yeh observable hai (Cell G).
Mnemonic Har scenario ke liye ek sawaal
"Kya har hidden state ka ek path hai — direct ya dynamics ke through — window tak?" Agar saare states ke liye haan, to rank O = n .