디바이스 방향 쿼터니언 벡터 알고리즘
이 문서에서는 Windows HLK(Windows Hardware Lab Kit)에서 고급 방향 센서 테스트에서 9축 데이터 정확도에 대해 수신된 벡터와 예상 벡터 사이의 차이를 확인하는 데 사용하는 알고리즘에 대해 설명합니다. 이 테스트는 센서 융합이 제대로 통합되고 센서 융합에 필요한 모든 센서가 제대로 통합되고 설치되어 있는지 확인합니다.
참고
경우에 따라 센서 진단 도구를 사용하여 테스트 중인 3D 경사계 및 집계된 디바이스 방향 센서를 검사할 수 있습니다.
쿼터니언 벡터 알고리즘
이 알고리즘은 두 벡터 4차원 내적의 아크코사인을 두 벡터의 크기의 곱으로 나누고 2로 나눕니다. 이 알고리즘은 그림 1 쿼터니언 벡터 알고리즘 수식에 표시됩니다.
회전 행렬 값은 정확도 유효성 검사를 위해 쿼터니언 값으로 변환됩니다. 계산된 쿼터니언 벡터는 예상 쿼터니언 벡터에서 +/- 5도 이내로 벗어나야 합니다(쿼터니언 벡터 간에 형성된 각도와 비교한 허용 오차)(**제목 축 방향으로 +/-10도 정확도 허용). Windows HLK 테스트에서는 최대 15도의 Øₜ 델타를 허용합니다.
수신된 쿼터니언 벡터와 예상 쿼터니언 벡터 간의 델타 각도를 계산하는 방법
이 섹션에서는 Windows HLK의 고급 방향 테스트에서 수신된 쿼터니언 벡터와 예상 쿼터니언 벡터 간의 델타 각도 계산에 대해 설명합니다.
집계된 디바이스 방향 센서의 데이터 보고서에는 다음과 같은 두 가지 데이터 값이 관심이 있습니다.
쿼터니언 벡터
회전 행렬
이 테스트는 다음 두 가지 확인으로 구성됩니다.
센서 데이터 보고서에서 수신된 쿼터니언 벡터 확인 쿼터니언 벡터는 (xi + yj + zk + w) 형식입니다.
w 값은 항상 양수로 예상됩니다.
쿼터니언 벡터는 정규화되고 0이 아닌 것으로 예상됩니다. 예를 들어 벡터의 크기는 1.0에 가깝습니다. 크기 계산에서 오차를 반올림하기 위해 1%(1%) 여유가 제공됩니다.
델타 각도는 delta = 2 * Acos( ( Exp . Rec ) / ( | Exp | * | Rec | ) )를 사용하여 계산됩니다. 여기서 다음이 적용됩니다.
\*는 스칼라 곱을 나타냅니다.
. 은 내적을 나타냅니다.
Exp는 예상 쿼터니언 벡터입니다.
Rec는 수신된 쿼터니언 벡터입니다.
| Q |는 쿼터니언 벡터의 크기를 나타냅니다.
delta는 각도입니다.
델타가 360도보다 크면 delta = delta - 360으로 다시 계산됩니다.
이때 델타는 허용 오차보다 작거나 같아야 합니다(예: 10도).
수신된 회전 행렬을 확인합니다. 회전 행렬은 3x3 행렬이어야 합니다.
회전 행렬의 각 열 및 행 벡터는 정규화되어야 하며 0이 아니어야 합니다. 크기 계산에서 오차를 반올림하기 위해 1% 여유가 제공됩니다.
수신된 회전 행렬은 쿼터니언 벡터로 변환됩니다.
확인(1)의 <a>~<e>에 이르는 모든 단계가 다시 사용됩니다.