나는 IMU의 일부인 자력계 AK8975를 연구하고 있습니다. 나에게는 매우 까다로운 것 같습니다. 이 칩은 지구의 어느 곳에서나 지구 근처의 지구 자기장을 설명하는 출력으로 3D 벡터를 제공합니다.
두 가지 유형의 제목 계산 알고리즘을 시도했습니다. 하나는 간단 arctan(-y/x)
하고 다른 하나는 아래에 언급 된 것처럼 기울기 (피치) 및 뱅크 (롤) 취소 수학입니다. 성향과 은행 모두 잘못된 결과를냅니다.
두 알고 중 하나를 사용하여 수평 계획을 유지하면서 회전 할 때 올바른 간단한 제목의 지구를 사용할 수 있습니다 (간단한 사용 가능한 개방형 연구 리소스 사용).
연철 및 경철 오류에 대한 교정을 시도했습니다. 3D로 그릴 수 있고 완벽한 3D 구를 보여줍니다. 여전히 성향이나 편각에 효과가 없습니다.
모든 포인터가 도움이 될 것입니다.
코드와 그 구현은 다음과 같습니다.
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
실제로 자력계에서 RAW 값입니다 차원 벡터의 구성 요소입니다. 롤 및 피치 는 온보드 가속도계 및 자이로 스코프의 신비한 칼만 필터 출력에서 비롯됩니다. 이 세 센서는 ATAVRSBIN1에 있습니다. 롤과 피치는이 단계까지 괜찮습니다.
이제 journal_of_sensors_renaudin et al_2010c.pdf 에 따른 간단한 표제 계산 MAG_Heading = atan2(-magnetom_y, magnetom_x) ;
은 위와 같이 보상 되어야합니다 .
전체 코드는 단순히 OPEN AHRS 에서 가져온 것 입니다.
Roll, Pitch 및 Yaw 형식의 데이터 손으로 만 장치를 회전 시켰습니다. 처음 3 개는 각각 Roll, Pitch 및 Yaw에만 집중되었습니다. 나머지 2 개는 먼저 장치를 X (회전)를 따라 45도 정도 회전 한 다음 자력계의 로컬 Z를 따라 회전합니다. 그런 다음 Y (피치)를 따라 약 45도 회전 한 다음 자력계의 로컬 Z를 따라 회전했습니다.
그래프는 -180에서 180 도의 범위 내에 표시됩니다.
파일 의 각도 (도) 45도 롤링 된 Yaw의 YAW 특성.
파일 의 각도 (도) 45 도의 피치를 가진 Yaw의 YAW 특성.
참고 : 마지막 2 장의 사진 : 먼저 홈 위치에 보관하십시오. 이는 모두 동일합니다 (txt 파일 참조). 그런 다음 45도 회전 한 후 평면 장치 (자력계 포함)를 사용하여 자력계의 Z 축을 따라 회전했습니다.
마지막 이미지와 마찬가지로 장치는 45도 각도로 자력계의 Z 축을 따라 피치로 조정되었습니다.
이것들이 내 문제를 해결하는 데 도움이되기를 바랍니다.
새로운 개발은 다음과 같습니다.
나는 제목에서 일했다. 나는 출력을 따랐다. csv