ฉันกำลังทำงานกับ Magnetometer AK8975 ซึ่งเป็นส่วนหนึ่งของ IMU ซึ่งดูเหมือนจะยุ่งยากมากสำหรับฉัน ชิปนี้ให้เวกเตอร์ 3 มิติเป็นเอาต์พุตที่อธิบายสนามแม่เหล็กของโลกได้ทุกที่บนโลกหรือใกล้กับมัน
ฉันลองใช้อัลกอริธึมการคำนวณหัวเรื่องสองประเภท: แบบง่ายarctan(-y/x)
และแบบอื่นคือความเอียง (พิทช์) และการยกเลิกทางคณิตศาสตร์ของธนาคาร (ม้วน) ดังที่กล่าวไว้ด้านล่าง ทั้งเรื่องความชอบและเรื่องของธนาคารให้ผลผลิตผิด
ฉันสามารถได้รับหัวเรื่องที่ถูกต้องของโลก (โดยใช้แหล่งข้อมูลการศึกษาแบบเปิดที่มีอยู่อย่างง่าย) เมื่อมีการหมุนเพื่อรักษาแผนพื้นราบโดยใช้ algos ใด ๆ ของทั้งสอง
ฉันลองปรับเทียบเพื่อหาข้อผิดพลาดที่อ่อนและแข็ง ฉันสามารถพล็อตมันในรูปแบบ 3 มิติและแสดงรูปทรงกลม 3 มิติที่สมบูรณ์แบบ ยังคงไม่ทำงานกับความชอบหรือการปฏิเสธ
ตัวชี้ใด ๆ จะเป็นประโยชน์
รหัสและการใช้งานมีดังนี้:
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) ;
}
ที่ไหนmagnetom_x
, #_y
และ#_z
ส่วนประกอบของเวกเตอร์ 3 มิติซึ่งอันที่จริงเป็นค่า RAW จาก Magnetometer มี ม้วนและระยะพิทช์นั้นมาจากเอาท์พุทคาลมานฟิลเตอร์ลึกลับจากออนบอร์ดมาตรความเร่งและไจโรสโคป ทั้งสามเซ็นเซอร์อยู่ในATAVRSBIN1 การหมุนและระยะห่างก็โอเคจนถึงช่วงนี้
ตอนนี้การคำนวณหัวเรื่องแบบง่ายตามjournal_of_sensors_renaudin และ al_2010c.pdf ควรMAG_Heading = atan2(-magnetom_y, magnetom_x) ;
เป็นเช่นนั้นและได้รับค่าตอบแทนตามที่ได้กล่าวไว้ข้างต้น
รหัสโดยรวมก็คือจากการเปิด AHRS
ข้อมูลในรูปแบบ Roll, Pitch และ Yaw ฉันหมุนอุปกรณ์ด้วยมือของฉันเท่านั้น สามคนแรกได้รับการมุ่งเน้นเฉพาะ Roll, Pitch และ Yaw ตามลำดับ ส่วนที่เหลือสองจะหมุนอุปกรณ์เป็นครั้งแรกประมาณ 45 องศาตาม X (สะสม) แล้วหมุนไปตาม Magnetometer ของ Z ในท้องถิ่นจากนั้นทำซ้ำเหมือนกันด้วยการหมุนรอบ 45 องศาตาม Y (แหลม) จากนั้นหมุนไปตาม Magnetometer ท้องถิ่น Z
กราฟที่พล็อตอยู่ในช่วง -180 ถึง 180 องศา
มุมเป็นองศาในไฟล์คุณสมบัติ YAW on Roll
มุมเป็นองศาในไฟล์คุณสมบัติ YAW บน Pitch
มุมเป็นองศาในไฟล์คุณสมบัติ YAW บน Yaw นั้น
มุมเป็นองศาในไฟล์ คุณสมบัติ YAW บน Yaw ที่มีการหมุน 45 องศา
มุมเป็นองศาในไฟล์ คุณสมบัติ YAW บน Yaw ที่มี 45 องศาแหลม
หมายเหตุ: สำหรับรูปภาพ 2 รูปล่าสุด: เก็บไว้ที่ตำแหน่งแรกซึ่งเป็นรูปแบบเดียวกันทั้งหมด (ดูไฟล์ txt) จากนั้นรีด 45 องศาจากนั้นใช้อุปกรณ์ระนาบ (พร้อมสนามแม่เหล็ก) หมุนไปตามแกน Z ของ Magnetometer
ในทำนองเดียวกันสำหรับภาพสุดท้ายอุปกรณ์นั้นได้รับการแหลม 45 องศาแล้วตามแนวแกน Z ของ Magnetometer
ฉันหวังว่าสิ่งเหล่านี้จะช่วยแก้ปัญหาของฉัน
การพัฒนาใหม่มีดังนี้:
ฉันทำงานบางอย่างในหัวข้อ ฉันได้ผลลัพธ์ต่อไปนี้ CSV