[PX4] 멀티콥터 자세제어 알고리즘 - 2
회전축

따라서 쿼터니언(quaternion)의 정의에 의하면 다음식이 성립한다.
이와 같이 동일한 물리적인 자세에 대해서 두 가지의 쿼터니언 표현식이 존재하는 문제가 있는데, 이것을 대척점 모호성(antipodal ambiguity)이라고 한다.
앞서 유도한(https://pasus.tistory.com/245) 멀티콥터 각속도 명령
은 멀티콥터의 자세
이다. 이 때 쿼터니언 오차는
이를 반영하여 앞서 설명한 멀터콥터 각속도 명령 유도식에서 사용한 리야프노프 함수 후보(Lyapunov function candidate)대신에 다음과 같은 함수
동일한 방법으로 수식을 전개하면 각속도 명령은 다음과 같이 된다.
식 (5)는 쿼터니언 오차를
결국
기술보고서 'Nonlinear Quadcopter Attitude Control Technical Report, 2013' 에서는 이 두 개의 각속도 명령 (2)와 (5)를 하나의 수식으로 묶는 것을 제안하고 있다.
여기서
이다.
아래 그림은 식 (2), (5), (6)의 차이점을 보여준다. 식 (2)를 사용할 경우에는 쿼터니언 오차

다음 그림은 자세제어 알고리즘을 구조를 보여준다.

식 (2), (5), (6)에 의하면 각속도 명령의 크기는 다음과 같이 계산할 수 있다.
각속도 명령의 크기의 상한선을 미리 알 수 있다는 것은 제어 신호의 포화(saturation)를 고려할 때 큰 장점이라고 볼 수 있다. 이제 멀티콥터의 요(yaw)운동이 피치(pitch)와 롤(roll) 운동보다 훨씬 느리다는 점을 자세제어 알고리즘에 고려하는 일만 남았다.