Gyro driftinin çaresi?

Başlatan zengdai, 30 Temmuz 2015, 16:18:20

zengdai

Gyro driftini ortadan kaldırmanın yollarını merak ediyorumda. Şu an hala bu işin nasıl yapıldığını araştırıyorum aslında. Kafama takılan şu. Mesela 1 dakikada 10 derece hata birikiyor diyelim. Bunun  çözümü programsal olarak her bir dakikada mevcut gyro değerinden 10 sabit sayısını çıkarmak mı. Yada ivme sensörü ile birlikte kullanıldığında yaptığı drifte bakmadan o anki açısal hız değerini mi esas alacağız. Yada başka bir yöntemi varmı. Yardımlarınız için şimdidrn teşekkürler

Icarus

#1
Drift neden kaynaklanıyor ? Onu bilirsek bişiler söyleyebiliriz. Önce onu araştırmak gerekiyor.
Bu konuda pek çok teknik var. Ama mutlaka kaynağı bilinmeli.
Tabii eğer elinizdeki 3-5$'lık MEMS Gyro ise yapılabilecek pek birşey yok. Diğer gyro'ların karakteristikleri çok iyi biliniyor. Mesela cross-coupling gibi şeyler sadece ölçüm ve uygun modeller kullanılarak kompanse edilebiliyor.

Tagli

Sapma (yaw) açısındaki kaymalar manyetometre ile düzeltilebilir ancak. Yunuslama (pitch) ve yuvarlanma (roll) açılarını düzeltmek için ise ivmeölçer gerekiyor. Bu yüzdendir ki genelde satılan IMU'lar 9 eksen olarak anılır. Her biri 3'er eksenli jiroskop, ivmeölçer ve manyetometre içerir.

Kaymalar daha çok hesaplamalarda kullanılan sayısal entegrasyondan kaynaklanıyor.

Bu arada, çözüm kesinlikle sabit bir sayı çıkarmak değil. Doğru yaklaşım, uzun sürede ortalama olarak doğru değerleri gösteren ivmeölçer ve manyetometre verilerinden yola çıkarak, jiroskop kaynaklı anlık entegrasyon hatalarını düzeltmektir.
Gökçe Tağlıoğlu

ohacagatay

Sıkıntı angular positionı bulmak isterken velocityleri toplamaktan kaynaklanıyor ve error git gide artıyor. gyroların en kralı bile 0.1 derece de olsa drift eder yapılacak bir şey yok
aklıma direk olarak 3 şey geldi yapabileceğin:
1) belirli bir zaman aralığında gyroyu resetlersin böylece drift ortadan kalkar
2) Kullanım süresi boyounca olabildiğince sabit bir şekilde bırakırsın  sapmayı bulursun ve sample rate 'inde ne kadar sapma olduğunu bulup
bu sayıyı çıkarırsın. Fakat şunu unutmamak lazım sapmalar sabit değildir zaman geçtikçe artar ( integral )
3) Mesela bir sistemin durumunu bulmaya çalışıyorsan başka sensörler ile birlikte kullanabilirsin ( Sensor Fusion )

3. daha karmaşık, extended kalman filteresi gerekecek sistemin matematiksel modeli gerekicek, bunla mı uğraşıyorsun bilmiyorum bile. Bence 1 ve 2 birlikte yaparsan daha iyi sonuç alabilirsin  ( zamanı kısa tutup , reset atıp çıkarımlar yaparak )

Some people believe çiğ köfte is a matter of life and death, I am very disappointed with that attitude. I can assure you it is much, much more important than that

zengdai

