본문 바로가기

Theory/ControlTheory

Cart Pendulum의 동역학 유도


이미 예전에 다루었던 Inverted Pendulum과 그냥 Pendulum은 같은 기구 구성을 가지고, 그래서 동역학도 거의 같습니다. 사실 비선형을 유도한다음 선형화 동작구간만 달리해주면 선형방정식은 그냥 만들어 집니다. 이전에 Inverted Pendulum을 다루면서 동역학 유도부분이 좀 약하지 않았나 하는 생각에 Cart형 Pendulum의 동역학 유도를 다뤄보겠습니다.


   Cart Pendulum (카트형 역진자) 개요 !  
 



위와 같은 카트형 펜들럼을 보겠습니다. 카트와 바닥사이의 마찰과 진자의 고정축사이의 마찰까지 고려되어있습니다. 이번엔 라그랑지방법으로 동역학을 유도해 보기로 하죠. 그럴려면 시스템의 운동에너지와 위치에너지를 고려해 주어야합니다.

   시스템의 운동에너지와 위치에너지 !  
 


 
카트는 수직방향으로는 기구적으로 막혀있어서 움직일 수가 없고, 수평방향 즉 x방향의 운동만을 하니까 위처럼 운동에너지를 잡아줄 수 있을 것입니다.

 
이제 폴의 운동에너지인데요. 좀 복잡해요.^^. 폴은 카트의 고정점에서 움직인 각도를 theta라고 할때, 무게 중심점의 x축 y축 성분을 위에 구해두었습니다.일단 그건 그렇다 치고 폴의 운동에너지는

 
위 처럼 무게중심점의 속도벡터를 이용해서 병진운동성분이 있구요. 회전하는 운동을 하기 때문에 회전모멘텀이 있다는 것을 알아두어야합니다. 각속도 omega를 이용에서 표현할 수 있습니다.

 
속도 벡터를 구하고 싶다면, 먼저 위치벡터를 구해서 시간에 관해 미분해주면 되겠지요.


위 그림에서 보면 폴의 무게중심점의 x축 방향과 y축방향의 거리 성분을 위치벡터로 각각 표현할 수 있게 될것입니다. (삼각함수라는 것의 소중함이죠^^)

 
그러면, 위와 같이 속도벡터를 구할 수 있게 됩니다. 이제 폴의 운동에너지를 구할 수 있겠군요.

 
속도 벡터를 대입하여 좀 복잡하지만 위와 같이 구할 수 있습니다. 


그러면 위처럼 시스템 전체의 운동에너지를 도출할 수 있습니다. 


운동에너지에 비하면 위치에너지를 정말 쉽습니다. 카트는 위치에너지가 없거든요. (기구적 차원에서) 그러니, 위 식처럼 폴의 y측 성분에 중력만 고려해주면 되겠습니다. 

   라그랑지 방정식 !  
 


위 처럼 라그랑지 방정식을 구할 수 있네요. 운동에너지와 위치에너지를 모두 구했으니 대입만 해주면 되겠습니다.^^

 
유명한 라그랑지....^^. 좌변의 ksi는 generalized force입니다. 우리가 고려하는 것은 x와 theta이므로

 
위와 같이 되겠습니다. 분명 마찰력과 알수없는 어떤 외란이 있겠지요.

 
위는 x축을 고려하는 것입니다. 위치에너지는 없었으니 뭐 신경쓸것이 없고, 편미분과 미분을 연달아 계산하는 것만 조심하면 됩니다.

 
다음은 theta를 고려하는 부분이지요.

 
이제 비선형 방정식이 도출되었습니다. 여기서 ddot_x와 ddot_theta에 대해 다시 정리해야합니다만... 전 귀찮아서 여기까지....ㅜ.ㅜ 대신 추가로 선형화까지는 한번 가보도록 하지요.... 

   선형화 !  
 

선형화를 할 때는 동작구간에 대한 설정이 필요합니다. 여기서 theta=0로 선형화하면 pendulum이 되고, theta = pi로 선형화하면, 바로 inverted pendulum이 됩니다.


위와 같이 동작구간을 잡고 테일러급수전개를 수행하면 되지요. 일차항이 나올때까지만 하면 됩니다. 왜냐구요? 선형(linear)이니까요....^^ 


끝났네요. 물론 다시 말씀드리지만, 두 번 미분한 항만 우변에 둬야하는데... 귀찮아서 안하는겁니다. 어디 발표하시거나 할때는 꼭 정리하셔야합니다. 혹시 이 자료를 리포트로 그대로 긁어서 제출할까바 걱정되서 하는 말은 절대 아닙니다^^.

 
초기치가 0라고 하고, 라플라스변환을 수행합니다. 뭐 다 상수들이니 어려울 것은 업지요.

 
그리고 정리하면 드디어 위와같은 아름다운 특성방정식이 나오네요...


