Saya sedang mengerjakan Magnetometer AK8975 yang menjadi bagian dari IMU. Yang sepertinya sangat rumit bagi saya. Chip ini memberikan vektor 3D sebagai output yang menggambarkan medan magnet bumi di setiap tempat di bumi atau di dekatnya.
Saya mencoba dua jenis algoritma perhitungan tajuk: Satu sederhana arctan(-y/x)
dan satu lagi kecenderungan (pitch) dan bank (roll) membatalkan matematika seperti disebutkan di bawah ini. Baik pada kecenderungan dan bank memberikan output yang salah.
Saya bisa mendapatkan heading yang benar di bumi (menggunakan sumber belajar terbuka sederhana yang tersedia) ketika diputar menjaga horizontal pada rencana tanah menggunakan salah satu dari dua algo.
Saya mencoba kalibrasi untuk kesalahan lunak dan keras. Saya bisa memplotnya dalam 3D dan menunjukkan sphere 3D yang sempurna. Masih tidak bekerja pada kecenderungan atau deklinasi.
Setiap pointer akan sangat membantu.
Kode dan implementasinya adalah sebagai berikut:
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) ;
}
Di mana magnetom_x
, #_y
dan #_z
merupakan komponen vektor 3D yang sebenarnya adalah nilai RAW dari Magnetometer. roll and pitch berasal dari output Kalman-filter misterius dari onboard accelerometer dan gyroscope. Ketiga sensor ini berada di ATAVRSBIN1 . Roll and pitch tidak apa-apa sampai tahap ini.
Sekarang perhitungan heading sederhana sesuai dengan journal_of_sensors_renaudin et al_2010c.pdf seharusnya MAG_Heading = atan2(-magnetom_y, magnetom_x) ;
dan dengan kompensasi seperti di atas.
Kode keseluruhan hanya dari OPEN AHRS .
Data dalam format Roll, Pitch dan Yaw. Saya memutar perangkat hanya dengan tangan saya. Tiga pertama telah terkonsentrasi hanya pada Roll, Pitch dan Yaw masing-masing. Sisa dua yang pertama diputar perangkat sekitar 45 derajat sepanjang X (Rolled) kemudian diputar bersama Z lokal Magnetometer. Kemudian sama telah diulang dengan sekitar 45 Derajat rotasi sepanjang Y (bernada) kemudian diputar bersama Z lokal Magnetometer.
Grafik diplot dalam kisaran -180 hingga 180 derajat.
Sudut dalam derajat dalam file Karakteristik YAW pada Roll.
Sudut dalam derajat dalam file Karakteristik YAW pada Pitch.
Sudut dalam derajat dalam file Karakteristik YAW pada Yaw itu sendiri.
Sudut dalam derajat dalam file Karakteristik YAW di Yaw dengan 45 derajat digulung.
Sudut dalam derajat dalam file Karakteristik YAW di Yaw dengan 45 derajat bernada.
Catatan: Untuk 2 gambar terakhir: Pertama disimpan di posisi rumah, itu sama untuk semua (lihat file txt). Kemudian Rolled 45 derajat kemudian menggunakan perangkat pesawat (dengan magnetometer) telah diputar sepanjang sumbu Z Magnetometer.
Demikian pula untuk gambar terakhir perangkat telah dinaikkan 45 derajat kemudian di sepanjang sumbu Z Magnetometer.
Saya harap ini akan membantu menyelesaikan masalah saya.
Perkembangan baru adalah sebagai berikut:
Saya mengerjakan beberapa di Pos. Saya mendapat hasil berikut. csv