MPU6050 Açı dönüşümleri

Başlatan baran123, 23 Şubat 2016, 21:12:10

baran123

Merhaba iyi akşamlar,
Data okuma kısmını hallettim.Şimdi bu değerleri Euler açılarına nasıl çevireceğimi tam olarak anlamadım.Bununla ilgili bir kaç sorum var.

1) İlk önce Psi, Theta, Phi değerlerini mi bulamam gerekiyor ?
2) Kalman filtresi nasıl uygulanır ?
3) Bu değerler MCU damı yoksa bilgisayara gönderilip hesaplansa mı daha stabil olur ?

Çok kısa bir özet geçebilirseniz çok makbule geçer:)

MSP430 kullanıyorum 16MHz ileride F4 ile de yapabilirim.

Kolay gelsin.

Cemre.

http://web.mit.edu/~jinstone/Public/filter.pdf

Şuna bir bak Baran.

http://hobbylogs.me.pn/?p=47

Bir de şuna. Beni de gelişmelerden haberdar eder misin?
Sistemin mekaniğini halledince ben de bu konuya yoğunlaşacağım. Bitime projemin büyük kısmını oluşturuyor kendileri.

Kolay gelsin, iyi günler.

Gökhan BEKEN

mpu6050'de ham veri okumana gerek yok, kendisi gerekli filtreleri yapıp, gyro ve accelerometer'i birbiri ile formüle edip quaternion cinsinden sonuç veriyor.
Quaternion verisini rotary matrix'e ve YPR'ye (yaw pich roll) çevirmek mümkün.
stm32f103 kullanılarak yapılmışı var f4'e çevirebilirsin: https://github.com/Harinadha/STM32_MPU9150eMPL
Özel mesaj okumuyorum, lütfen göndermeyin.

Bertan

#3
    Bende bir süredir MPU6050 ve HMC5883 ile euler açılarını hesaplamaya ve bu açıları 3D şeklinde görselleştirmeye çalışıyorum. En son aşağıdaki gibi form ekranında değerleri inceliyorum. Hâlâ nedenini anlayamadığım birkaç sorun var.



Aşağıdaki örneği incelemenizi tavsiye ederim.

http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/

Cemre.

Alıntı yapılan: bertan88 - 24 Şubat 2016, 08:56:44
    Bende bir süredir MPU6050 ve HMC5883 ile euler açılarını hesaplamaya ve bu açıları 3D şeklinde görselleştirmeye çalışıyorum. En son aşağıdaki gibi form ekranında değerleri inceliyorum. Hâlâ nedenini anlayamadığım birkaç sorun var.

(Resim gizlendi görmek için tıklayın.)

Aşağıdaki örneği incelemenizi tavsiye ederim.

http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/
Sorun açı hesabında mı hocam? Yoksa görselleştirmede mi?

Bertan

Sorun açı hesabında. Yaw değeri 60 derecenin üstüne veya  -60 derecenin altına düştüğünde roll ve pitch değerleri sapıtıyor. Yukarıda algoritmayı incelediğimde açılar , açısal hızın integrali kullanılarak hesaplanıyor. Benim istediğim ivme ve pusula sensörü ile açıları belirlemek , gyro sensörü ile de ölçümleri filtrelemek. Güzel bir sonuca ulaşırsam burada paylaşırım.

Başka bir kaynak daha :

https://github.com/AIS-Bonn/attitude_estimator

baran123

Kendi içinde bu işlemi yaptığını bilmiyordum.Yanıtlar için teşekkürler.

Cemre.

@Gökhan BEKEN
Hocam kendi içinde yapıyor dediğiniz DMP mi oluyor?
FIFO ile veri almakla direk register'lardan veri almak arasındaki fark nedir?

Bu konuda bizi aydınlatabilir misiniz?

Gökhan BEKEN

Evet dmp çalışıyor. Önce firmware gibi birşey yükleniyor. Sonra gizli registerlar aktif oluyor. Verdiğim linkte yapılmış proje var.
Özel mesaj okumuyorum, lütfen göndermeyin.

Cemre.

#9
Alıntı yapılan: Gökhan BEKEN - 26 Şubat 2016, 17:13:51
Evet dmp çalışıyor. Önce firmware gibi birşey yükleniyor. Sonra gizli registerlar aktif oluyor. Verdiğim linkte yapılmış proje var.

Hocam, kodların içerisinde

"SECTION COPIED FROM dmpDefaultMPU6050.c" gibi bir comment satırı mevcut. Ben verdiğiniz linkten sonra InvenSense firmasının DMP için paylaştığı notlara ulaştım. Burada bahsettiğiniz Firmware'in kodları mevcut. Bank'lar halinde bir dizi daha doğrusu. Ancak bu kodlar MPU6050 için de hiç bir değişiklik yapılmadan kullanılabiliyor mu? Hata yapıp sensörü bozmak istemiyorum açıkçası.

Bir de şöyle bir şey var, TODO demiş, peki gerçekten yapmış mı yoksa hala bu ayarların yapılması gerekiyor mu?
    /* TODO: All of these settings can probably be integrated into the default
     * DMP image.
     */


mesaj birleştirme:: 27 Şubat 2016, 23:37:31

@Gökhan BEKEN

Hocam içinden çıkılmaz bir hal aldı bu iş benim için. Saatlerdir aynı kodlara bakıp duruyorum, şuana kadar anlayabildiğim tek şey 3kB'lık firmware verisini sensör awake durumdayken yazmak (bank select vs de yapılıyor galiba) daha sonra FIFO Buffer'ı 42Byte bir seferde okumak ve bunu 4 adet 32bit'lik veriler halinde matrise yazmak gerektiği.

Doğru yolda mıyım?

Gökhan BEKEN

#10
Firmware yüklemekten çekinmeyin, zaten kalıcı olmuyor elektrik kesildiği an siliniyor. Her seferinde yeniden yüklenmesi gerekiyor. Projede çok kafa yoran bir şey yok. Zaten direkt çalışan bir proje. Stm32f103 için yapılmış. Bu arada "InvenSense firmasının DMP için paylaştığı notlara" ulaşamamanız lazım. Çünkü paylaşmıyor para ile satıyorlar.
Özel mesaj okumuyorum, lütfen göndermeyin.

Cemre.

Hocam bir kaç saat önce STM32F4 Discovery ve MPU6050 kullanarak DMP uygulaması yapmayı başardım. Kafamı kurcalayan kısım InvenSense'in yayınladığı DMP kodlarının binlerce satır tutması ve benim projemi bu kadar karmaşıklaştırmak istemememden dolayı oluştu. Ama nette bulduğum farklı bir örnekle yine ayni metotla HAL fonksiyonlarina entegre ederek kullanmayı becerdim.
Bilgilendirme için tekrar teşekkürler.

Toparladıktan sonra burada da paylaşmaya çalışırım.

Iyi akşamlar.

görkem

@Cemre. Mpu6050 dmp notlarını paylaşabilirmisin bende dmp yi çalıştırmaya çalışıyorum pic ile

Cemre.

@görkem, aşağıdaki linki bir inceleyin. Benim de paylaşacağım aşağı yukarı böyle bir şey olabilir. Ben de sistemi anlamak üzerine yoğunlaşıyorum. Onun dışında pek fazla bilgi yok ancak bana rehberlik eden döküman aşağıdakidir.

http://sercanerat.blogspot.com.tr/2015/10/stm32f4-discovery-mpu6050-dmp.html