이 자료는 Andrew K. Stimac이라는 분의 "Standup and Stabilization of the Inverted Pendulum"이라는 1999년 MIT공대에서 발표한 논문에서 필요부분을 발췌 정리한 것입니다.


반응형
  • BlogIcon White Rain 2009.11.06 18:58

    열심히 공부할게요^^
    추운 날씨 감기 조심하시고 늘 건강하세요.

  • BlogIcon 엘고 2009.11.06 20:01

    운동에너지를 얻는게 쉬운게 아니군요^^
    즐거운 시간되세요~~

  • BlogIcon 아고라 2009.11.07 09:01

    흐흐. 정말이지 핑크윙크님이 아니면 제가 어찌 이런 프로페셔널 인텔리전트 컴플리케이티드 아카데믹한 곳에 댓글을 남겨보겠습니까. 기분이 좋네요. ㅎㅎ 미국도 감기/플루 유행입니다. 건강조심하세요 ~

  • BlogIcon gk 2009.11.07 09:11

    외계어 같아요.......ㅠㅠㅠㅠㅠ

  • BlogIcon 바람처럼~ 2009.11.09 00:26

    정리해서 올리시기 정말 힘드실텐데 대단하세요!

  • 공상 2010.08.19 02:50

    감탄을 하면서 보고있는 한 공대생입니다.
    보다가 여쭤볼게 있는데요.
    너무 초보적인 거 같지만 용기내서 물어봅니다.
    f(x) - fx * dot_x + dx 중간에 보면 이 식이 나오는데요.
    이 식이 왜 나왔는지도 모르겠고, f(x), fx * dot_x, dx
    각각이 뭘 의미하는지도 잘 모르겠네요.

    • BlogIcon PinkWink 2010.08.19 14:31 신고

      f(x) - fx * dot_x + dx 에서
      f(x)는 카트의 바퀴(모터)에 의해 발생하는 힘이고
      -f_x*dot_x는 마찰력입니다.
      마지막으로 d_x는 알 수 없는 이유로 발생하는 외란입니다.

  • BlogIcon 아고라 2010.08.19 13:48

    아..저도 윗분님같은 질문을 해보고 싶습니다. ^^

  • 김인식 2010.12.03 00:52

    matlab과 dspace를 연계한 pendulum simulation을 구현해 보고 싶은 공학도입니다. 사실 matlab 프로그램을 접한지 얼마 되지 않아 비슷한 내용의 글들을 찾아보며 공부하던 중 님의 블로그를 찾아오게 되었습니다.
    제가 알고자 하는 부분 역시 cart pendulum 이거든요ㅋㅋㅋ
    하지만 저는 input을 voltage를 이용해서 pendulum을 구현해보고 싶습니다. 시간이 가능하시면 지식을 좀 나워 주실 수 있는지요^ ^ ;

    • BlogIcon PinkWink 2010.12.03 01:35 신고

      저의 보잘것없는 지삭을 나누는 것은 아무 문제가 없습니다.^^
      (나눠드릴 수 있다면..)
      그러나 지금은 시간이 허락하지 않습니다.
      현재 학위심사중이거든요...^^
      카트형 펜들럼의 역학방정식의 입력을 전압으로 둔것은
      http://pinkwink.kr/36
      에 있습니다.
      그런데.. dSpace를 사용해볼려는 목적에 펜들럼이 수단인가요?? 그게 아니라면... 펜들럼을 제어하는데 꼭 MATLAB이 실시간으로 들어갈 필욘 없는데요. MATLAB으로 구한 게인을 LabVIEW로 구현하는 분들도 많거든요.

  • dd 2011.06.17 16:45

    theta가 3에서 선형화 시키면 어떻게 되나요?

  • 공돌 2011.06.18 13:26

    안녕하세요 블로그에서 많은걸 배워가는 학생입니다.
    위의 선형화과정에서 ml*sin(theta)(dot_theta)^2이 사라지는 이유가 궁금합니다.

    • BlogIcon PinkWink 2011.06.19 08:40 신고

      sin(theta) = theta가 되니

      다시 적으면

      ml theta (dot_theta)^2 이겠네요.

      theta와 dot_theta 이렇게 상태 두개가 곱해져있는경우 테일러 급수전개로 확인해보시면 아시겠지만, '0'이 됩니다.

  • 공대생 2016.06.01 12:22

    라그랑주에서 theta 구할때 dL/dtheta 부분이 어떻게 유도 됐는지 잘 모르겠어요. 왜 m*l^2/2*(cos^2theta*theta'^2 + sin^2theta*theat'^2) 이 사라지는지 이해가 안돼네요 ㅠㅠ

    • BlogIcon PinkWink 2016.06.02 09:21 신고

      다시 수식을 유도할 여유가 없어서 오래전 기억을 더듬어 보면..
      아마 편미분과정에서 사라지지 않았나 싶은데요...