주요 콘텐츠

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

dcm2angle

방향 코사인 행렬에서 회전 각도 생성

설명

기본 구문

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm)는 방향 코사인 행렬 dcm에 대한 회전 각도 rotationAng1, rotationAng2, rotationAng3를 계산합니다. 방향 코사인 행렬은 프레임 A에서 프레임 B로의 수동 변환을 나타냅니다. 결과 회전 각도는 프레임 A에서 프레임 B로의 일련의 오른손 고유 수동 회전을 나타냅니다.

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence)는 지정된 회전 시퀀스 rotationSequence에 대한 회전 각도를 계산합니다.

예제

제약, 동작(action) 및 허용오차 구문

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim)는 지정된 각도 제약 조건 lim에 대한 회전 각도를 계산합니다. 다른 모든 입력 인수 뒤에 lim를 지정하세요.

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim,action)는 회전 각도를 계산하고 방향 코사인 행렬이 직교하지 않으면 동작(action)을 수행합니다. 다른 모든 입력 인수 뒤에 action를 지정하세요.

[rotationAng1 rotationAng2 rotationAng3] = dcm2angle(dcm,rotationSequence,lim,action,tolerance)는 회전 각도를 계산하고 tolerance 레벨을 사용하여 방향 코사인 행렬이 직교하는지 평가합니다. 다른 모든 입력 인수 뒤에 tolerance를 지정하세요.

예제

모두 축소

다음 예제에서는 dcm2angle를 사용하여 방향 코사인 행렬에서 회전 각도를 결정하는 방법을 보여줍니다.

방향 코사인 행렬에서 회전 각도 결정

방향 코사인 행렬로부터 회전 각도를 결정합니다.

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle(dcm)
yaw = 
0
pitch = 
0
roll = 
0

다중 방향 코사인 행렬에서 회전 각도 결정

다중 방향 코사인 행렬로부터 회전 각도를 결정합니다.

dcm        = [ 1 0 0; 0 1 0; 0 0 1];  
dcm(:,:,2) = [ 0.85253103550038   0.47703040785184  -0.21361840626067; ...
    -0.43212157513194   0.87319830445628   0.22537893734811; ...
    0.29404383655186  -0.09983341664683   0.95056378592206];
[pitch, roll, yaw] = dcm2angle(dcm,'YXZ','Default','None',0.1)
pitch = 2×1

         0
    0.3000

roll = 2×1

         0
    0.1000

yaw = 2×1

         0
    0.5000

다중 방향 코사인 행렬로부터 회전 각도를 결정합니다.

dcm        = [ 1 0 0; 0 1 0; 0 0 1];  
dcm(:,:,2) = [ 0.85253103550038   0.47703040785184  -0.21361840626067; ...
    -0.43212157513194   0.87319830445628   0.22537893734811; ...
    0.29404383655186  -0.09983341664683   0.95056378592206];
[pitch, roll, yaw] = dcm2angle( dcm, 'YXZ' )
pitch = 2×1

         0
    0.3000

roll = 2×1

         0
    0.1000

yaw = 2×1

         0
    0.5000

다중 방향 코사인 행렬과 각도 제약으로부터 회전 각도 결정

방향 코사인 행렬에서 회전 각도를 계산하고 회전 순서와 각도 제약 조건을 지정합니다.

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust')
yaw = 
0
pitch = 
0
roll = 
0

다중 방향 코사인 행렬, 각도 제약 및 동작(action)으로부터 회전 각도 결정

회전 순서, 각도 제약 조건, 동작(action)을 지정하여 방향 코사인 행렬에서 회전 각도를 계산합니다.

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust', 'warning')
yaw = 
0
pitch = 
0
roll = 
0

다중 방향 코사인 행렬, 각도 제약, 동작(action) 및 허용오차로부터 회전 각도 결정

회전 순서, 각도 제약, 동작(action) 및 허용오차를 지정하여 방향 코사인 행렬에서 회전 각도를 계산합니다.

dcm = [1 0 0; 0 1 0; 0 0 1];
[yaw, pitch, roll] = dcm2angle( dcm, 'zyx', 'robust', 'warning', 0.01)
yaw = 
0
pitch = 
0
roll = 
0

입력 인수

모두 축소

방향 코사인 행렬로, 3×3×m 행렬로 지정되며, 여기서 m는 방향 코사인 행렬의 개수입니다. 방향 코사인 행렬은 행렬식 +1로 직교해야 합니다.