Bu ivedi cevaplar için size minettarım. Eğer canınızı sıkmayacaksam şu sorularıma cevap verirseniz sevinirim.
1.
Alıntı Yap1) belirli bir zaman aralığında gyroyu resetlersin böylece drift ortadan kalkar
bu bahsettiğiniz durum sistem çalışınca mı. Yani deli gibi zangırdayan sistem üzerinde bu resetleme mümkünmü? Bildiğim kadarıyla gyro resetlendiği zaman hareketsiz ve düz bir halde olması gerekir.
2.
Alıntı YapSapma (yaw) açısındaki kaymalar manyetometre ile düzeltilebilir ancak. Yunuslama (pitch) ve yuvarlanma (roll) açılarını düzeltmek için ise ivmeölçer gerekiyor. Bu yüzdendir ki genelde satılan IMU'lar 9 eksen olarak anılır. Her biri 3'er eksenli jiroskop, ivmeölçer ve manyetometre içerir.

Kaymalar daha çok hesaplamalarda kullanılan sayısal entegrasyondan kaynaklanıyor.

Bu arada, çözüm kesinlikle sabit bir sayı çıkarmak değil. Doğru yaklaşım, uzun sürede ortalama olarak doğru değerleri gösteren ivmeölçer ve manyetometre verilerinden yola çıkarak, jiroskop kaynaklı anlık entegrasyon hatalarını düzeltmektir.
Gyronun  ivmeölçer ile kullanımında, gyronun o anki açısal hızındaki değişme mi alınır nekadar drift yaptığına bakmadan. Bilmem ordaki püf noktasını sorabildimmi? Yani orda biriken hata nasıl ortadan kalkar.

Tagli

