주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

Quaternions to Rotation Angles

쿼터니언에서 회전 벡터 결정

  • Quaternions to Rotation Angles block

라이브러리:
Aerospace Blockset / Utilities / Axes Transformations

설명

Quaternions to Rotation Angles 블록은 4개 요소로 구성된 쿼터니언 벡터(q0, q1, q2, q3)를 세 개의 회전 각도(R1, R2, R3)로 표현되는 회전으로 변환합니다. 블록은 회전 각도의 함수로 방향 코사인 행렬(DCM)의 요소를 계산하여 변환을 생성합니다. DCM의 요소는 단위 쿼터니언 벡터의 함수입니다. Aerospace Blockset™는 스칼라 우선 규칙을 사용하여 정의된 쿼터니언을 사용합니다. 이 블록은 모든 쿼터니언 입력을 정규화합니다. 결과적인 회전 각도는 프레임 A에서 프레임 B로의 일련의 우측 내재적 수동 회전을 나타냅니다. 쿼터니언은 프레임 A에서 프레임 B로의 우측 수동 변환을 나타냅니다. 방향 코사인 행렬에 대한 자세한 내용은 알고리즘를 참조하세요.

제한 사항

  • ZYX, ZXY, YXZ, YZX, XYZ, 및 XZY 회전의 경우, 블록은 ±pi/2 라디안 사이에 있는 R2 각도와 ±pi 라디안 사이에 있는 R1 및 R3 각도를 생성합니다.

  • 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX', 'XZX' 회전의 경우, 블록은 0과 파이 라디안 사이에 있는 R2 각도와 ±파이 라디안 사이에 있는 R1 및 R3 각도를 생성합니다. 하지만 후자의 경우, R2가 0이면 R3는 0 라디안으로 설정됩니다.

포트

입력

모두 확장

4x1 벡터로 지정된 쿼터니언입니다.

데이터형: double

출력

모두 확장

회전 각도는 라디안 단위의 3x1 벡터로 반환됩니다.

데이터형: double

파라미터

모두 확장

3개의 회전 각도에 대한 출력 회전 순서입니다.

프로그래밍 방식 사용

블록 파라미터: rotationOrder
유형: 문자형 벡터
: ZYX | ZYZ |ZXY | ZXZ | YXZ | YXY | YZX | YZY | XYZ | XYX | XZY | XZX
기본값: 'ZYX'

알고리즘

DCM의 요소는 단위 쿼터니언 벡터의 함수입니다. 예를 들어, 회전 순서 z-y-x의 경우 DCM은 다음과 같이 정의됩니다.

DCM=[cosθcosψcosθsinψsinθ(sinϕsinθcosψcosϕsinψ)(sinϕsinθsinψ+cosϕcosψ)sinϕcosθ(cosϕsinθcosψ+sinϕsinψ)(cosϕsinθsinψsinϕcosψ)cosϕcosθ]

단위 쿼터니언 벡터로 정의된 DCM은 다음과 같습니다.

DCM=[(q02+q12q22q32)2(q1q2+q0q3)2(q1q3q0q2)2(q1q2q0q3)(q02q12+q22q32)2(q2q3+q0q1)2(q1q3+q0q2)2(q2q3q0q1)(q02q12q22+q32)]

이전 방정식에서 ZYX 회전 순서에 대한 DCM 요소와 개별 회전 각도 간의 다음과 같은 관계를 도출할 수 있습니다.

ϕ=atan(DCM(2,3),DCM(3,3))=atan(2(q2q3+q0q1),(q02q12q22+q32))θ=asin(DCM(1,3))=asin(2(q1q3q0q2))ψ=atan(DCM(1,2),DCM(1,1))=atan(2(q1q2+q0q3),(q02+q12q22q32))

여기서 Ψ는 R1, Θ는 R2, Φ는 R3입니다.

확장 기능

모두 확장

C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2007b에 개발됨