Gyroscope ile ilk uygulama

Başlatan barisertekin, 01 Ağustos 2011, 23:06:44

barisertekin

http://www.barissamanci.net/Makale/26/accelerometer-gyroscope-imu-nedir/
Yukarıda ki link'ten okuyordum bende aynı anda siz de önermişsiniz :)
Gerçekten çok faydalı oldu. %100 demiyim ama %80 oturmuştur her şey.

Jiroskop ve akselerometre'nin çıkışlarından aldığımız değerleri işleyerek açı değerlerini bulmayı linkte detaylı anlatmış.
Asıl soru neden birleştirerek kullandığımızı da kısaca anlatmış.


  • Gyro ve accelerometer bias drift adı verilen bir kayma yaparlar ve bundan dolayı hassas açı ölçümünde tek başlarına kullanılamazlar. Ayrıca accelerometerlar kuvvete karşı çok duyarlı olduğundan en ufak titreşimlerde çok yüksek gürültüler oluşturmaktadırlar.Gyroların bu kuvvetlerden etkilenmediğini söylemiştik. Aşağıdaki şekilde görüldüğü gibi gyrolar ivmeölçer çıkışlarını filitreleyerek daha doğru bir ölçüm yapmamızı sağlarlar.

Peki, direk 6 DOF bir modül alırsak. Bize nasıl bir çıkış veriyor?
Accelerometer'dan aldığımız sonuçların gyro ile filtrelenmiş halini mi vermekte acaba? Yoksa yine biz mi işleyerek filtreliyoruz?

Tagli

#16
barisertekin, söz konusu hesaplar yapılmadığı sürece jiroskop ve ivme ölçer okumanın, potansiyometre okumaktan pek de farklı olmadığını görecek ve bence hayal kırıklığına uğrayacaksın. Ama bu durum moralini bozmasın, internette örnek kod bulmak mümkün oluyor. Biraz çabalayarak bulduğun kodları kendi amaçlarına uygun şekilde uyarlayabilirsin.

Not: Bu ilk paragrafı son mesajını okumadan önce yazmıştım. Ben yazarken mesaj atmışsın.

Jiroskop ve ivme ölçerleri ayrı ayrı kullanmak istediğinden bahsetmişsin. Zaten çoğu ucuz IMU, kaç eksenli ise sana o kadar bağımsız çıkış verir, yani bunları ayrı ayrı görürsün. Bunları istediğin gibi kullanmak senin elinde. Anlatmaya çalıştığım şey, elde edeceğin diyelim ki 6 kanal ham sayısal veriyi senin işlemen gerektiğidir.

Bu arada, bildiğim kadarıyla birkaç bin dolarlık IMU'lar da var. Bunlar tüm hesaplamaları kendi içlerinde yapıp sana doğrudan açı bilgisini verebiliyorlar.
Gökçe Tağlıoğlu

barisertekin

Alıntı yapılan: Tagli - 03 Ağustos 2011, 01:19:48
Zaten çoğu ucuz IMU, kaç eksenli ise sana o kadar bağımsız çıkış verir, yani bunları ayrı ayrı görürsün. Bunları istediğin gibi kullanmak senin elinde. Anlatmaya çalıştığım şey, elde edeceğin diyelim ki 6 kanal ham sayısal veriyi senin işlemen gerektiğidir.

Bu arada, bildiğim kadarıyla birkaç bin dolarlık IMU'lar da var. Bunlar tüm hesaplamaları kendi içlerinde yapıp sana doğrudan açı bilgisini verebiliyorlar.

Cevabınızın ikinci bölümü soruma tam cevap olmuş.

iyildirim

#18
IMU nun ne verdiği alınacak modüle bağlı..

pololu da linkini verdiğiniz sayfada en üstte IMU, AHRS gibi modüller var. Onları bir inceleyin. Örneğin Sayfadaki ilk linkte verilen modül, ARM işlemciyle entegre, 1000 hz lik update rate ile koordinatları ve açıları veriyor sanırım. Çok incelemedim ama bir çeşit dead-reckoning modül gibi. Hemen yanındaki de pitch-roll-yaw açılarını verebiliyormuş.

Genel de 6DOF IMU diye satılanlar bir işlemciyle entegre edilmiş. acc. gyro, compass gibi sensörleri içeriyor. Bu tip modüller üzerine geliştirilmiş open-source projeler de oluyor. IMU gibi birşey alacaksanız bu tip bir uygulama desteği varmı araştırın.
İşinizi kolaylaştırır.
Mikroişlemci deneyiminiz nedir bilmiyorum ama, bu tip bir işde ADC, SPI, I2C, PWM, IC, UART gibi çeşitli modüllerin kullanılması gerekiyor. İşlemci seçerken bu modülleri hardware olarak bulunduran işlemcileri seçerseniz performans vs. gibi sorunlarınız daha az olur. Örnek uygulamada ilerlemenizi kolaylaştırır.

Gyro ve acc. birlikte kullanılmasının nedeni birbirlerini tamamlamaları.
Sadece acc. kullanılsaydı bize yer düzlemi ile olan açımızı sağlıklı olarak vermezdi. Çünki bunların kullanıldığı araçlar sabit değiller. Havada, denizde veya karada çalışıyorlar. Dolayısıyla hareketten dolayı oluşan ivmelenmelerden dolayı statik konumda olamadıklarından açıyı daha doğrusu eksenlerdeki ivmeyi hatalı-(hareketten dolayı oluşan ivme ile beraber) verirler.
Öte yandan sadece ivme ölçmeye, bu ivmeden hız ve hızdan da mesafe-konum belirlemeye kalksak her zaman yer düzlemine paralel olmadığından yerçekimi ivmesinden dolayı ivmeleri yine hatalı ölçeriz. Çok özel durumda, eğer sadece bir eksende yer düzlemine olan paralellik bozuk, diğer eksende paralellik sağlanıyorsa açı ölçmek mümkün. Ancak bu şartı da havada sağlamak mümkün değil.