Bu sistemlerde genelde kullanılan yöntem jiroskoptan gelen açısal hız verilerinin integralini almaktır (yani zamana göre toplamak). Hata zaten bu aşamada ortaya çıkıyor. Eğer sistem duran (daha doğrusu ivmelenmeyen) bir şey olsaydı, yani üzerinde yerçekimi ivmesinden başka bir ivme olmasaydı, yönelim bilgisi için jiroskop kullanmaz ve sadece ivmeölçer ile hatasız olarak açıları bulabilirdik. Galiba cep telefonlarında bu şekilde yapılıyor. Bu durumda ivmeölçerin, yerçekimi ivmesi vektörünü bize net bir şekilde gösterebildiğini söyleyebiliriz. Ancak bir araç (özellikle de bir hava aracı) arada sırada ivmelenir ve bu sırada gösterdiği ivme vektörü artık saf bir şekilde yerçekimi ivmesi değil bileşke bir ivmedir. Bu sebeple böyle bir araçta ivmeölçeri anlık yönelim tespiti için kullanamayız, aracın her ivmelenmesinde yanlış bir değer gösterir. Ancak yine de bir araç sürekli olarak ivmelenmeyeceği için ve de yerçekimi ivmesi sürekli olduğu için, ortalama olarak bakarsak ivmeölçer verileri yine yerçekimi ivmesini gösterir. Böylece bize anlık olarak güzel sonuç veren ama zaman içinde bozulan jiroskop verilerini düzeltebileceğimiz bir referansa kavuşmuş oluruz. İvmeölçerin sağladığı referans yerçekimi ivmesi, jiroskoptan gelen değerlere ufak bir oranda katılır ve hatanın büyümesini engeller. Ufak bir oranda katıldığı için, araç ivmelenmesi durumunda ölçüm sonuçları önemli boyutta bozulmaz. Tabi araç sürekli ivmeleniyor olsaydı (mesela Ay'a roket yolladınız ve 10 dakika boyunca sürekli olarak hızlanıyor) o zaman referans ivme vektörü de kayar ve işleri bozardı.

Bu yazdıklarımı bir dönem bu işle uğraşmış olduğum için biliyorum. DCM algoritması diye taslak bir metin dolaşıyordu ortalıkta bu iş için. Ondan yola çıkarak koda dökmüştüm ve iyi kötü çalışmıştı. Ancak yerçekimi ivmesi vektörü sapma açısı vektörü ile çakıştığı için ona bir faydası olmuyor. Manyetometre de bu yüzden gerekli. Bende maalesef yoktu ve sapma açısı kayıyordu epey.

Yukarıda bahsettiğim doküman. Arada benim de yanlış anladığım ve yanlış aktardığım yerleri olabilir, ben de işin ustası değilim.
Gökçe Tağlıoğlu

berat23

gyro ile ne bilgisi(roll, pitch, yaw vs.) istiyorsunuz ve konu hakkında bilgi düzeyiniz ne? ona göre çok derine de inebilirim.

birde nerde kullanacaksınız? atıyorum masada duran bir açıölçer gibi bişeyse kolayı var.

zengdai

Hala araştırma aşamasındayım. Akadamik çalışmalarımda kullanmak istiyorum. Bu bir ducted fanlı rc uçak olabilir.

berat23

drifti engellemenin yolu iyi bir gyro kullanmaktır, mekanik, fog, laser artık maddiyat ne elverirse.

şaka bir yana bu konu çok ihtimalli bir konu. mesela sadece öğrenmek için statik bir cihaz yapabilirisniz. bir yanda acc ile yerçekimi ivmesinden roll, pitch hesaplar, diğer yandan rate'lerin integralini alıp bunu complementary filter'dan geçirirseniz en basit sensor fusion yapılır. mantık temelde sürekli kayan bir ölçüm ile sabit hatalı bir ölçümü düzeltmek . bu konu açılınca genelde "kalman şart mirim" diyenler olabilir fakat şart değildir. ne olduğunu anlamadan ezbere iki satır kod yazmaktansa atan2(accx,accz) yazsan evladır. zaten kalman nedir bilen, estimation nedir bilen soru sormaz. o yüzden kalman ile kafa karıştırmak yerine işin fiziğine odaklansanız daha mantıklı.

mesela uçak demişsiniz, uçak dönerken roll yapar ve yanal ivmeler dururkenki gibi olmaz, hatta belli bir açı ve hızda coordinated turn yaparsanız yanal ivmeler sıfır olur. bu durumda atan2(accx,accz) olmaz, ivmede yerçekimi komponentini bulmanız lazım. o iş için hız lazım. hızı ivmeden bulursanız bias olur, düzeltmek lazım. gps hızı olursa fena olmaz düzeltici olarak. derken 20 state'li bir denklem çıkar. ya da madem uçak, hava hızı kullanırsınız düzeltmede. mesela kara aracı ise 3 eksen hızdan düzeltici kaynak olabilir zira kara araçları burnu nereyi gösterirse oraya gider.

mesela yaw için neredeyse gps şart. manyetometre sıkıntılıdır, iyi kalibre etmek gerekir, iyi yerleşim gerekir vs. yani özetle birçok kaynak ve model var, temelde masada acc-gyro ile başlayın derim.

Icarus

Gyro'yu resetlemek = Uzaydaki yönelimi kaybetmek demektir.
Öyle gyro'lar var ki kayması "ud/gün" ile ölçülüyor :D Yani kaliteli baya şeyler var.
Fakat bu kadar stabil bir gyro kullandığınızda da bu sefer dünyanın hareketleri gyro'dan görebiliyorsunuz. Bunları kompanse etmek gerekiyor.
Zevkli ve ilginç

Gökhan BEKEN

@berat23 ve @Icarus  hocam hangi gyro modelleri kalitelidir? Marka model de verirseniz istifade ederiz.
Bu konularda bilgilisiniz, bir kaç yazı yazarsanız uygulamaya yönelik, faydanız dokunur.
Özel mesaj okumuyorum, lütfen göndermeyin.

Icarus

#11
DTG (Dynamically Tuned Gyro) ve Fiber ama marka vermeyeyim. ilişki kurulmasını istemem.
Uygulaması ise hepsinde aynı
1) Gyro'nun denklemini çıkart(Ya bunu yapacaksınız yada üretici yapmıştır zaten)
2) -Varsa- Acc'nin denklemini çıkart
3) Hareket denkelemlerini çıkart
4) Harita düzlemine bunları geçir (3-4 bir arada da yapılabilir)
5) Artık ne yapıyorsan yap: Bu kısım tamamen size bağlı, artık navigasyon sistemimi yaparsınız, ucakmı uçurursunuz ona göre kontrol sistemini tasarlanmasıdır.

