Bu yüzden aşağıdaki uzun cevabım, tahtanın hızlanacağını varsayar ve bu süre zarfında kısa bir süre içinde saha, yuvarlanma ve sapmayı ölçebilmeniz gerekir. Tahta tüm ölçümler için sabit olacaksa, Mahendra Gunawardena'nın cevabı sizin için mükemmel bir şekilde çalışacaktır. Bu, segway veya model düzlem veya çok rotorlu bir cihaza girerse veya hareket eden bir şey varsa, okumaya devam etmek isteyebilirsiniz. Bu yazı, sensör füzyonu adı verilen bir yöntemle her üç sensörün de nasıl kullanılacağı ile ilgilidir. Sensör füzyonu, her sensörün güçlü yönlerini almanızı ve her sensör zayıflığının etkilerini en aza indirmenizi sağlar.
Sensör özellikleri ve arka planı
İlk olarak, bir ivmeölçerin sadece yerçekimi kuvvetini değil, kendisine uygulanan tüm kuvvetleri ölçtüğünü anlayın. Dolayısıyla, ivmeölçerin herhangi bir titreşim olmadan sabit bir pozisyonda olduğu mükemmel bir dünyada, Mahendra Gunawardena'nın cevabının gösterdiği gibi bazı temel trigonometri kullanarak hangi yolun yükseldiğini mükemmel bir şekilde belirleyebilirsiniz. Ancak bir ivmeölçer tüm kuvvetleri toplayacağından, titreşimler gürültüye neden olur. Ayrıca, pano hızlanıyorsa, ivmeölçerin bildirdiği kuvvet sadece yerçekimi kuvveti değil, aynı zamanda hızlanmanıza neden olan kuvvet olduğu için sadece basit trigonometri kullanamazsınız.
Bir manyetometre, bir ivmeölçerden daha basittir. Hareket bununla ilgili sorunlara neden olmaz, ancak demir ve diğer mıknatıslar gibi şeyler çıktınızı etkiler. Eğer bu parazite neden olan kaynaklar sabit ise, bununla başa çıkmak zor değildir, ancak bu kaynaklar sabit değilse, kaldırılması sorunlu olan tonlarca gürültü yaratacaktır.
Üç sensörden, jiroskop en güvenilir olanıdır ve normal olarak dönme hızını ölçmede çok iyidir. Demir kaynakları ve ivme gibi şeylerden etkilenmez, temel olarak dönme hızını ölçme yetenekleri üzerinde hiçbir etkisi yoktur. Cihazın dönme hızını bildirmek için çok iyi bir iş çıkarırlar, ancak mutlak bir açı aradığınızdan, pozisyon almak için hızı entegre etmeniz gerekir. Bunu yapmak, son ölçüm hatasını yeni ölçümlerin hatasına ekleyecektir, çünkü entegrasyon temel olarak bir aralıktaki değerlerin toplamıdır, bir ölçüm hatası saniyede sadece 0.01 derece kapalı olsa bile, 100 ölçümde, konumunuz 1 derece kapalı olabilir, 1000 ölçüm ile 10 derece kapalı olabilir. Saniyede yüzlerce ölçüm yapıyorsanız, bunun sorunlara neden olduğunu görebilirsiniz. Buna genellikle jiroskop kayması denir.
Sensör füzyonu
Artık tüm bu sensörlerin birlikte çalışmasının güzelliği, jiroskopun sapmasını iptal etmek için ivmeölçer ve manyetometreden gelen bilgileri kullanabilmenizdir. Bu, ölümcül jiroskop sapması olmadan jiroskopun doğruluğunu ve hızını vermenizi sağlar.
Bu üç sensörden gelen verileri birleştirmek birden fazla şekilde yapılabilir, tamamlayıcı bir filtre kullanmaktan bahsedeceğim çünkü daha basit bir kalman filtresi ve kalman filtreleri gömülü sistemlerde çok daha fazla kaynak tüketecek. Çoğu zaman tamamlayıcı bir filtre yeterince iyidir, uygulanması daha kolaydır (önceden oluşturulmuş bir kitaplık kullanmadığınız varsayılarak) ve verileri daha hızlı işlemenizi sağlar.
Şimdi sürece. Yapmanız gereken ilk adımlar, açısal hızı açısal konuma dönüştürmek için jiroskop çıktısını entegre etmektir. Ayrıca, çıkıştaki gürültü ile başa çıkmak için ivmeölçer ve manyetometreye düşük geçiş filtresi uygulamanız gerekecektir. Aşağıda gösterilene benzer basit bir FIR filtresi burada çalışır. Bazı trigonometri ile ivmeölçerle perdeyi ve ruloyu ve manyetometre ile sapmayı bulabilirsiniz.
filteredData = (1-weight)*filteredData + weight*newData
Ağırlık, ne kadar gürültüyle uğraşmanız gerektiğine bağlı olarak ayarlanabilen bir sabittir, gürültü ne kadar yüksek olursa ağırlık değeri o kadar küçük olur. Şimdi sensörlerden gelen verileri birleştirmek aşağıdaki kod satırı ile yapılabilir.
fusedData = (1-weight)*gyroData + weight*accelMagData
Verilerin zift, yuvarlanma ve sapma vektörü olduğuna dikkat edilmelidir. İsterseniz diziler yerine bunu yapmak için üç değişken kullanabilirsiniz. Bu hesaplama için cayro hatve, yuvarlanma ve sapma dereceleri olarak bir konum sağlar, manyetometre sapma için bir açı sağlarken ivmeölçer hatve ve yuvarlanma için kendi sayılarını sağlar.
Hala daha fazla bilgi istiyorsanız google "tamamlayıcı filtreli sensör füzyonu" yapabilirsiniz Bu konuda birçok makale var.