{"version":1,"lectureId":"01M6GJXFJP3P9ADTWEX6NGYWGX","attempt":0,"publication":{"slug":"hata-durumu-kalman-filtresine-eskf-giriş-ve-temelleri","title":"Hata Durumu Kalman Filtresine (ESKF) Giriş ve Temelleri","subject":"engineering","summary":"Bu ders, alana yeni adım atan mühendisler için hata durumu Kalman filtresini (ESKF) temelden kurar. Standart EKF'nin tahmin ve güncelleme adımlarını hatırlattıktan sonra, yönelimi doğrudan kuaterniyonla kestirmenin neden sorun çıkardığını birim çember üzerinde gösterir: toplama birim normu bozar, dört sayılı kovaryans tekil olur, Euler açıları gimbal kilidine çarpar. Ardından gerçek durumu nominal durum ve küçük bir hata durumu olarak ayırır, küçük açı yaklaşımını türetir, IMU ile tahmin adımını, hata kovaryansının büyümesini, ölçüm güncellemesini, hatanın nominale enjeksiyonunu ve sıfırlamayı adım adım işler ve iki filtreyi tek bir tabloda karşılaştırır.","metaDescription":"Hata durumu Kalman filtresi (ESKF) temelden: nominal ve hata durumu, kuaterniyonlar, küçük açılar, tahmin, güncelleme ve enjeksiyon.","transcript":"Bir drone havada süzülürken nereye baktığını, ne kadar hızlı gittiğini ve nerede olduğunu bilmek zorundadır. Bu derste bunu kestiren en yaygın yöntemlerden birini temelden kuracağız: hata durumu Kalman filtresi, kısaca ESKF. Önce varacağımız yeri gösterelim. Bütün ders tek bir fikrin etrafında döner: gerçek durumu iki parçaya ayırmak. Soldaki x t, gerçek durumdur: aracın o anki hali. Onu hiçbir zaman doğrudan bilemeyiz. Ortadaki x, nominal durumdur. Büyüktür, doğrusal değildir ve her sensör örneğiyle hızla ilerletilir. Ama içinde gürültü ya da belirsizlik yoktur. Sağdaki delta x ise hata durumudur: nominalin gerçekten ne kadar saptığı. Küçüktür, neredeyse doğrusaldır ve bütün belirsizliği o taşır. Bu ayrımın neden bu kadar işe yaradığını görmek için önce standart Kalman filtresine kısaca dönelim. Genişletilmiş Kalman filtresi, yani EKF, iki adımda çalışır. Tahmin adımında durumu bir model f ile ileri taşırız ve kovaryans P büyür. Güncelleme adımında bir ölçüm z gelir. Kalman kazancı K, ölçüme ne kadar güveneceğimizi söyler. Sonra kestirimi, ölçüm farkıyla orantılı bir miktar ekleyerek düzeltiriz ve belirsizlik küçülür. Dikkat edin, düzeltme bir toplamadır. Konum ya da hız için bu tamamen doğaldır. Peki ya yönelim için? Yönelimi birim kuaterniyon q ile tutalım. Birim kuaterniyonlar dört boyutlu uzayda eğri bir yüzey oluşturur. Burada onun iki boyutlu benzerini, birim çemberi çiziyoruz. Bu sarı nokta, aracın şu anki yönelimidir. Geçerli her yönelim tam olarak çemberin üzerinde durur; ne içinde, ne dışında. Şimdi EKF gibi davranıp düzeltmeyi doğrudan ekleyelim. Kırmızı ok düz bir çizgide ilerler ve ucu çemberin dışına düşer. Toplamın normu artık bir değildir. Bu nesne bir yönelim bile değildir; onu zorla yeniden normalleştirmek ancak bir yamadır. İkinci sorun sayılardadır. Kuaterniyonun dört sayısı vardır, ama yönelimin yalnızca üç serbestlik derecesi. Bu yüzden dörde dört kovaryans matrisi tekil hale gelir. Üç açıyla, yani Euler açılarıyla çalışsak bu kez başka bir duvara çarparız: doksan derecede tekillik, meşhur gimbal kilidi. Hata için yalnızca üç sayı kullanalım: delta teta. ESKF düzeltmeyi kuaterniyona eklemek yerine, bu üç sayıyı yönelimin hemen yanındaki düz bir uzayda, teğet doğruda tutar. Yeşil ok, teğet doğrultudaki küçük bir döndürmedir. Teğet doğru düz olduğu için orada toplama, çıkarma ve kovaryans tamamen sorunsuzdur. Ardından bu düzeltmeyi çembere sararız. Kuaterniyon çarpımı noktayı, okun uzunluğu kadar yay boyunca kaydırır ve nokta çemberin üzerinde kalır. Hata hep sıfırın yakınında tutulduğu için üç açı asla doksan dereceye yaklaşmaz ve tekillik hiç görünmez. Küçük açı varsayımının bize verdiği hediye budur. Şimdi bu iki parçayı tek bir açı üzerinde izleyelim. Yatay eksen zaman, dikey eksen açıdır. Mavi eğri, aracın gerçek açısıdır. Sarı eğri nominal açıdır. Jiroskop ölçümlerini toplayarak ilerler, ama jiroskobun küçük bir sapması olduğu için gerçek açıdan yavaşça uzaklaşır. Aradaki fark, şu kırmızı çizgi, hata durumudur: delta teta. Gerçek açı, nominal açıya bu küçük farkın eklenmesiyle elde edilir. Eksendeki her çentik bir ölçüm anıdır. Ölçüm geldiğinde filtre farkı kestirir ve nominali gerçeğe geri iter; fark bu sıçramalarda sıfıra döner ve hiçbir zaman büyüyemez. Şimdi iki noktanın birlikte yürüyüşünü izleyelim. Aralarındaki boşluk büyür, ölçüm anında kapanır, sonra yeniden büyür. Ama hep küçük kalır. İşte ESKF'nin temel fikri: büyük ve doğrusal olmayan hareketi nominal taşır, filtre ise yalnızca sıfıra yakın küçük farkı kestirir. Küçük bir şeyi doğrusallaştırmak çok daha güvenlidir. Gerçek bir seyir sisteminde durum tek bir açıdan ibaret değildir. Nominal durum konum, hız, kuaterniyon ve iki sensör sapmasından oluşur: toplam on altı sayı. Hata durumu aynı parçaları taşır, tek bir farkla. Kuaterniyonun yerinde üç boyutlu delta teta durur. Bu yüzden toplam on beş sayıdır. Konum ve hız düz uzayda yaşar, bu yüzden onlarda birleştirme sıradan bir toplamadır. Yönelimde ise toplama yoktur. Gerçek kuaterniyon, nominal kuaterniyonun küçük bir delta q ile çarpılmasıdır. Sensör sapmaları da düz uzaydadır ve yine toplanır. Kısacası artı işareti çoğu yerde gerçekten artıdır; yalnızca yönelimde çarpıma dönüşür. Peki delta q nasıl bir şeydir? Bir eksen etrafında phi açısı kadar dönüşü temsil eder: yarım açının kosinüsü ve sinüsü. Şimdi açının küçük olduğunu kullanalım. Yarım açının kosinüsü yaklaşık bir, sinüsü ise yaklaşık yarım açının kendisidir. Böylece delta q, bir ve yarım delta teta olur. Dördüncü sayı kendiliğinden belirlenir; geriye bağımsız üç sayı kalır. Aynı yaklaşım döndürme matrisi için de geçerlidir: birim matris artı delta tetanın çapraz çarpım matrisi. ESKF'nin bütün Jacobianları bu basit formdan çıkar. Hata hep küçük tutulduğu için bu yaklaşımlar her adımda doğru kalır. Filtrenin ilk adımı tahmindir ve iki ayrı iş yapar. Önce nominal durumu, ataletsel ölçüm biriminden gelen ivme ve açısal hız ölçümleriyle ileri taşırız. Konum, hız ve ivmeyle ilerler. İvmeölçerin okuduğu değerden sapmayı çıkarır, dünya eksenlerine döndürür ve yerçekimini ekleriz. Yönelim için jiroskop okumasından sapmayı çıkarır, kalan küçük dönüşü kuaterniyona çarparız. Sapmalar ise bu adımda sabit kalır. Dikkat edin: bu denklemlerde ne gürültü var ne de kovaryans. Nominal durum en iyi tahminimizi, yüksek hızda ve doğrusal olmayan haliyle taşır. Şimdi hata durumuna geçelim. Az önce bir düzeltme yapılıp sıfırlandığı için kestirilen hata tam sıfırdır: sarı nokta. Sıfırı doğrusal bir matrisle ilerletirseniz yine sıfır elde edersiniz. Yani tahminde hata kestirimi hiç değişmez; değişen tek şey ondan ne kadar emin olduğumuzdur. Bu matris, F x, hata dinamiğinin Jacobianıdır ve küçük açı yaklaşımı sayesinde basit bloklardan oluşur. Örneğin açı hatası döndürülür ve jiroskop sapmasının hatası kadar kayar. Kovaryans ise her adımda büyür: eski belirsizlik F x ile taşınır, üstüne süreç gürültüsü Q eklenir. Kırmızı disk bu belirsizliği gösteriyor. Ölçüm gelmedikçe her tahmin adımı diski biraz daha şişirir. Nominal sapmaya devam eder ve biz ondan giderek daha az emin oluruz. Tahminin özeti şu: nominal ilerler, hata kestirimi sıfırda kalır, kovaryans büyür. Bu büyümeyi durduracak tek şey ölçümdür. Tahmin bitti; elimizde ilerlemiş bir nominal durum ve şişmiş bir belirsizlik var. Çember üzerindeki sarı nokta nominal yönelim, kırmızı disk de onun etrafındaki belirsizliktir. Şimdi bir ölçüm geliyor, örneğin bir manyetometreden ya da konum alıcısından. Ölçüm, gerçek durumun bir fonksiyonu artı gürültüdür. Filtre hata durumunu kestirdiği için Jacobianı hata durumuna göre almalıyız. Zincir kuralı bunu iki parçaya böler: ölçümün gerçek duruma, gerçek durumun da hataya göre türevi. Bu ikinci parça neredeyse birim matristir; yalnızca yönelim bloğu küçük açı formundan gelen basit bir matristir. Kazanç K ise bildiğimiz formüldür. Kazancı ölçüm farkıyla çarptığımızda hata durumunun kestirimini elde ederiz. Ortalaması artık sıfır değildir: yeşil ok, teğet doğrudaki düzeltmedir. Aynı anda belirsizlik küçülür, çünkü ölçüm bize bilgi verdi. Kırmızı disk daralır. Ama dikkat edin: düzeltme şu an hâlâ teğet doğruda duruyor. Nominal durum henüz değişmedi. Üçüncü adım enjeksiyondur: kestirilen hatayı nominal duruma katarız. Konum ve hız için bu basit bir toplamadır. Yönelim için ise teğetteki düzeltmeyi kuaterniyon çarpımıyla çembere sararız. Sarı nokta yay boyunca kayar ve yine tam çemberin üzerinde durur. Son adım sıfırlamadır. Hata artık nominalin içine aktarıldığı için hata kestirimi yeniden sıfır olur. Kovaryans da yeni yönelimin teğet uzayına taşınır. Bu dönüşüm G, küçük düzeltmelerde birim matrise çok yakındır; çoğu uygulamada doğrudan birim alınır. Ve döngü baştan başlar: yeni ölçümler gelene kadar tahmin, ölçüm geldiğinde güncelleme, ardından enjeksiyon ve sıfırlama. Bütün parçaları bir araya koyalım. ESKF her döngüde dört adım atar. Tahmin adımında nominal ilerler ve kovaryans büyür. Güncelleme adımında ölçüm, hata kestirimini ve kovaryansı düzeltir. Enjeksiyon, kestirilen hatayı nominale aktarır. Sıfırlama ise hatayı yeniden sıfıra çeker ve döngü kapanır. Son olarak standart EKF ile farkları tek bir tabloda toplayalım. Yönelimi EKF dört sayılı kuaterniyonla doğrudan kestirir; ESKF ise yalnızca üç sayılık delta tetayı kestirir. Bu yüzden EKF'nin yönelim kovaryansı dörde dört ve tekildir; ESKF'ninki üçe üç ve düzgündür. EKF büyük ve hızla değişen bir durum etrafında doğrusallaştırır. ESKF ise her zaman sıfıra yakın bir hata etrafında, yani yaklaşımların en doğru olduğu yerde. Ve birim norm kısıtı: EKF onu sonradan zorla düzeltir, ESKF'de ise çarpımsal enjeksiyon onu kendiliğinden korur. Hata durumu Kalman filtresi büyük işi nominale, belirsizliği küçük hataya bırakır. Bu basit ayrım, onu insansız hava araçlarından uzay araçlarına kadar standart bir yöntem yapar.","watch":{"version":1,"scenes":[{"title":"Neden Hata Durumu?","start":0,"end":193.29902083333326,"objects":{"add_line":"a Math [text] that says \"$hat(q) = hat(q)^(-) + Delta q$\"","broken":"a Math [text] that says \"$norm(hat(q)^(-) + Delta q) eq.not 1$\"","card":"a Title that says \"Durum Kestirimi ve Seyrüsefer — Hata Durumu Kalman Filtresine (ESKF) Giriş ve Temelleri\"","ekf":"a Derivation [text] that says \"$hat(x)^(-) &= f(hat(x), u) \\ P^(-) &= F P F^T + Q \\ K &= P^(-) H^T (H P^(-) H^T + R)^(-1) \\ hat(x) &= hat(x)^(-) + K (z - h(hat(x)^(-))) \\ P &= (I - K H) P^(-)$\"","euler":"a Math [text] that says \"$upright(\"Euler:\") thin theta = plus.minus 90 degree arrow.r upright(\"tekillik\")$\"","ghost":"a Point [gray] drawn in plane (location=(0.766044443118978, 0.6427876096865393))","head_ekf":"a Heading that says \"Hatırlatma: Standart EKF\"","head_fix":"a Heading that says \"Çözüm: Hatayı Teğet Uzayda Tut\"","head_goal":"a Heading that says \"Varacağımız Yer\"","head_problem":"a Heading that says \"Sorun: Yönelim Bir Toplama Değildir\"","heading_deg":"a VariableNumber (initial_value=40.0)","leg_err":"a Math [text] that says \"$delta x : upright(\"hata durumu\")$\"","leg_nom":"a Math [text] that says \"$x : upright(\"nominal durum\")$\"","leg_true":"a Math [text] that says \"$x_t : upright(\"gerçek durum\")$\"","off":"a Point [red] labelled \"hat(q)^(-) + Delta q\" drawn in plane (location=(0.2518143553697466, 1.2556231641817217))","plane":"a Figure (x_range=(-1.6, 1.9), y_range=(-1.4, 1.6), aspect=(3.5, 3.0))","push":"a Vector [red] labelled \"Delta q\" drawn in plane (start=(0.766044443118978, 0.6427876096865393), end=(0.2518143553697466, 1.2556231641817217))","q_pt":"a Point [yellow] labelled \"q\" drawn in plane (location=((0.0 + (1.0 * cos((heading_deg * 0.017453292519943295)))), (0.…)","redundant":"a Math [text] that says \"$q in RR^4, quad upright(\"serbestlik derecesi\") = 3$\"","small":"a Math [text] that says \"$norm(delta theta) approx 0$\"","sphere":"a Circle [blue] labelled \"norm(q) = 1\" drawn in plane","split":"a Math [text] that says \"$x_t = x plus.o delta x$\"","step":"a Vector [green] labelled \"delta theta\" drawn in plane (start=(0.766044443118978, 0.6427876096865393), end=(0.38037187730705446, 1.102414275557926))","tan_line":"a Math [text] that says \"$delta theta in RR^3$\"","tangent":"a Line [gray] drawn in plane (start=(1.4088320528055172, -0.12325683343243876), end=(0.12325683343243876, 1.4088320528055172), dashed=True)","unit":"a Math [text] that says \"$norm(q) = 1$\"","wrap":"a Math [text] that says \"$q arrow.l q times.o q(delta theta)$\""},"beats":[{"start":0,"say":"Bir drone havada süzülürken nereye baktığını, ne kadar hızlı gittiğini ve nerede olduğunu bilmek zorundadır. Bu derste bunu kestiren en yaygın yöntemlerden birini temelden kuracağız: hata durumu Kalman filtresi, kısaca ESKF.","live":[],"does":[[0,"card is shown on the screen, written out."],[1.5463467677851974,"card: enter:write-left-to-right."],[14.7375,"card is hidden from the screen — left the board."]]},{"start":15.9375,"say":"Önce varacağımız yeri gösterelim. Bütün ders tek bir fikrin etrafında döner: gerçek durumu iki parçaya ayırmak.","live":null,"does":[[15.9375,"head_goal is shown on the screen, written out."],[19.52,"split is shown on the screen, written out."]]},{"start":24.0275,"say":"Soldaki x t, gerçek durumdur: aracın o anki hali. Onu hiçbir zaman doğrudan bilemeyiz.","live":["split","head_goal"],"does":[[24.360000000000003,"split (the \"x_t\" part) is emphasized."],[26.04,"leg_true is shown on the screen, written out."],[30.6525,"split (the \"x_t\" part) is no longer emphasized."]]},{"start":31.252499999999998,"say":"Ortadaki x, nominal durumdur. Büyüktür, doğrusal değildir ve her sensör örneğiyle hızla ilerletilir. Ama içinde gürültü ya da belirsizlik yoktur.","live":["split","leg_true","head_goal"],"does":[[32.63999999999999,"leg_nom is shown on the screen, written out."]]},{"start":41.635,"say":"Sağdaki delta x ise hata durumudur: nominalin gerçekten ne kadar saptığı. Küçüktür, neredeyse doğrusaldır ve bütün belirsizliği o taşır.","live":["split","leg_true","leg_nom","head_goal"],"does":[[42.12,"split (the \"delta x\" part) is emphasized."],[43.56,"leg_err is shown on the screen, written out."],[51.4725,"split (the \"delta x\" part) is no longer emphasized."]]},{"start":52.0725,"say":"Bu ayrımın neden bu kadar işe yaradığını görmek için önce standart Kalman filtresine kısaca dönelim.","live":["split","leg_true","leg_nom","leg_err","head_goal"],"does":[[57.69,"head_goal is hidden from the screen — left the board."],[57.69,"leg_err is hidden from the screen — left the board."],[57.69,"leg_nom is hidden from the screen — left the board."],[57.69,"leg_true is hidden from the screen — left the board."],[57.69,"split is hidden from the screen — left the board."]]},{"start":58.89,"say":"Genişletilmiş Kalman filtresi, yani EKF, iki adımda çalışır. Tahmin adımında durumu bir model f ile ileri taşırız ve kovaryans P büyür.","live":[],"does":[[58.89,"head_ekf is shown on the screen, written out."],[63.75999999999999,"ekf is shown on the screen, written out."],[67.19999999999999,"ekf is shown on the screen, written out."]]},{"start":69.2,"say":"Güncelleme adımında bir ölçüm z gelir. Kalman kazancı K, ölçüme ne kadar güveneceğimizi söyler.","live":["head_ekf"],"does":[[72.76,"ekf is shown on the screen, written out."]]},{"start":76.5925,"say":"Sonra kestirimi, ölçüm farkıyla orantılı bir miktar ekleyerek düzeltiriz ve belirsizlik küçülür.","live":null,"does":[[77.28,"ekf is shown on the screen, written out."],[81.28,"ekf is shown on the screen, written out."]]},{"start":83.0425,"say":"Dikkat edin, düzeltme bir toplamadır. Konum ya da hız için bu tamamen doğaldır. Peki ya yönelim için?","live":null,"does":[[84.92000000000002,"ekf (the \"+ K (z - h(hat(x)^(-)))\" part) is emphasized."],[90.065,"ekf is hidden from the screen — left the board."],[90.065,"head_ekf is hidden from the screen — left the board."],[90.065,"ekf (the \"+ K (z - h(hat(x)^(-)))\" part) is no longer emphasized."]]},{"start":91.265,"say":"Yönelimi birim kuaterniyon q ile tutalım. Birim kuaterniyonlar dört boyutlu uzayda eğri bir yüzey oluşturur. Burada onun iki boyutlu benzerini, birim çemberi çiziyoruz.","live":[],"does":[[91.265,"head_problem is shown on the screen, written out."],[91.265,"plane is shown on the screen, written out."],[97.52,"plane moves to a new place on the board."],[97.52,"unit is shown on the screen, written out."],[101.16000000000001,"sphere is shown on the screen, written out."]]},{"start":102.89750000000001,"say":"Bu sarı nokta, aracın şu anki yönelimidir. Geçerli her yönelim tam olarak çemberin üzerinde durur; ne içinde, ne dışında.","live":["unit","plane","head_problem","sphere"],"does":[[103.52000000000001,"q_pt is shown on the screen, written out."]]},{"start":111.715,"say":"Şimdi EKF gibi davranıp düzeltmeyi doğrudan ekleyelim. Kırmızı ok düz bir çizgide ilerler ve ucu çemberin dışına düşer.","live":["unit","plane","head_problem","sphere","q_pt"],"does":[[114.84000000000002,"add_line is shown on the screen, written out."],[115.80000000000003,"push is shown on the screen, written out."],[118.89300000000003,"off is shown on the screen, written out."]]},{"start":120.3575,"say":"Toplamın normu artık bir değildir. Bu nesne bir yönelim bile değildir; onu zorla yeniden normalleştirmek ancak bir yamadır.","live":["unit","add_line","plane","head_problem","sphere","q_pt","push","off"],"does":[[121.20000000000003,"broken is shown on the screen, written out."]]},{"start":129.0575,"say":"İkinci sorun sayılardadır. Kuaterniyonun dört sayısı vardır, ama yönelimin yalnızca üç serbestlik derecesi. Bu yüzden dörde dört kovaryans matrisi tekil hale gelir.","live":["unit","add_line","broken","plane","head_problem","sphere","q_pt","push","off"],"does":[[132.28000000000003,"redundant is shown on the screen, written out."]]},{"start":140.315,"say":"Üç açıyla, yani Euler açılarıyla çalışsak bu kez başka bir duvara çarparız: doksan derecede tekillik, meşhur gimbal kilidi.","live":["unit","add_line","broken","redundant","plane","head_problem","sphere","q_pt","push","off"],"does":[[141.92000000000004,"euler is shown on the screen, written out."],[148.3125,"add_line is hidden from the screen — left the board."],[148.3125,"broken is hidden from the screen — left the board."],[148.3125,"euler is hidden from the screen — left the board."],[148.3125,"head_problem is hidden from the screen — left the board."],[148.3125,"redundant is hidden from the screen — left the board."],[148.3125,"unit is hidden from the screen — left the board."]]},{"start":149.5125,"say":"Hata için yalnızca üç sayı kullanalım: delta teta. ESKF düzeltmeyi kuaterniyona eklemek yerine, bu üç sayıyı yönelimin hemen yanındaki düz bir uzayda, teğet doğruda tutar.","live":["plane","sphere","q_pt","push","off"],"does":[[149.5125,"head_fix is shown on the screen, written out."],[149.5125,"push is hidden from the screen."],[149.5125,"off is hidden from the screen."],[149.92000000000002,"tan_line is shown on the screen, written out."],[160.16,"tangent is shown on the screen, written out."]]},{"start":162.027,"say":"Yeşil ok, teğet doğrultudaki küçük bir döndürmedir. Teğet doğru düz olduğu için orada toplama, çıkarma ve kovaryans tamamen sorunsuzdur.","live":["plane","sphere","q_pt","tan_line","head_fix","tangent"],"does":[[162.43999999999997,"step is shown on the screen, written out."]]},{"start":171.79749999999999,"say":"Ardından bu düzeltmeyi çembere sararız. Kuaterniyon çarpımı noktayı, okun uzunluğu kadar yay boyunca kaydırır ve nokta çemberin üzerinde kalır.","live":["plane","sphere","q_pt","tan_line","head_fix","tangent","step"],"does":[[173.84,"wrap is shown on the screen, written out."],[173.84,"ghost is shown on the screen, written out."],[178.55999999999997,"q_pt is redrawn as the numbers it depends on change."],[178.55999999999997,"heading_deg ticks to 74.37746770784939."],[181.33499999999998,"step is hidden from the screen."],[181.33499999999998,"tangent is hidden from the screen."]]},{"start":181.93499999999997,"say":"Hata hep sıfırın yakınında tutulduğu için üç açı asla doksan dereceye yaklaşmaz ve tekillik hiç görünmez. Küçük açı varsayımının bize verdiği hediye budur.","live":["plane","sphere","q_pt","tan_line","wrap","head_fix","ghost"],"does":[[182.91999999999996,"small is shown on the screen, written out."],[192.25735416666663,"head_fix is hidden from the screen — left the board."],[192.25735416666663,"plane is hidden from the screen — left the board."],[192.25735416666663,"sphere is hidden from the screen — plane left the board."],[192.25735416666663,"q_pt is hidden from the screen — plane left the board."],[192.25735416666663,"ghost is hidden from the screen — plane left the board."],[192.25735416666663,"small is hidden from the screen — left the board."],[192.25735416666663,"tan_line is hidden from the screen — left the board."],[192.25735416666663,"wrap is hidden from the screen — left the board."]]}]},{"title":"Nominal ve Hata Durumu","start":193.29902083333326,"end":339.1384374999999,"objects":{"axes":"an Axes (x_range=(0.0, 10.0), y_range=(0.0, 1.3), x_ticks_every=3.0)","gap_line":"a Line [red] labelled \"delta theta\" drawn in axes (start=(2.7, 0.8433199652026206), end=(2.7, 1.0323199652026207))","head_small":"a Heading that says \"Küçük Açı Yaklaşımı\"","head_state":"a Heading that says \"Durum Vektörleri\"","head_two":"a Heading that says \"Gerçek, Nominal ve Hata\"","m_reset":"a Math [text] that says \"$upright(\"ölçümden sonra:\") thin delta theta = 0$\"","m_small":"a Math [text] that says \"$abs(delta theta) << 1$\"","m_true":"a Math [text] that says \"$theta_t = theta + delta theta$\"","nom_curve":"a FunctionPlot [yellow] drawn in axes (function=<function>)","point":"a Point [yellow] drawn in axes (location=(3.0, 1.002123278327106))","point_2":"a Point [yellow] drawn in axes (location=(6.0, 0.39494847965524427))","point_3":"a Point [yellow] drawn in axes (location=(9.0, 0.7058848651695223))","rider_nom":"a PlotPoint [yellow] drawn in axes (target='nom_curve', x=<VariableNumber tv = 9.8>)","rider_true":"a PlotPoint [magenta] drawn in axes (target='true_curve', x=<VariableNumber tv = 9.8>)","small_claim":"a Text [text] that says \"Hata küçük kaldıkça bu yaklaşımlar doğrudur ve üç parametrenin tekilliği hiç ortaya çıkmaz.\"","small_work":"a Derivation [text] that says \"$delta q &= vec(cos(phi / 2), hat(u) sin(phi / 2)), quad phi = norm(delta theta) \\ &approx vec(1, frac(1, 2) delta theta) \\ R(delta theta) &approx I + [delta theta]_times$\"","state_work":"a Derivation [text] that says \"$x &= (p, thin v, thin q, thin a_b, thin omega_b) in RR^16 \\ delta x &= (delta p, thin delta v, thin delta theta, thin delta a_b, thin delta omega_b) in RR^15 \\ p_t &= p + delta p, quad v_t = v + delta v \\ q_t &= q times.o delta q \\ a_(b t)…$\"","true_curve":"a FunctionPlot [blue] drawn in axes (function=<function>)","tv":"a VariableNumber (initial_value=0.2)"},"beats":[{"start":193.29902083333326,"say":"Şimdi bu iki parçayı tek bir açı üzerinde izleyelim. Yatay eksen zaman, dikey eksen açıdır. Mavi eğri, aracın gerçek açısıdır.","live":[],"does":[[193.29902083333326,"head_two is shown on the screen, written out."],[193.29902083333326,"axes is shown on the screen, written out."],[199.25902083333327,"true_curve is shown on the screen, written out."]]},{"start":202.23902083333326,"say":"Sarı eğri nominal açıdır. Jiroskop ölçümlerini toplayarak ilerler, ama jiroskobun küçük bir sapması olduğu için gerçek açıdan yavaşça uzaklaşır.","live":["axes","head_two","true_curve"],"does":[[202.45902083333326,"nom_curve is shown on the screen, written out."]]},{"start":211.93152083333325,"say":"Aradaki fark, şu kırmızı çizgi, hata durumudur: delta teta. Gerçek açı, nominal açıya bu küçük farkın eklenmesiyle elde edilir.","live":["axes","head_two","true_curve","nom_curve"],"does":[[213.21902083333327,"gap_line is shown on the screen, written out."],[216.37902083333324,"axes moves to a new place on the board."],[216.37902083333324,"m_true is shown on the screen, written out."]]},{"start":220.86902083333325,"say":"Eksendeki her çentik bir ölçüm anıdır. Ölçüm geldiğinde filtre farkı kestirir ve nominali gerçeğe geri iter; fark bu sıçramalarda sıfıra döner ve hiçbir zaman büyüyemez.","live":["m_true","axes","head_two","true_curve","nom_curve","gap_line"],"does":[[228.69902083333324,"point is shown on the screen, grown."],[229.45902083333326,"m_reset is shown on the screen, written out."],[230.76541141392605,"point is hidden from the screen."],[231.14770942448226,"point_2 is shown on the screen, grown."],[231.17902083333325,"m_small is shown on the screen, written out."]]},{"start":232.58652083333325,"say":"Şimdi iki noktanın birlikte yürüyüşünü izleyelim. Aralarındaki boşluk büyür, ölçüm anında kapanır, sonra yeniden büyür. Ama hep küçük kalır.","live":["m_true","m_reset","m_small","axes","head_two","true_curve","nom_curve","gap_line","point_2"],"does":[[233.50417902566772,"point_2 is hidden from the screen."],[233.8723552802577,"point_3 is shown on the screen, grown."],[234.25902083333327,"rider_true is shown on the screen, written out."],[234.25902083333327,"rider_nom is shown on the screen, written out."],[235.49902083333325,"rider_true is redrawn as the numbers it depends on change."],[235.49902083333325,"rider_nom is redrawn as the numbers it depends on change."],[235.49902083333325,"tv ticks to 9.8."],[235.61060457475565,"point_3 is hidden from the screen."]]},{"start":241.97152083333327,"say":"İşte ESKF'nin temel fikri: büyük ve doğrusal olmayan hareketi nominal taşır, filtre ise yalnızca sıfıra yakın küçük farkı kestirir. Küçük bir şeyi doğrusallaştırmak çok daha güvenlidir.","live":["m_true","m_reset","m_small","axes","head_two","true_curve","nom_curve","gap_line","rider_true","rider_nom"],"does":[[249.57902083333323,"m_small is emphasized."],[254.00902083333327,"axes is hidden from the screen — left the board."],[254.00902083333327,"true_curve is hidden from the screen — axes left the board."],[254.00902083333327,"nom_curve is hidden from the screen — axes left the board."],[254.00902083333327,"gap_line is hidden from the screen — axes left the board."],[254.00902083333327,"rider_true is hidden from the screen — axes left the board."],[254.00902083333327,"rider_nom is hidden from the screen — axes left the board."],[254.00902083333327,"head_two is hidden from the screen — left the board."],[254.00902083333327,"m_reset is hidden from the screen — left the board."],[254.00902083333327,"m_small is hidden from the screen — left the board."],[254.00902083333327,"m_true is hidden from the screen — left the board."],[254.00902083333327,"m_small is no longer emphasized."]]},{"start":255.20902083333326,"say":"Gerçek bir seyir sisteminde durum tek bir açıdan ibaret değildir. Nominal durum konum, hız, kuaterniyon ve iki sensör sapmasından oluşur: toplam on altı sayı.","live":[],"does":[[255.20902083333326,"head_state is shown on the screen, written out."],[259.01902083333323,"state_work is shown on the screen, written out."]]},{"start":266.1415208333333,"say":"Hata durumu aynı parçaları taşır, tek bir farkla. Kuaterniyonun yerinde üç boyutlu delta teta durur. Bu yüzden toplam on beş sayıdır.","live":["head_state"],"does":[[266.25902083333324,"state_work is shown on the screen, written out."],[269.41902083333326,"state_work (the \"delta theta\" part) is emphasized."],[273.05902083333325,"state_work (the \"RR^15\" part) is emphasized."],[273.05902083333325,"state_work (the \"delta theta\" part) is no longer emphasized."],[274.47402083333327,"state_work (the \"RR^15\" part) is no longer emphasized."]]},{"start":275.0740208333333,"say":"Konum ve hız düz uzayda yaşar, bu yüzden onlarda birleştirme sıradan bir toplamadır.","live":null,"does":[[275.25902083333324,"state_work is shown on the screen, written out."]]},{"start":280.74152083333325,"say":"Yönelimde ise toplama yoktur. Gerçek kuaterniyon, nominal kuaterniyonun küçük bir delta q ile çarpılmasıdır.","live":null,"does":[[282.8190208333333,"state_work is shown on the screen, written out."]]},{"start":288.1265208333333,"say":"Sensör sapmaları da düz uzaydadır ve yine toplanır. Kısacası artı işareti çoğu yerde gerçekten artıdır; yalnızca yönelimde çarpıma dönüşür.","live":null,"does":[[288.29902083333326,"state_work is shown on the screen, written out."],[295.2590208333333,"state_work (the \"times.o\" part) is emphasized."],[297.3090208333333,"head_state is hidden from the screen — left the board."],[297.3090208333333,"state_work is hidden from the screen — left the board."],[297.3090208333333,"state_work (the \"times.o\" part) is no longer emphasized."]]},{"start":298.50902083333324,"say":"Peki delta q nasıl bir şeydir? Bir eksen etrafında phi açısı kadar dönüşü temsil eder: yarım açının kosinüsü ve sinüsü.","live":[],"does":[[298.50902083333324,"head_small is shown on the screen, written out."],[303.09902083333327,"small_work is shown on the screen, written out."]]},{"start":306.91152083333327,"say":"Şimdi açının küçük olduğunu kullanalım. Yarım açının kosinüsü yaklaşık bir, sinüsü ise yaklaşık yarım açının kendisidir.","live":["head_small"],"does":[[308.4990208333333,"small_work is shown on the screen, written out."]]},{"start":314.73652083333326,"say":"Böylece delta q, bir ve yarım delta teta olur. Dördüncü sayı kendiliğinden belirlenir; geriye bağımsız üç sayı kalır.","live":null,"does":[[316.9390208333333,"small_work (the \"frac(1, 2) delta theta\" part) is emphasized."],[322.3815208333333,"small_work (the \"frac(1, 2) delta theta\" part) is no longer emphasized."]]},{"start":322.98152083333326,"say":"Aynı yaklaşım döndürme matrisi için de geçerlidir: birim matris artı delta tetanın çapraz çarpım matrisi. ESKF'nin bütün Jacobianları bu basit formdan çıkar.","live":null,"does":[[323.9390208333333,"small_work is shown on the screen, written out."]]},{"start":333.6940208333333,"say":"Hata hep küçük tutulduğu için bu yaklaşımlar her adımda doğru kalır.","live":null,"does":[[333.8190208333333,"small_claim is shown on the screen, written out."],[338.09677083333327,"head_small is hidden from the screen — left the board."],[338.09677083333327,"small_claim is hidden from the screen — left the board."],[338.09677083333327,"small_work is hidden from the screen — left the board."]]}]},{"title":"Tahmin Adımı","start":339.1384374999999,"end":439.4260208333332,"objects":{"cloud":"a Figure (x_range=(-1.6, 1.6), y_range=(-1.3, 1.3), aspect=(3.2, 2.6))","err_work":"a Derivation [text] that says \"$delta hat(x) &arrow.l F_x delta hat(x) = 0 \\ F_x &= frac(partial f, partial delta x) \\ delta theta &arrow.l R^T delta theta - delta omega_b Delta t \\ P &arrow.l F_x P F_x^T + F_i Q_i F_i^T$\"","head_err":"a Heading that says \"Hata Durumu: Ortalama Sıfır, Kovaryans Büyür\"","head_nom":"a Heading that says \"Nominal Durum: IMU ile İlerletme\"","nominal_work":"a Derivation [text] that says \"$p &arrow.l p + v Delta t + frac(1, 2) (R (a_m - a_b) + g) Delta t^2 \\ v &arrow.l v + (R (a_m - a_b) + g) Delta t \\ q &arrow.l q times.o q((omega_m - omega_b) Delta t) \\ a_b &arrow.l a_b, quad omega_b arrow.l omega_b$\"","sigma":"a VariableNumber (initial_value=0.25)","spread":"a Circle [red] labelled \"P\" drawn in cloud (radius=<VariableNumber sigma = 1.05>, filled=True)","zero":"a Point [yellow] labelled \"delta hat(x) = 0\" drawn in cloud"},"beats":[{"start":339.1384374999999,"say":"Filtrenin ilk adımı tahmindir ve iki ayrı iş yapar. Önce nominal durumu, ataletsel ölçüm biriminden gelen ivme ve açısal hız ölçümleriyle ileri taşırız.","live":[],"does":[[339.1384374999999,"head_nom is shown on the screen, written out."]]},{"start":350.3309374999999,"say":"Konum, hız ve ivmeyle ilerler. İvmeölçerin okuduğu değerden sapmayı çıkarır, dünya eksenlerine döndürür ve yerçekimini ekleriz.","live":["head_nom"],"does":[[350.5384374999999,"nominal_work is shown on the screen, written out."],[352.2984374999999,"nominal_work is shown on the screen, written out."],[354.6184374999999,"nominal_work (the \"(a_m - a_b)\" part) is emphasized."],[358.9059374999999,"nominal_work (the \"(a_m - a_b)\" part) is no longer emphasized."]]},{"start":359.5059374999999,"say":"Yönelim için jiroskop okumasından sapmayı çıkarır, kalan küçük dönüşü kuaterniyona çarparız. Sapmalar ise bu adımda sabit kalır.","live":null,"does":[[359.6984374999999,"nominal_work is shown on the screen, written out."],[363.3784374999999,"nominal_work (the \"(omega_m - omega_b)\" part) is emphasized."],[365.3784374999999,"nominal_work is shown on the screen, written out."],[365.3784374999999,"nominal_work (the \"(omega_m - omega_b)\" part) is no longer emphasized."]]},{"start":368.2134374999999,"say":"Dikkat edin: bu denklemlerde ne gürültü var ne de kovaryans. Nominal durum en iyi tahminimizi, yüksek hızda ve doğrusal olmayan haliyle taşır.","live":null,"does":[[375.7384374999999,"nominal_work is indicated — a transient flash."],[377.8909374999999,"head_nom is hidden from the screen — left the board."],[377.8909374999999,"nominal_work is hidden from the screen — left the board."]]},{"start":379.0909374999999,"say":"Şimdi hata durumuna geçelim. Az önce bir düzeltme yapılıp sıfırlandığı için kestirilen hata tam sıfırdır: sarı nokta.","live":[],"does":[[379.0909374999999,"head_err is shown on the screen, written out."],[379.0909374999999,"cloud is shown on the screen, written out."],[383.4984374999999,"cloud moves to a new place on the board."],[383.4984374999999,"err_work is shown on the screen, written out."],[385.7384374999999,"zero is shown on the screen, written out."]]},{"start":387.11093749999986,"say":"Sıfırı doğrusal bir matrisle ilerletirseniz yine sıfır elde edersiniz. Yani tahminde hata kestirimi hiç değişmez; değişen tek şey ondan ne kadar emin olduğumuzdur.","live":["cloud","head_err","zero"],"does":[[389.7784374999999,"err_work (the \"= 0\" part) is emphasized."],[394.29843749999986,"err_work (the \"= 0\" part) is no longer emphasized."]]},{"start":397.8734374999999,"say":"Bu matris, F x, hata dinamiğinin Jacobianıdır ve küçük açı yaklaşımı sayesinde basit bloklardan oluşur. Örneğin açı hatası döndürülür ve jiroskop sapmasının hatası kadar kayar.","live":null,"does":[[400.5384374999999,"err_work is shown on the screen, written out."],[405.05843749999985,"err_work is shown on the screen, written out."],[407.17843749999986,"err_work (the \"delta omega_b Delta t\" part) is emphasized."],[409.66843749999987,"err_work (the \"delta omega_b Delta t\" part) is no longer emphasized."]]},{"start":410.2684374999999,"say":"Kovaryans ise her adımda büyür: eski belirsizlik F x ile taşınır, üstüne süreç gürültüsü Q eklenir. Kırmızı disk bu belirsizliği gösteriyor.","live":null,"does":[[410.5784374999999,"err_work is shown on the screen, written out."],[417.6454374999999,"spread is shown on the screen, written out."]]},{"start":420.47843749999987,"say":"Ölçüm gelmedikçe her tahmin adımı diski biraz daha şişirir. Nominal sapmaya devam eder ve biz ondan giderek daha az emin oluruz.","live":["cloud","head_err","zero","spread"],"does":[[423.8184374999999,"spread is redrawn as the numbers it depends on change."],[423.8184374999999,"sigma ticks to 1.05."]]},{"start":429.29593749999987,"say":"Tahminin özeti şu: nominal ilerler, hata kestirimi sıfırda kalır, kovaryans büyür. Bu büyümeyi durduracak tek şey ölçümdür.","live":null,"does":[[433.1384374999999,"zero is indicated — a transient flash."],[434.8984374999999,"spread is indicated — a transient flash."],[438.3843541666665,"cloud is hidden from the screen — left the board."],[438.3843541666665,"zero is hidden from the screen — cloud left the board."],[438.3843541666665,"spread is hidden from the screen — cloud left the board."],[438.3843541666665,"err_work is hidden from the screen — left the board."],[438.3843541666665,"head_err is hidden from the screen — left the board."]]}]},{"title":"Güncelleme, Enjeksiyon ve Sıfırlama","start":439.4260208333332,"end":549.7438124999999,"objects":{"ang":"a VariableNumber (initial_value=40.0)","est":"a Vector [green] labelled \"delta hat(theta)\" drawn in plane (start=(0.766044443118978, 0.6427876096865393), end=(0.4446506382757084, 1.0258098312460282))","head_inj":"a Heading that says \"Enjeksiyon ve Sıfırlama\"","head_upd":"a Heading that says \"Ölçüm Güncellemesi\"","inj_work":"a Derivation [text] that says \"$x &arrow.l x plus.o delta hat(x) \\ q &arrow.l q times.o q(delta hat(theta)) \\ delta hat(x) &arrow.l 0 \\ P &arrow.l G P G^T, quad G approx I$\"","plane":"a Figure (x_range=(-1.6, 1.9), y_range=(-1.4, 1.6), aspect=(3.5, 3.0))","q_pt":"a Point [yellow] labelled \"q\" drawn in plane (location=((0.0 + (1.0 * cos((ang * 0.017453292519943295)))), (0.0 + (1.0…)","radius":"a VariableNumber (initial_value=0.45)","sphere":"a Circle [blue] drawn in plane","spread":"a Circle [red] drawn in plane (center=(0.766044443118978, 0.6427876096865393), radius=<VariableNumber radius = 0.18>, filled=True)","spread2":"a Circle [red] drawn in plane (center=(0.36409844893215926, 0.931360466997175), radius=0.18, filled=True)","tangent":"a Line [gray] drawn in plane (start=(1.4088320528055172, -0.12325683343243876), end=(0.12325683343243876, 1.4088320528055172), dashed=True)","upd_work":"a Derivation [text] that says \"$y &= h(x_t) + v \\ H &= frac(partial h, partial delta x) = H_x X_(delta x) \\ K &= P H^T (H P H^T + V)^(-1) \\ delta hat(x) &arrow.l K (y - h(x)) \\ P &arrow.l (I - K H) P$\""},"beats":[{"start":439.4260208333332,"say":"Tahmin bitti; elimizde ilerlemiş bir nominal durum ve şişmiş bir belirsizlik var. Çember üzerindeki sarı nokta nominal yönelim, kırmızı disk de onun etrafındaki belirsizliktir.","live":[],"does":[[439.4260208333332,"head_upd is shown on the screen, written out."],[439.4260208333332,"plane is shown on the screen, written out."],[439.4260208333332,"sphere is shown on the screen, written out."],[445.90602083333323,"q_pt is shown on the screen, written out."],[447.7060208333332,"spread is shown on the screen, written out."]]},{"start":451.2260208333332,"say":"Şimdi bir ölçüm geliyor, örneğin bir manyetometreden ya da konum alıcısından. Ölçüm, gerçek durumun bir fonksiyonu artı gürültüdür.","live":["plane","head_upd","sphere","q_pt","spread"],"does":[[457.7860208333332,"plane moves to a new place on the board."],[457.7860208333332,"upd_work is shown on the screen, written out."]]},{"start":460.3735208333332,"say":"Filtre hata durumunu kestirdiği için Jacobianı hata durumuna göre almalıyız. Zincir kuralı bunu iki parçaya böler: ölçümün gerçek duruma, gerçek durumun da hataya göre türevi.","live":null,"does":[[462.7060208333332,"upd_work is shown on the screen, written out."],[470.1460208333332,"upd_work (the \"X_(delta x)\" part) is emphasized."],[471.5110208333332,"upd_work (the \"X_(delta x)\" part) is no longer emphasized."]]},{"start":472.1110208333332,"say":"Bu ikinci parça neredeyse birim matristir; yalnızca yönelim bloğu küçük açı formundan gelen basit bir matristir. Kazanç K ise bildiğimiz formüldür.","live":null,"does":[[479.3860208333332,"upd_work is shown on the screen, written out."]]},{"start":482.3260208333332,"say":"Kazancı ölçüm farkıyla çarptığımızda hata durumunun kestirimini elde ederiz. Ortalaması artık sıfır değildir: yeşil ok, teğet doğrudaki düzeltmedir.","live":null,"does":[[483.9460208333332,"upd_work is shown on the screen, written out."],[487.2660208333332,"tangent is shown on the screen, written out."],[489.5060208333332,"est is shown on the screen, written out."]]},{"start":492.5385208333332,"say":"Aynı anda belirsizlik küçülür, çünkü ölçüm bize bilgi verdi. Kırmızı disk daralır.","live":["plane","head_upd","sphere","q_pt","spread","tangent","est"],"does":[[493.3060208333332,"upd_work is shown on the screen, written out."],[493.9460208333332,"spread is redrawn as the numbers it depends on change."],[493.9460208333332,"radius ticks to 0.18."]]},{"start":498.5760208333332,"say":"Ama dikkat edin: düzeltme şu an hâlâ teğet doğruda duruyor. Nominal durum henüz değişmedi.","live":null,"does":[[502.5460208333332,"q_pt is indicated — a transient flash."],[504.4835208333332,"head_upd is hidden from the screen — left the board."],[504.4835208333332,"upd_work is hidden from the screen — left the board."]]},{"start":505.0835208333332,"say":"Üçüncü adım enjeksiyondur: kestirilen hatayı nominal duruma katarız. Konum ve hız için bu basit bir toplamadır.","live":["plane","sphere","q_pt","spread","tangent","est"],"does":[[505.0835208333332,"head_inj is shown on the screen, written out."],[506.0260208333332,"inj_work is shown on the screen, written out."]]},{"start":512.8960208333332,"say":"Yönelim için ise teğetteki düzeltmeyi kuaterniyon çarpımıyla çembere sararız. Sarı nokta yay boyunca kayar ve yine tam çemberin üzerinde durur.","live":["plane","sphere","q_pt","spread","tangent","est","head_inj"],"does":[[513.1060208333332,"inj_work is shown on the screen, written out."],[517.1060208333332,"spread is hidden from the screen."],[519.1860208333333,"q_pt is redrawn as the numbers it depends on change."],[519.1860208333333,"ang ticks to 68.64788975654116."],[521.2660208333332,"est is hidden from the screen."],[521.2660208333332,"tangent is hidden from the screen."]]},{"start":522.4210208333332,"say":"Son adım sıfırlamadır. Hata artık nominalin içine aktarıldığı için hata kestirimi yeniden sıfır olur.","live":["plane","sphere","q_pt","head_inj"],"does":[[523.3060208333332,"inj_work is shown on the screen, written out."]]},{"start":529.6460208333332,"say":"Kovaryans da yeni yönelimin teğet uzayına taşınır. Bu dönüşüm G, küçük düzeltmelerde birim matrise çok yakındır; çoğu uygulamada doğrudan birim alınır.","live":null,"does":[[529.8260208333332,"inj_work is shown on the screen, written out."],[532.0660208333333,"spread2 is shown on the screen, written out."],[536.1460208333332,"inj_work (the \"G approx I\" part) is emphasized."],[539.1585208333332,"inj_work (the \"G approx I\" part) is no longer emphasized."]]},{"start":539.7585208333333,"say":"Ve döngü baştan başlar: yeni ölçümler gelene kadar tahmin, ölçüm geldiğinde güncelleme, ardından enjeksiyon ve sıfırlama.","live":["plane","sphere","q_pt","head_inj","spread2"],"does":[[548.7021458333331,"head_inj is hidden from the screen — left the board."],[548.7021458333331,"inj_work is hidden from the screen — left the board."],[548.7021458333331,"plane is hidden from the screen — left the board."],[548.7021458333331,"sphere is hidden from the screen — plane left the board."],[548.7021458333331,"q_pt is hidden from the screen — plane left the board."],[548.7021458333331,"spread2 is hidden from the screen — plane left the board."]]}]},{"title":"ESKF Döngüsü ve EKF ile Karşılaştırma","start":549.7438124999999,"end":628.1946666666665,"objects":{"head_cmp":"a Heading that says \"EKF ve ESKF Yan Yana\"","head_loop":"a Heading that says \"ESKF Döngüsü\"","loop_list":"a Block [text] that says \"Tahmin: nominal durumu IMU ile ilerlet, $P$ matrisini $F_x$ ile büyüt. Güncelleme: ölçümle $delta hat(x)$ ve $P$ matrisini düzelt. Enjeksiyon: $x arrow.l x plus.o delta hat(x)$. Sıfırlama: $delta hat(x) arrow.l 0$ ve $P arrow.l G P G^T$.\"","table":"a Table [text] that says \"Konu EKF ESKF Yönelim kuaterniyon, 4 sayı $delta theta$, 3 sayı Yönelim kovaryansı $4 times 4$, tekil $3 times 3$, düzgün Doğrusallaştırma büyük durum etrafında sıfır etrafında Birim norm sonradan normalleştirme çarpımsal, kendiliğinden\" (rows=(('Konu', 'EKF', 'ESKF'), ('Yönelim', 'kuaterniyon, 4 sayı', '$…, header=True)"},"beats":[{"start":549.7438124999999,"say":"Bütün parçaları bir araya koyalım. ESKF her döngüde dört adım atar.","live":[],"does":[[549.7438124999999,"head_loop is shown on the screen, written out."],[550.1838124999999,"loop_list is shown on the screen, written out."]]},{"start":555.2663124999999,"say":"Tahmin adımında nominal ilerler ve kovaryans büyür. Güncelleme adımında ölçüm, hata kestirimini ve kovaryansı düzeltir.","live":["loop_list","head_loop"],"does":[[555.4638124999999,"loop_list (the \"Tahmin\" part) is emphasized."],[559.0638124999999,"loop_list (the \"Güncelleme\" part) is emphasized."],[559.0638124999999,"loop_list (the \"Tahmin\" part) is no longer emphasized."]]},{"start":564.3213124999999,"say":"Enjeksiyon, kestirilen hatayı nominale aktarır. Sıfırlama ise hatayı yeniden sıfıra çeker ve döngü kapanır.","live":null,"does":[[564.5438124999998,"loop_list (the \"Enjeksiyon\" part) is emphasized."],[564.5438124999998,"loop_list (the \"Güncelleme\" part) is no longer emphasized."],[567.8238124999999,"loop_list (the \"Enjeksiyon\" part) is no longer emphasized."],[567.8238124999999,"loop_list (the \"Sıfırlama\" part) is emphasized."],[571.7738124999998,"loop_list (the \"Sıfırlama\" part) is no longer emphasized."]]},{"start":572.3738124999999,"say":"Son olarak standart EKF ile farkları tek bir tabloda toplayalım.","live":null,"does":[[576.6163124999998,"head_loop is hidden from the screen — left the board."],[576.6163124999998,"loop_list is hidden from the screen — left the board."]]},{"start":577.2163124999998,"say":"Yönelimi EKF dört sayılı kuaterniyonla doğrudan kestirir; ESKF ise yalnızca üç sayılık delta tetayı kestirir.","live":[],"does":[[577.2163124999998,"head_cmp is shown on the screen, written out."],[577.2163124999998,"table is shown on the screen, written out."],[578.7838124999998,"table is shown on the screen, written out."]]},{"start":586.1588124999998,"say":"Bu yüzden EKF'nin yönelim kovaryansı dörde dört ve tekildir; ESKF'ninki üçe üç ve düzgündür.","live":["head_cmp"],"does":[[588.1038124999999,"table is shown on the screen, written out."]]},{"start":594.4838124999999,"say":"EKF büyük ve hızla değişen bir durum etrafında doğrusallaştırır. ESKF ise her zaman sıfıra yakın bir hata etrafında, yani yaklaşımların en doğru olduğu yerde.","live":null,"does":[[597.7438124999999,"table is shown on the screen, written out."]]},{"start":606.3188124999999,"say":"Ve birim norm kısıtı: EKF onu sonradan zorla düzeltir, ESKF'de ise çarpımsal enjeksiyon onu kendiliğinden korur.","live":null,"does":[[607.4238124999998,"table is shown on the screen, written out."]]},{"start":615.5788124999999,"say":"Hata durumu Kalman filtresi büyük işi nominale, belirsizliği küçük hataya bırakır. Bu basit ayrım, onu insansız hava araçlarından uzay araçlarına kadar standart bir yöntem yapar.","live":null,"does":[[621.8238124999999,"table (the \"column=3\" part) is emphasized."],[625.4238124999999,"table (the \"column=3\" part) is no longer emphasized."],[627.1529999999999,"head_cmp is hidden from the screen — left the board."],[627.1529999999999,"table is hidden from the screen — left the board."]]}]}]},"durationSeconds":628,"chapters":[{"title":"Neden Hata Durumu?","startSeconds":0,"narration":"Bir drone havada süzülürken nereye baktığını, ne kadar hızlı gittiğini ve nerede olduğunu bilmek zorundadır. Bu derste bunu kestiren en yaygın yöntemlerden birini temelden kuracağız: hata durumu Kalman filtresi, kısaca ESKF. Önce varacağımız yeri gösterelim. Bütün ders tek bir fikrin etrafında döner: gerçek durumu iki parçaya ayırmak. Soldaki x t, gerçek durumdur: aracın o anki hali. Onu hiçbir zaman doğrudan bilemeyiz. Ortadaki x, nominal durumdur. Büyüktür, doğrusal değildir ve her sensör örneğiyle hızla ilerletilir. Ama içinde gürültü ya da belirsizlik yoktur. Sağdaki delta x ise hata durumudur: nominalin gerçekten ne kadar saptığı. Küçüktür, neredeyse doğrusaldır ve bütün belirsizliği o taşır. Bu ayrımın neden bu kadar işe yaradığını görmek için önce standart Kalman filtresine kısaca dönelim. Genişletilmiş Kalman filtresi, yani EKF, iki adımda çalışır. Tahmin adımında durumu bir model f ile ileri taşırız ve kovaryans P büyür. Güncelleme adımında bir ölçüm z gelir. Kalman kazancı K, ölçüme ne kadar güveneceğimizi söyler. Sonra kestirimi, ölçüm farkıyla orantılı bir miktar ekleyerek düzeltiriz ve belirsizlik küçülür. Dikkat edin, düzeltme bir toplamadır. Konum ya da hız için bu tamamen doğaldır. Peki ya yönelim için? Yönelimi birim kuaterniyon q ile tutalım. Birim kuaterniyonlar dört boyutlu uzayda eğri bir yüzey oluşturur. Burada onun iki boyutlu benzerini, birim çemberi çiziyoruz. Bu sarı nokta, aracın şu anki yönelimidir. Geçerli her yönelim tam olarak çemberin üzerinde durur; ne içinde, ne dışında. Şimdi EKF gibi davranıp düzeltmeyi doğrudan ekleyelim. Kırmızı ok düz bir çizgide ilerler ve ucu çemberin dışına düşer. Toplamın normu artık bir değildir. Bu nesne bir yönelim bile değildir; onu zorla yeniden normalleştirmek ancak bir yamadır. İkinci sorun sayılardadır. Kuaterniyonun dört sayısı vardır, ama yönelimin yalnızca üç serbestlik derecesi. Bu yüzden dörde dört kovaryans matrisi tekil hale gelir. Üç açıyla, yani Euler açılarıyla çalışsak bu kez başka bir duvara çarparız: doksan derecede tekillik, meşhur gimbal kilidi. Hata için yalnızca üç sayı kullanalım: delta teta. ESKF düzeltmeyi kuaterniyona eklemek yerine, bu üç sayıyı yönelimin hemen yanındaki düz bir uzayda, teğet doğruda tutar. Yeşil ok, teğet doğrultudaki küçük bir döndürmedir. Teğet doğru düz olduğu için orada toplama, çıkarma ve kovaryans tamamen sorunsuzdur. Ardından bu düzeltmeyi çembere sararız. Kuaterniyon çarpımı noktayı, okun uzunluğu kadar yay boyunca kaydırır ve nokta çemberin üzerinde kalır. Hata hep sıfırın yakınında tutulduğu için üç açı asla doksan dereceye yaklaşmaz ve tekillik hiç görünmez. Küçük açı varsayımının bize verdiği hediye budur."},{"title":"Nominal ve Hata Durumu","startSeconds":193.29902083333326,"narration":"Şimdi bu iki parçayı tek bir açı üzerinde izleyelim. Yatay eksen zaman, dikey eksen açıdır. Mavi eğri, aracın gerçek açısıdır. Sarı eğri nominal açıdır. Jiroskop ölçümlerini toplayarak ilerler, ama jiroskobun küçük bir sapması olduğu için gerçek açıdan yavaşça uzaklaşır. Aradaki fark, şu kırmızı çizgi, hata durumudur: delta teta. Gerçek açı, nominal açıya bu küçük farkın eklenmesiyle elde edilir. Eksendeki her çentik bir ölçüm anıdır. Ölçüm geldiğinde filtre farkı kestirir ve nominali gerçeğe geri iter; fark bu sıçramalarda sıfıra döner ve hiçbir zaman büyüyemez. Şimdi iki noktanın birlikte yürüyüşünü izleyelim. Aralarındaki boşluk büyür, ölçüm anında kapanır, sonra yeniden büyür. Ama hep küçük kalır. İşte ESKF'nin temel fikri: büyük ve doğrusal olmayan hareketi nominal taşır, filtre ise yalnızca sıfıra yakın küçük farkı kestirir. Küçük bir şeyi doğrusallaştırmak çok daha güvenlidir. Gerçek bir seyir sisteminde durum tek bir açıdan ibaret değildir. Nominal durum konum, hız, kuaterniyon ve iki sensör sapmasından oluşur: toplam on altı sayı. Hata durumu aynı parçaları taşır, tek bir farkla. Kuaterniyonun yerinde üç boyutlu delta teta durur. Bu yüzden toplam on beş sayıdır. Konum ve hız düz uzayda yaşar, bu yüzden onlarda birleştirme sıradan bir toplamadır. Yönelimde ise toplama yoktur. Gerçek kuaterniyon, nominal kuaterniyonun küçük bir delta q ile çarpılmasıdır. Sensör sapmaları da düz uzaydadır ve yine toplanır. Kısacası artı işareti çoğu yerde gerçekten artıdır; yalnızca yönelimde çarpıma dönüşür. Peki delta q nasıl bir şeydir? Bir eksen etrafında phi açısı kadar dönüşü temsil eder: yarım açının kosinüsü ve sinüsü. Şimdi açının küçük olduğunu kullanalım. Yarım açının kosinüsü yaklaşık bir, sinüsü ise yaklaşık yarım açının kendisidir. Böylece delta q, bir ve yarım delta teta olur. Dördüncü sayı kendiliğinden belirlenir; geriye bağımsız üç sayı kalır. Aynı yaklaşım döndürme matrisi için de geçerlidir: birim matris artı delta tetanın çapraz çarpım matrisi. ESKF'nin bütün Jacobianları bu basit formdan çıkar. Hata hep küçük tutulduğu için bu yaklaşımlar her adımda doğru kalır."},{"title":"Tahmin Adımı","startSeconds":339.1384374999999,"narration":"Filtrenin ilk adımı tahmindir ve iki ayrı iş yapar. Önce nominal durumu, ataletsel ölçüm biriminden gelen ivme ve açısal hız ölçümleriyle ileri taşırız. Konum, hız ve ivmeyle ilerler. İvmeölçerin okuduğu değerden sapmayı çıkarır, dünya eksenlerine döndürür ve yerçekimini ekleriz. Yönelim için jiroskop okumasından sapmayı çıkarır, kalan küçük dönüşü kuaterniyona çarparız. Sapmalar ise bu adımda sabit kalır. Dikkat edin: bu denklemlerde ne gürültü var ne de kovaryans. Nominal durum en iyi tahminimizi, yüksek hızda ve doğrusal olmayan haliyle taşır. Şimdi hata durumuna geçelim. Az önce bir düzeltme yapılıp sıfırlandığı için kestirilen hata tam sıfırdır: sarı nokta. Sıfırı doğrusal bir matrisle ilerletirseniz yine sıfır elde edersiniz. Yani tahminde hata kestirimi hiç değişmez; değişen tek şey ondan ne kadar emin olduğumuzdur. Bu matris, F x, hata dinamiğinin Jacobianıdır ve küçük açı yaklaşımı sayesinde basit bloklardan oluşur. Örneğin açı hatası döndürülür ve jiroskop sapmasının hatası kadar kayar. Kovaryans ise her adımda büyür: eski belirsizlik F x ile taşınır, üstüne süreç gürültüsü Q eklenir. Kırmızı disk bu belirsizliği gösteriyor. Ölçüm gelmedikçe her tahmin adımı diski biraz daha şişirir. Nominal sapmaya devam eder ve biz ondan giderek daha az emin oluruz. Tahminin özeti şu: nominal ilerler, hata kestirimi sıfırda kalır, kovaryans büyür. Bu büyümeyi durduracak tek şey ölçümdür."},{"title":"Güncelleme, Enjeksiyon ve Sıfırlama","startSeconds":439.4260208333332,"narration":"Tahmin bitti; elimizde ilerlemiş bir nominal durum ve şişmiş bir belirsizlik var. Çember üzerindeki sarı nokta nominal yönelim, kırmızı disk de onun etrafındaki belirsizliktir. Şimdi bir ölçüm geliyor, örneğin bir manyetometreden ya da konum alıcısından. Ölçüm, gerçek durumun bir fonksiyonu artı gürültüdür. Filtre hata durumunu kestirdiği için Jacobianı hata durumuna göre almalıyız. Zincir kuralı bunu iki parçaya böler: ölçümün gerçek duruma, gerçek durumun da hataya göre türevi. Bu ikinci parça neredeyse birim matristir; yalnızca yönelim bloğu küçük açı formundan gelen basit bir matristir. Kazanç K ise bildiğimiz formüldür. Kazancı ölçüm farkıyla çarptığımızda hata durumunun kestirimini elde ederiz. Ortalaması artık sıfır değildir: yeşil ok, teğet doğrudaki düzeltmedir. Aynı anda belirsizlik küçülür, çünkü ölçüm bize bilgi verdi. Kırmızı disk daralır. Ama dikkat edin: düzeltme şu an hâlâ teğet doğruda duruyor. Nominal durum henüz değişmedi. Üçüncü adım enjeksiyondur: kestirilen hatayı nominal duruma katarız. Konum ve hız için bu basit bir toplamadır. Yönelim için ise teğetteki düzeltmeyi kuaterniyon çarpımıyla çembere sararız. Sarı nokta yay boyunca kayar ve yine tam çemberin üzerinde durur. Son adım sıfırlamadır. Hata artık nominalin içine aktarıldığı için hata kestirimi yeniden sıfır olur. Kovaryans da yeni yönelimin teğet uzayına taşınır. Bu dönüşüm G, küçük düzeltmelerde birim matrise çok yakındır; çoğu uygulamada doğrudan birim alınır. Ve döngü baştan başlar: yeni ölçümler gelene kadar tahmin, ölçüm geldiğinde güncelleme, ardından enjeksiyon ve sıfırlama."},{"title":"ESKF Döngüsü ve EKF ile Karşılaştırma","startSeconds":549.7438124999999,"narration":"Bütün parçaları bir araya koyalım. ESKF her döngüde dört adım atar. Tahmin adımında nominal ilerler ve kovaryans büyür. Güncelleme adımında ölçüm, hata kestirimini ve kovaryansı düzeltir. Enjeksiyon, kestirilen hatayı nominale aktarır. Sıfırlama ise hatayı yeniden sıfıra çeker ve döngü kapanır. Son olarak standart EKF ile farkları tek bir tabloda toplayalım. Yönelimi EKF dört sayılı kuaterniyonla doğrudan kestirir; ESKF ise yalnızca üç sayılık delta tetayı kestirir. Bu yüzden EKF'nin yönelim kovaryansı dörde dört ve tekildir; ESKF'ninki üçe üç ve düzgündür. EKF büyük ve hızla değişen bir durum etrafında doğrusallaştırır. ESKF ise her zaman sıfıra yakın bir hata etrafında, yani yaklaşımların en doğru olduğu yerde. Ve birim norm kısıtı: EKF onu sonradan zorla düzeltir, ESKF'de ise çarpımsal enjeksiyon onu kendiliğinden korur. Hata durumu Kalman filtresi büyük işi nominale, belirsizliği küçük hataya bırakır. Bu basit ayrım, onu insansız hava araçlarından uzay araçlarına kadar standart bir yöntem yapar."}]}}