Fakat illa böyle yapılacak diye birşey yok.
Mesela elinizda çoooook hızlı giden birşey var. GPS ile yeterli hızda veri toplayamıyorsunuz. O halde 2 GPS noktası arasında dandik bir IMU ile kontrol yapabilirsiniz. IMU'nun çalışacağı süre ne kadar ? 2sn.
Yada ben magnetometreleri sevmiyorum çünkü hem dünyanın alanı döndüğü için her sene haritaları güncellemek gerekiyor hemde yanından gemi geçse etkileniyor.

Önce Problemi belirleyin sonra bana ne lazım ? hangi çözünürlükte lazım ? bunları belirledikten sonra gerisi gelir.

engerex

Invensense MPU 9xxx serisinde Digital Motion Processor™ var.. Bunlar bu işi çözüyor mu?

LukeSkywalker

Alıntı yapılan: engerex - 30 Temmuz 2015, 22:01:18
Invensense MPU 9xxx serisinde Digital Motion Processor™ var.. Bunlar bu işi çözüyor mu?
DMP'ler büyük oranda hataları azaltıyor ve doğrudan açı bilgisi üretiyor. Fakat DMP hakkında döküman bulmak imkansız gibi bir şey.

ohacagatay

#14
Alıntı yapılan: Icarus - 30 Temmuz 2015, 21:43:14
DTG (Dynamically Tuned Gyro) ve Fiber ama marka vermeyeyim. ilişki kurulmasını istemem.
Uygulaması ise hepsinde aynı
1) Gyro'nun denklemini çıkart(Ya bunu yapacaksınız yada üretici yapmıştır zaten)
2) -Varsa- Acc'nin denklemini çıkart
3) Hareket denkelemlerini çıkart
4) Harita düzlemine bunları geçir (3-4 bir arada da yapılabilir)
5) Artık ne yapıyorsan yap: Bu kısım tamamen size bağlı, artık navigasyon sistemimi yaparsınız, ucakmı uçurursunuz ona göre kontrol sistemini tasarlanmasıdır.

Fakat illa böyle yapılacak diye birşey yok.
Mesela elinizda çoooook hızlı giden birşey var. GPS ile yeterli hızda veri toplayamıyorsunuz. O halde 2 GPS noktası arasında dandik bir IMU ile kontrol yapabilirsiniz. IMU'nun çalışacağı süre ne kadar ? 2sn.
Yada ben magnetometreleri sevmiyorum çünkü hem dünyanın alanı döndüğü için her sene haritaları güncellemek gerekiyor hemde yanından gemi geçse etkileniyor.

Önce Problemi belirleyin sonra bana ne lazım ? hangi çözünürlükte lazım ? bunları belirledikten sonra gerisi gelir.

tabi cihaz bir indoor bir mobil robot değilse dediğiniz doğru GPS'e güvenilir fakat eğer indoor bir aletse ozaman imu dışında diğer sensörlere de gerek olacaktır
mesela basit olarak bir mobil robot encoder değerlerini ve imu değerini ( yaw ) birleştirirek daha düzgün bir odometry değeri sahibi olabilir fakat yine de kayacaktır veriler
bunu da bir laser kullanarak kendini lokalize ederek çözebilir. Ne yazikki para verilip alınabilecek değerdeki IMU sistemleri 15-20 dakika arasından fazla kullanılamıyor

@zengdai hocam, anladığım kadarıyla başlangıç seviyesindesin gyroların eksen driftleri acc metre ve mag. metreyle ile düzeltirilir. roll ve pitch için acc kullanılır yaw ( heading için ) ise magmetre kullanılır. Fakat Indoorda mag. metre kullanmanın sıkıntıları olacaktır dışarda ise GPS ile heading düzeltiebilir  @Icarus hocanın dediği gibi
Some people believe çiğ köfte is a matter of life and death, I am very disappointed with that attitude. I can assure you it is much, much more important than that