본문으로 바로가기
이미 쿼드콥터의 동역학은 이야기했구요. 그 동역학은


이었습니다. 여기 대해 T-S 퍼지 모델을 적용해서 PDC 방법으로 제어기를 설계해볼려고 합니다. 이미 T-S 퍼지 모델에 대한 이야기는 많이 했는데요. 그 사용방법은

위에 모두 소개되었습니다. 그중 쿼드콥터에 적용할 것은 Two-Rotor 시스템에 적용한 것과 같은 것이라고 생각해도 괜찮습니다.



제어입력을 위와같이 변경합니다. 이유는 상태 z쪽에 상수항이 남기때문입니다.


그러면 위과 같은 형태로 바뀌게 되구요


우리는 위와 같은 T-S 퍼지 모델로 바꾸는게 목표이니, 


선형독립인 함수를 선정합니다.


그 선형독립인 함수 gi들로 원 동역학을 표현하면 위과 같이 됩니다.


동작구간을 잡구요


해당 동작구간에 대해 선형독립인 함수들의 최소값과 최대값을 찾습니다.


그 후 소속정도를 의미하는 h함수를 찾아야겠지요


위과 같습니다. 퍼지룰이 32개나 생성되는군요... 뭐 어쩔 수 없지요..^^


각 A, B 행렬들은 위와같이 표현될 것인데 abcde는 이진수의 표현입니다. 즉


와 같은 형태가 됩니다.


이때 F0는 위와 같구요.


라는 함수를 하나 정의하고 그 뜻은 제로행렬인데 i,j의 위치만 1의 값을 가집니다.


그럼 F1부터 F5까지는 다 표현했네요


PDC를 사용하기 위해 위 제어입력을 애초 T-S 퍼지 모델에 대입하면요


로 표현될 것이고, 다시


로 표현할 수 있게됩니다.


Gij는 위와 같습니다.


입력과 출력을 각각 제한하구요


위 LMI를 풀면 되겠습니다. 이때 LMI 툴박스를 좀더 쉽게 사용하기 위해


제한을 1로 두고


위와 같은 표현을 가지겠네요. 위를 만족하는 양정의(positive definite) 행렬 P를 찾으면 답이지요^^


아참 상태는 위와 같습니다...^^









결과 비교는 

와의 비교입니다. 뭐 제가 적용한 제어기이니 전 T-S 퍼지모델을 이용해서 설계된 제어기에 좀더 후한 점수를 주고싶네요^^