Aynı şekilde gyro da sadece anlık açısal dönme miktarını vermekte. Sadece gyro ile de sağa yada sola ne kadar hareket ettiğimizi anlayamayız.

Birlikte kullanılırken gyro ile anlık dönme miktarlarına göre koordinat dönüşümleri yapılıp, açısal konumlar bulunup, bu açıda oluşacak statik kuvvetler hesaplanıp, acc. verileri bu şekilde değerlendilir. Bu şekilde hem açısal konum hemde saf dinamik kuvvetler elde edilmiş olur. 

Ancak bu elde edilen veriler de çok sağlam değillerdir. Ticari, hatta askeri AHRS ler bile bir saat içerisinde şartlarada bağlı olarak bir kaç yüz metre ile onlarca kilometre hata yaparlar.  Bu yüzden eğer dead-reckoning uygulaması yapılacaksa bu bilgiler belli aralıklarla GPS ile sürekli güncellenir.   Yada uygulamaya bağlı olarak örneğin quadro da 1 saniyelik bir süre ile konum-açı bilginiz nispeten güvenilirdir. İşlemcimiz bizim yapabileceğimizden çok daha hızlı bir şekilde konumu düzeltmeye çalışır. Başarısıda tabii işlemcinin elindeki referans kadar olacaktır. Sonrasında kullanıcının kumanda ile müdahalesi ile konum düzeltmesi yapılır.

Hatanın zaman içerisinde katlanarak artmasının en büyük nedeni gyro ve acc. lerdeki bias hatasıdır. Eğer başlangıçda referans veya sıfır noktasını tam olarak tespit edemez veya sonrasında bias hatasını elimine edemezseniz hata saniyeler içerisinde katlanarak büyür. Bu özellikle acc. lerde önemlidir. Neden derseniz acc. ivme ölçer. Belli bir süre belli bir ivmenin etkisinde kalırsak bir hız elde etmemiz gerekir. Sonrasında acc. den sürekli sıfır ivme okusak bile artık bir hızımız var ve ters bir ivme olmadıkça bu hız var olacak demektir. Bu hız ile belli bir süre devam edersek konum değiştirmemiz gerekir. Eğer başta hatalı bir ivme okuduk isek konumumuz sürekli olarak artan bir hata ile hesaplanacak demektir.  Çok küçük %1 lik bir acc bias hatası bile saniyeleler içerisinde onlarca metre hatalı konum hesaplamaya neden olabilir.
Okuma hatalarını, gürültüyü elimine etmek içinde genellikle kalman, extended kalman gibi filtreler kullanılır.  Kalman kullanımında da filtreyi tek tek eksenlere adeta low-pass gibi uygulamak mümkün olmakla birlikte, fonksiyonun, dönüşümlerin tamamına uygulamakta mümkün, ve sistemin tamamına uygulamak şeklinde tercih edilmeli.

Konunun teorisi ve örnek uygulamalar, hesaplar için anahtar kelime DCM(direction cosine matrix).  starlino, gentlenav gibi sitelerde hem teori hemde örnek uygulamalar bulabilirsiniz.  RC forumlar da da bayağı kaynak var. 
DCM dışında rotasyon matrisi kullanılmadan yapılan koordinat dönüşümleri de var. sourgeforce, codes.google  gibi sitelere bakabilirsiniz. Koordinat sistemlerini, dönüşümleri vs. incelemelisiniz. Euler, quaternion gibi anahtar kelimeler ile google da arayın veya  wiki gibi sitelere bir bakın.


ahmetgokce01

merhaba arkadaşlar anolog gyro ile yapılmış css c kod örneği var mı elinizde yada gyro uygulaması yapan arkadaşlar hesaplama konusunda yardımcı olabilirmi?

gambit1244

madem ogreniceksiniz dijital oğrenin derim
analogda zaten ogrenilcek bişey yok kalman dışında

dijital yolu seçerseniz birsürü özellik gelir yanında
[email]tufan_ozbek@hotmail.com[/email] Yesterday is history. Tomorrow is a mystery. Today is a gift aslında bütün mesele bu.

Asof544

Çok olmus ama sorayım arkadaş projeyi yaptımı?

barisertekin

2011 de sormuşum soruyu. Zaman nasıl geçiyor.

Sahibinden 2.el bir 9 DOF  bir imu almıştım o zaman. 3DS Max'te script ile serial port okuyup 3d modelin rotasyonunu değiştirme falan yapmıştım.

Konum değişimi için ivmeden pozisyon bulma olaylarıyla uğraşmıştım. Integral falan. Sonra iş güç öyle yarım kaldı.

Ama kafamdaki tüm soruların cevabını almıştım.

Asof544

Merhaba,biraz ayrıntıları ile bahsedebilir misin? bende yapmayı istiyorum açıkçası.Çok fazla araştırmaya vakit bulamadım neyse yazacaklarınızı kontrol kalemi.com a makale olarak sunabilirim (yanlış anlaşılmasın),isminizle.Benim gibi  yapmak isteyen arkadaşlara ilham olur hemde yeni proje yapmak isteyenler bunu yapabilir.
Şimdiden vereceğiniz cevaplar için Teşekkür ederim.