2013-03-05 4 views
1

쿼터니언 변환을 위해 방향 코사인 행렬이 필요한 시스템을 시뮬레이트하고 있습니다. simulink에서 사용할 수있는 Quaternion 변환 블록에 기본 DCM을 사용합니다. 그러나 시뮬레이션의 일부 지점에서 출력 쿼터니온 구성 요소는 부호를 반전시킵니다.기본 Simulink 라이브러리 블록을 사용한 DCM에서 쿼터니언 변환의 모호성

불행히도 플롯 이미지를 첨부 할 수 없습니다.

비록 이것이 수학적으로 정확하지만 나는 부드러운 변화를 원합니다. 이 문제를 피하고 쿼터니언에 대한 부드러운 곡선을 갖는 방법에 대한 아이디어?

업데이트 1 : http://tinypic.com/view.php?pic=33dayap&s=6

위는 시뮬레이션 플롯이다. 첫 번째 플롯은 출력 쿼터니언입니다. 두 번째 줄거리는 방향 코사인 행렬입니다. dcm 구성 요소가 부드럽게 변경 되더라도 쿼터니언은 갑자기 기호를 변경합니다.

답변

1

문제는 쿼터니언의 double covering 속성 때문에 발생합니다. 두 단위 쿼터니언은 모든 순환에 해당합니다. 어느 시점에서, 어떤 규칙에 따라 Matlab 구현은 하나의 쿼터니언에서 다른 쿼터니언으로 전환되었습니다. 당신이 그것에 대해 할 수있는 일은 많지 않습니다.

지저분한 해결 방법은 고유 한 회전 행렬을 쿼터니언 변환에 쓰고 이전의 것과 더 가까운 두 가지 가능성을 표현하여 갑작스러운 점프를 방지하는 것입니다. 지저분 해.

4 원수를 플로팅하는 것은 일반적으로 실용적인 어플리케이션에서는 필요하지 않습니다. 대부분 객체/벡터를 회전하고 있습니다. 해당 객체/벡터 (또는 그 일부 투영법)를 플롯하면 회전 표현에 점프가 있어도 갑자기 점프하지 않습니다. 회전 된 오브젝트의 투영을 플로팅하는 또 다른 이점은 쿼터니언보다 이러한 플롯을 해석하는 것이 훨씬 쉽다는 것입니다. 귀하의 신청서에 그것이 적합한 지 여부는 알 수 없습니다. 그것은 내 안에서 아름답게 일했다.

+0

답변 해 주셔서 감사합니다. 이 갑작스런 전환에 문제가있는 이유는 피드백 용 쿼터니언 오류 벡터를 기반으로 제어 법칙을 사용하고 있기 때문입니다. 스칼라 쿼터니언 컴포넌트 q0의 부호가 항상 양수인지 확인하여 문제를 극복 할 수있었습니다 (솔루션은 애플리케이션에만 해당). – user2134943

+0

나는 그것을 듣게되어 기쁩니다! 질문을 Upvoted. – Ali