댓글을 달아 주세요

  1. 김김김 2011.04.08 01:12 신고

    핑크윙크님 블로그 잘 보고있어요~
    질문이 있는데
    입출력 제한에서...
    매트랩에서 입력의 제한을 u가 바운드되는 최대치를 어쩌구저쩌구...하는데
    ㅠㅠ
    u를 보려면 어떻게해요?ㅠㅠ
    x1은 plot(x(:1))
    x2는 마찬가지로하고...u는 어떻게 명령어를 입력해야되나요???

  2. 뉴뉴 2012.10.11 20:42 신고

    안녕하세요.
    F1, F2, F3, F4, F5 행렬이 잘못 나와있어서 말씀 드립니다.

    F1 = o(7,5), F2 = o(8,6), F3 = o(7,13), F4 = o(8,13), F5 = o(9,13)
    o는 오메가 뒤집어 놓은 거구요.

    이래야 맞게 나올 것 같은데요. 바쁘시지 않으시면 확인 부탁드립니다.

    • BlogIcon PinkWink 2012.10.19 12:45 신고

      앗 그렇던가요?
      저도 너무 바빠 확인할 시간은 없는데...
      식을 모아 역산하면 될듯합니다.
      그리고, 저도 자주 out of memory를 만납니다만,
      주로 확인해보면, 제가 실수했던 부분들이더군요.
      혹은 lmi가 해를 찾지 못하던지요.

  3. 뉴뉴 2012.10.11 20:46 신고

    덧 붙여서 위의 lmi를 돌리려고 하니
    out of memory라고 뜨면서 진행이 안됩니다.
    어떻게 해결하셨는지요??
    제 컴은 윈7 32비트에 4기가 램을 꽂았습니다. 3.2기가 인가로 나오겠네요...

  4. SWjeong 2012.12.07 06:24 신고

    안녕하세요 저는 쿼드로터를 공부하고 있는 제어과 학부생입니다.
    자세제어는 PID제어를 통해 구현을 했었는데 이제 위치제어를 하려고 합니다.
    위 포스트의 내용은 한 일주일 정도 논문들 참고해가며 공부하니까 대충 어느정도 이해는 가는데요,,
    MATLAB으로 LMI 를 푸는 방법을 잘 모르겠습니다. 첫번째 LMI는 A와 B행렬이 둘다 i번째 행렬이라 풀 수 있을 거 같은데요, 두번째 LMI에서 i,j번째 행렬들을 어떻게 넣어야 하는지 모르겠습니다 ,,,
    혹시 괜찮으시면 관련 m파일을 보내주실수있을까요?,,ㅠ 안되시면 방법을 알려주시면 정말 감사하겠습니다.
    제메일은 jungsangwuk@gmail.com 입니다.

    • BlogIcon PinkWink 2012.12.11 11:06 신고

      저는 그냥 무식하게 LMI Editor를 사용했습니다.
      에디터를 쓰면, i,j에 대해 일일이 입력하는 번거로움이 있는데요.
      이것은 다시 eval과 disp명령을 사용해서 에디터에 입력할 명령을 미리 생성하고, 그로부터 Editor를 통해 입력했습니다.
      무식하고, 단순한 노가다성 방법입니다.

  5. SWJeong 2013.03.08 19:36 신고

    안녕하세요~ 전에도 질문드렸던 학생입니다.
    위의 쿼드로터 동역학 방정식은 요축 각도가 항상 0도로 고정되있는 상태로 가정되있는것 같은데요
    아무리 요축제어를 한다고 해도 요축이 정확한 0도를 항상 유지하고 있기는 힘들것 같은데
    저렇게 실제 구현해도 가능할까요??

    • BlogIcon PinkWink 2013.03.09 11:39 신고

      뭔가 오해가 있으신듯합니다. 저는 yaw에 대한 부분도 제어를 하고 있습니다. 미분방정식에서도 yaw성분을 반영하고 있으며, 설계된 제어기의 시뮬레이션 결과에서도 3도 틀어진 yaw를 제어하고 있음을 보이고 있습니다.

    • SWJeong 2013.04.11 15:13 신고

      아 제가 말한것은 요축 자세에 대한 제어가 아니라

      x y 축에 대해 이동할 때 yaw축이 틀어져 있을 때 롤과 피치만으로 제대로 이동할 수 없을 것 같아 말씀드린것입니다.

    • BlogIcon PinkWink 2013.04.11 15:57 신고

      비행체에 고정된 좌표계를 사용하고 있으니, yaw등을 바로 잡고 추정하면 되고,
      절대좌표계에서 x축 진행을 시키고자 할때, 자세가 틀어져 있어도, 좌표변환을 통해, 각 상태들에 알맞은 추정값을 인가하면 됩니다.
      뭐 이러니 저러니 해도, 시뮬레이션에서만 수행했을 뿐이었습니다.ㅠㅠ
      실제 제작도 했어야하는데, 당시엔 이것저것 핑계가 많았죠..ㅠㅠ

    • SWJeong 2013.04.11 16:31 신고

      그렇군요,,, 사실 위와 비슷한 방법으로 쿼드로터 개발이 거의 완료단계입니다.
      저희는 실내에서 쿼드로터 위치제어 하는것을 목표로 하고 있는데요
      10cm정도 오차로 위치제어가 되고 있습니다. ^^
      그동안 많은 도움 얻었습니다. 감사합니다.^^
      아래 주소는 저희 프로젝트 동영상입니다 ^^
      http://youtu.be/e2WNNn_23qs

    • BlogIcon PinkWink 2013.04.11 17:21 신고

      네.. 구경하고 왔습니다.
      좋으네요...^^
      당시에 전 실제 구현을 못했는데 말이죠^^
      살짝 부럽습니다.^^

  6. 2016.03.24 13:39

    비밀댓글입니다

  7. 석사 2018.04.16 19:25 신고

    맨 위의 좌표계 적혀 있는 사진 퍼가서 사용해도 괜찮을까요?