회전시퀀스로, 다음과 같이 지정됩니다.

  • 'ZYX'

  • 'ZYZ'

  • 'ZXY'

  • 'ZXZ'

  • 'YXZ'

  • 'YXY'

  • 'YZX'

  • 'YZY'

  • 'XYZ'

  • 'XZY'

  • 'XYX'

  • 'XZX'

여기서 rotationAng1z축 회전이고, rotationAng2y축 회전이며, rotationAng3x축 회전입니다.

데이터형: char | string

각도 제약은 다음과 같이 지정됩니다.

  • 'Default' — 명목 및 짐벌 잠금 조건에 대한 회전 각도를 계산합니다. 회전 각도를 계산한 후, 이 옵션은 두 회전 각도를 다시 DCM으로 변환하고 dcm 값에 가장 가까운 값을 갖는 회전 각도를 출력합니다. 이 옵션은 모든 조건에서 가장 정확한 솔루션을 반환합니다. 이 동작은 'Robust' 동작과 동일합니다.

  • 'ZeroR3' — 짐벌 잠금이 발생하는 경우 R3을 0로 설정하고 R1과 R2에 대한 해결책을 찾습니다.

  • 'Robust' — 명목 및 짐벌 잠금 조건에 대한 회전 각도를 계산합니다. 회전 각도를 계산한 후, 이 옵션은 두 회전 각도를 다시 DCM으로 변환하고 dcm 값에 가장 가까운 값을 갖는 회전 각도를 출력합니다. 이 옵션은 모든 조건에서 가장 정확한 솔루션을 반환합니다. 이 동작은 'Default' 동작과 동일합니다.

각도 제약에 대한 자세한 내용은 제한 사항를 참조하세요.

잘못된 방향 코사인 행렬에 대한 동작(action)은 다음과 같이 지정됩니다.

  • 'Warning' — 경고를 표시하고 방향 코사인 행렬이 잘못되었음을 나타냅니다.

  • 'Error' — 오류를 표시하고 방향 코사인 행렬이 잘못되었음을 나타냅니다.

  • 'None' — 경고나 오류를 표시하지 않습니다.

유효한 방향 코사인 행렬은 다음과 같은 경우 직교하고 적절합니다.

  • 방향 코사인 행렬의 전치 행렬은 지정된 허용오차 tolerance (transpose(dcm)*dcm == 1±tolerance) 내에서 1와 같습니다.

  • 방향 코사인 행렬의 행렬식은 지정된 허용오차(det(dcm) == 1±tolerance) 내에서 1와 같습니다.

데이터형: char | string

방향 코사인 행렬 dcm가 직교하는지 평가하기 위한 상대 허용수준이며, 스칼라로 지정됩니다.

데이터형: char | string

출력 인수

모두 축소

첫 번째 회전 각도로, m×1 배열로 반환됩니다(단위: rads).

두 번째 회전 각도로, m×1 배열로 반환됩니다(단위: rads).

세 번째 회전 각도로, m×1 배열로 반환됩니다(단위: rads).

제한 사항

  • 'ZYX', 'ZXY', 'YXZ', 'YZX', 'XYZ', 및 'XZY' 구현에 대한 'Default' 제한은 ±90도 사이의 rotationAng2 각도와 ±180도 사이의 rotationAng1rotationAng3 각도를 생성합니다.

  • 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX', 및 'XZX' 구현에 대한 'Default' 제한은 0~180도 사이의 rotationAng2 각도와 ±180도 사이의 rotationAng1rotationAng3 각도를 생성합니다.

  • 'ZYX', 'ZXY', 'YXZ', 'YZX', 'XYZ', 및 'XZY' 구현에 대한 'ZeroR3' 제한은 ±90도 사이의 rotationAng2 각도와 ±180도 사이의 rotationAng1rotationAng3 각도를 생성합니다. 하지만 rotationAng2가 ±90도일 때, rotationAng3는 0도로 설정됩니다.

  • 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX', 및 'XZX' 구현에 대한 'ZeroR3' 제한은 0~180도 사이의 rotationAng2 각도와 ±180도 사이의 rotationAng1rotationAng3 각도를 생성합니다. 하지만 rotationAng2가 0도 또는 ±180도일 때, rotationAng3는 0도로 설정됩니다.

버전 내역

R2006b에 개발됨

모두 확장