본문 바로가기
유도항법제어/비행제어

쿼터니언 기반 자세제어

by 깊은대학 2023. 3. 18.

질량중심을 기준으로 강체의 회전 운동방정식은 다음과 같다 (https://pasus.tistory.com/191).

 

(1)MG=I¯Gbdiωbdt+iωb×(I¯Giωb)

 

여기서 {i} 는 관성좌표계, {b} 는 강체좌표계, iωb 는 강체좌표계의 각속도 벡터, G 는 강체의 질량중심, I¯G 는 질량중심점에 대한 관성 다이아딕, MG 는 강체에 작용하는 질량 중심점에 대한 모멘트이다.

 

 

식 (1)을 강체좌표계 {b} 로 표현하면 다음과 같다.

 

(2)[IG]ω˙ibb=[ωibb×][IG]ωibb+MGb

 

여기서 [IG] 는 관성행렬이고, ωibb=[ω1 ω2 ω3]T 는 각속도 벡터 iωb 를 좌표계 {b} 로 표현한 것으로서 그 빗대칭(skew-symmetric) 행렬은 다음과 같다.

 

(3)[ωibb×]=[0ω3ω2ω30ω1ω2ω10]

 

쿼터니언(quaternion) 기반 자세제어(attitude control)의 목적은 쿼터니언으로 표시된 강체의 현재 자세 qbi 를 원하는 자세 qcmd 가 되도록 모멘트 MGb 를 제어하는 것이다.

 

 

원하는 자세와 현재 자세의 차이, 즉 자세 오차를 다음과 같이 곱셈형 쿼터니언 오차 qe 로 정의한다.

 

(4)qcmd=qbiqe

 

그러면 자세 오차가 0 일 때 쿼터니언 오차 qeqI 가 된다. 여기서 qI 는 회전각이 0 일 때의 쿼터니언으로서 다음과 같다.

 

(5)qI=[1000]

 

따라서 제어 목적은 qeqI 가 되게 하는 것이다. 이제 제어 목적을 바탕으로 다음과 같이 쿼터니언 기반 자세제어 법칙을 정의한다.

 

(6)MGb=Kqe1:3Dωibb

 

여기서 K>0, D>0 는 게인 행렬이고, qe1:3 는 쿼터니언 오차 qe 의 벡터부를 의미한다.

 

(7)qe=[qe0qe1qe2qe3]=[qe0qe1:3]

 

쿼터니언 오차 qe 의 미분은 식 (4)에서 qcmd 를 상수(constant)라고 가정하고 구한다.

 

(8)0=q˙biqe+qbiq˙e

 

위 식에 의하면 q˙e 는 다음과 같이 계산된다.

 

(9)q˙e=(qbi)1q˙biqe=12(qbi)1qbiω¯ibbqe=12ω¯ibbqe

 

여기서

 

(10)ω¯ibb=[0ωibb]

 

이며 식 (9)를 계산할 때 다음과 같이 쿼터니언의 미분을 이용하였다.

 

(11)q˙bi=12qbiω¯ibb

 

쿼터니언 곱 관계식을 이용하면 식 (9)는 다음과 같이 쓸 수 있다.

 

(12)q˙e=12[ω¯ibb]qe=12[0(ωibb)Tωibb[ωibb×]][qe0qe1:3]=12[qe1:3Tωibbqe0ωibb+[ωibb×]qe1:3]

 

또는

 

(13)q˙e0=12(ωibb)Tqe1:3q˙e1:3=12[ωibb×]qe1:312qe0ωibb

 

이다.

 

 

이제, 식 (6)을 (2)에 대입하면 다음과 같다.

 

(14)[IG]ω˙ibb=[ωibb×][IG]ωibb+Kqe1:3Dωibb

 

식 (14)로 주어지는 피드백 시스템의 안정성을 해석하기 위해서 다음과 같이 리야프노프 함수 후보(Lyapunov function candidate) V 를 정의한다.

 

(15)V=12(ωibb)TK1[IG]ωibb+(qeqI)T(qeqI)=12(ωibb)TK1[IG]ωibb+qe1:3Tqe1:3+(qe01)2

 

위 식을 시간 미분하면 다음과 같다.

 

(16)V˙=(ωibb)TK1[IG]ω˙ibb+2(qeqI)Tq˙e

 

식 (12)와 (14)를 식 (16)에 대입하면 V˙ 은 다음과 같이 된다.

 

(17)V˙=(ωibb)TK1([ωibb×][IG]ωibb+Kqe1:3Dωibb)     [(qe01)  qe1:3T][qe1:3Tωibbqe0ωibb+[ωibb×]qe1:3]=(ωibb)TK1[ωibb×][IG]ωibb+(ωibb)Tqe1:3     (ωibb)TK1Dωibbqe1:3Tωibb=(ωibb)TK1[ωibb×][IG]ωibb(ωibb)TK1Dωibb

 

여기서 K 를 다음과 같은 값을 갖도록 선정한다면

 

(18)K1=c1[IG]+c2I,   c1>0, c2>0

 

식 (17)은 다음과 같이 된다.

 

(19)V˙=(ωibb)T(c1[IG]+c2I)[ωibb×][IG]ωibb     (ωibb)TK1Dωibb=c1([IG]ωibb)T[ωibb×][IG]ωibbc2(ωibb)T[ωibb×][IG]ωibb     (ωibb)TK1Dωibb=(ωibb)TK1Dωibb

 

위 식에서 [ωibb×] 가 빗대칭 행렬이라는 점과 (ωibb)T[ωibb×]=0 임을 이용하였다. 식 (19)에 의하면 K1D>0 이므로 V˙<0 이 되어서 시스템 (14)는 전역에서 점근적으로 안정(globally asymptotically stable)하다.

또한 식 (19)에 의하면 c1=0 인 경우에도, 또는 c2=0 인 경우에도 V˙<0 이므로 시스템 (14)는 전역에서 점근적으로 안정하다.

c1=0 인 경우는 K1=c2I 또는 K=1c2I 이므로 자세제어 법칙 (6)은 시스템의 관성 행렬 [IG] 의 정보를 필요로 하지 않는다.

멀티콥터 자세제어 편(https://pasus.tistory.com/246)에서 언급했듯이 최단 각경로(angular path)를 보장하기 위하여 쿼터니언의 대척점 모호성(antipodal ambiguity)을 반영하면 식 (6)의 자세제어 법칙을 다음과 같이 수정할 수 있다.

 

(20)MGb=sgn(qe0)Kqe1:3Dωibb

 

여기서

 

sgn(qe0)={1,qe001,qe0<0

 

이다. 한편 논문 "Quaternion Feedback Regulator for Spacecraft Eigenaxis Rotations by B. Wie, H. Weiss and A. Arapostathis" 에 의하면 자세제어 법칙 (6)을 다음과 같이 수정한다면 고유축(eigenaxis) 회전이라는 최단 각경로에 의한 자세제어가 가능하다고 한다.

 

(21)MGb=[ωibb×][IG]ωibb+Kqe1:3Dωibb

 

여기서

 

D=d[IG],   K=k[IG],   d>0, k>0

 

이다. 그런데 증명이 명확하지 않은 것 같아서 구체적인 내용은 생략한다.

 

 

댓글