IMU'nun bir parçası olan AK8975 manyetometresi üzerinde çalışıyorum. Bu benim için çok zor görünüyor. Bu çip, dünyanın herhangi bir yerinde veya yakınındaki herhangi bir yerde manyetik alanı tanımlayan bir çıktı olarak 3B vektör verir.
İki tür başlık hesaplama algoritması denedim: Biri basit arctan(-y/x)
ve diğeri eğim (adım) ve banka (rulo) iptal edilen matematik aşağıda belirtildiği gibi. Hem eğim hem de bankalar yanlış çıktı verir.
İki algosun herhangi birini kullanarak zemin planını yatay olarak tutarak döndürüldüğünde yeryüzünden doğru pozisyonu alabilirim (basit açık çalışma kaynaklarını kullanarak).
Yumuşak ve sert demir hataları için kalibrasyon yapmayı denedim. 3D olarak çizebilir ve mükemmel bir 3D küre gösterir. Hala eğim veya eğim üzerinde çalışmaz.
Herhangi bir işaretçi yardımcı olacaktır.
Kod ve uygulamaları aşağıdaki gibidir:
void Compass_Heading()
{
double MAG_X;
double MAG_Y;
double cos_roll;
double sin_roll;
double cos_pitch;
double sin_pitch;
cos_roll = cos(roll);
sin_roll = sin(roll);
cos_pitch = cos(pitch);
sin_pitch = sin(pitch);
//// Tilt compensated Magnetic filed X:
MAG_X = magnetom_x*cos_pitch + magnetom_y*sin_roll*sin_pitch + magnetom_z*cos_roll*sin_pitch;
//// Tilt compensated Magnetic filed Y:
MAG_Y = magnetom_y*cos_roll-magnetom_z*sin_roll;
//// Magnetic Heading
MAG_Heading = atan2(-MAG_Y, MAG_X) ;
}
Nerede magnetom_x
, #_y
ve #_z
aslında Magnetometer RAW değerleridir 3D vektörü bileşenleridir. yuvarlanma ve zift , yerleşik ivmeölçer ve jiroskoptan gelen gizemli bir Kalman-filtre çıktısındandır. Bu üç sensör ATAVRSBIN1'de . Rulo ve perde bu aşamaya kadar tamam.
Şimdi journal_of_sensors_renaudin et al_2010c.pdf'ye göre basit bir başlık hesaplaması MAG_Heading = atan2(-magnetom_y, magnetom_x) ;
yukarıdaki gibi ve tazminatla yapılmış olmalıdır .
Genel kod sadece AÇIK AHRS'den alınmıştır .
Rulo, Pitch ve Yaw biçimindeki veriler. Cihazı sadece elimle döndürdüm. İlk üçü sırasıyla sadece Roll, Pitch ve Yaw üzerinde yoğunlaşmıştır. Kalan ikisi ilk önce cihazı X boyunca yaklaşık 45 derece döndürür (Haddelenmiş), daha sonra Magnetometrenin yerel Z'si boyunca döndürülür. Daha sonra aynı, Y boyunca yaklaşık 45 Derece dönüşle (eğimli) sonra Magnetometrenin yerel Z'si boyunca döndürülür.
Grafikler -180 ila 180 derece aralığında çizildi.
Bir dosyadaki derece cinsinden açılar Rulodaki YAW özellikleri.
Bir dosyadaki derece cinsinden açılar Pitch'teki YAW özellikleri.
Bir dosyadaki derece cinsinden açılar Yaw'ın kendisindeki YAW özellikleri.
Bir dosyadaki derece cinsinden açılar Yaw'daki YAW özellikleri 45 derece yuvarlanmış.
Bir dosyadaki derece cinsinden açılar 45 derece eğimli yaw üzerindeki YAW özellikleri.
Not: Son 2 resim için: İlk önce ev konumunda tutulur, bu herkes için aynıdır (txt dosyalarına bakın). Sonra 45 derece yuvarlandıktan sonra düzlem cihazı (manyetometre ile) kullanılarak Manyetometrenin Z ekseni boyunca döndürülmüştür.
Benzer şekilde, son görüntü için cihaz, Manyetometrenin Z ekseni boyunca 45 derece eğimlidir.
Umarım bunlar sorunumu çözmemize yardımcı olur.
Yeni gelişmeler şöyle:
Başlıkta biraz çalıştım. Aşağıdaki çıktıyı aldım. cSV