본문으로 바로가기

이제 연재는 좀 참을려고 했는데 우연한 기회에 세미나를 할 일이 생겨 자료를 만들어서 또 연재를 시작해 볼까 합니다.^^ 이번에는 간단한 시스템을 가지고 라그랑지 방법을 이용해서 동역학 모델을 만들고, 제어기도 설계해보고, 또 뭐 이것저것 건드리면서 놀아보는 연재입니다.

동역학 모델 구축 - 시스템 고려하기 !

여러가지 시스템이 있겠지만, 설명을 위해서는 역시 좀 간단한게 필요하겠죠...^^ 그래서 위와 같은 진자 시스템을 생각해보겠습니다. 회전하는 중심축에는 DC-모터도 하나 장착되어있는 걸로 하죠. 단지 라그랑지 방법에 대한 설명이기 때문에 상당히 간단하게 설정해 둡니다.^^ 이제, 진자의 위치벡터(r)를 잡을 수 있겠죠. 기준 좌표축의 원점이 진자보다 위에 있기때문에 j-벡터쪽 성분이 '-'부호입니다. 

에너지에 대해 고려하기 !

위에서 잡힌 위치벡터를 미분해서 속도벡터(v)를 구해둡니다.

여기서, theta도 시간에 관한 함수이기 때문에 미분해야할 함수라는 점만 유의하시면 됩니다. 이제 운동에너지를 구해야하는데요. 운동에너지도 두 종류가 있습니다. 그 중 하나가 병진운동에너지인데요. 병진운동은 직선방향의 운동을 말하는 것으로, 방금 구한 속도벡터를 이용합니다. 고등하교? 중학교? 때 배운 운동에너지 공식을 그대로 사용하죠. ^^

그리고, 회전운동에너지를 찾습니다. 위의 예제로 다룰 시스템에서는 회전운동을 하는 것이 진자 뿐입니다.

이제 위치에너지를 고려하면 되는데요. 

위치벡터의 중력방향성분만 생각하면 됩니다. 위치에너지가 mgh라는 공식을 가지죠??^^

라그랑지 방정식 (Lagrange Equation) !

라그랑지 방정식을 구하기 위해서는 먼저 라그랑지안(lagrangian)을 찾아야합니다. 라그랑지안은 전체운동에너지에서 전체위치에너지를 뺀것입니다.

그 라그랑지안을 이용해서 위의 라그랑지 방정식에 대입해서 풀면됩니다. 라그랑지 방정식이 도출되는 과정은 헉.. 저도 잘 모릅니다. (블로그에서 누차 밝혔지만, 전 기계전공이 아니라 제어공학이 전공입니다.ㅠㅠ) 여기서, eta는 시스템의 상태로, 우리는 꼴랑 theta하나 있습니다.

이렇게 구할 수 있죠. 마지막 시간에 관한 미분마저 수행하면

이렇게 됩니다. 상태가 하나만 잡히다보니, 라그랑지 방정식으로 푼 결과가 바로 끝이네요. 그래도 외력부분에대해서 이야기해야죠. 다음번 글에는 DC모터를 외력으로 다뤄보겠습니다.^^


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2010.08.09 13:04 신고

    새롭게 연재하시는군요,... 잘 따라갈라나 모르겠네요..

    • BlogIcon PinkWink 2010.08.09 15:38 신고

      이와같은 글은 관심있는 분만..
      아니.. 수준이 좀 낮아서
      관심있고싶은분만 보는 글이랍니다..
      (사실.. 제가 지식을 정리하는 글이라는게 더 맞는 이야기지요...ㅠㅠ)
      항상.. 댓글달기 어려운글만 골라 포스팅하는 죄스런 마음이 있답니다..^^

  2. BlogIcon 아이미슈 2010.08.09 17:58 신고

    또 어려운거 하시는군요..ㅎㅎ
    그저 구경만해야겠지요..

  3. BlogIcon boramina 2010.08.09 18:24 신고

    이런 포스팅이...놀아보는 연재라는 거죠?ㅎㅎ
    다른 분야의 것이니 어려워보이는 게 당연하지만 공학 전공하는 분들, 정말 대단한 것 같아요.

    • BlogIcon PinkWink 2010.08.09 18:30 신고

      저는 boramina 님의 블로그를 보며 한숨을 짓는답니다...
      나는 왜 여러 나라를 여행할 용기가 없었을까.. 하고 말이죠^^

  4. BlogIcon 아고라 2010.08.10 12:31 신고

    이렇게 어려운 거 하시려면 에어컨을 쌩쌩 ~ 틀어놔야 하지 않을까요?
    저같으면 머리에서 김이 모락모락 나다가 끝내 타버릴 것 같은. ^^;

  5. 재오리 2010.08.10 12:49 신고

    오옷 또다른 연재이군요ㅋ. 언제나 잘 배우고 갑니다. DC모터 모델링 부분도 잘 좀 알려주시면 좋겠어요ㅋ

  6. 돼지돌이 2011.04.07 19:06 신고

    정말 정리가 잘되어 있어서 그러는데요 ^^ PDF나, 저장가능한 파일로 만드실 의향은 없으신지;;;

  7. 학생2 2013.01.18 09:04 신고

    F 라는 물리량에대한 정확한 설명도 있었으면 좋을것같네요.

  8. 학생입니다 2013.04.12 13:46 신고

    안녕하세요, 현재 관련과목을 수강하는 학생입니다. 보다가 질문이 있어 글남김니다. 위의 진자 운동의 경우 병진운동만 존재하는 것이 아닌지요. 진자가 x,y 각방향 속도를 가지고, 원점을 기준으로 회전운동 한다고는 볼수 있으나, 진자 자체가 회전하는것ㅡ 굴림운동과 같은.ㅡ은 아니므로 회전운동에너지가 필요없이 추가된것 처럼보입니다.

    • BlogIcon PinkWink 2013.04.15 09:01 신고

      무슨 말인진는 잘 모르겠습니다만,
      진자만 보죠...x-y축으로의 이동이 존재하죠?
      그리고, 진자의 회전도 존재하지 않나요?
      그러므로, 회전 및 병진운동을 모두 고려한 것입니다.
      만약 회전이든 병진이든 고려하지 않아도 되는 것이었다면
      고려해서 식을 유도하다보면 없어져 버리더라구요.
      아무튼.. 전 그렇게 생각합니다.^^
      저도 동역학을 전공한 사람은 아니니까요^^

  9. 공대핵 2013.11.08 09:22 신고

    matlab으로 라그랑지안 방정식을 구현해야 하는데요 어떻게 해야 하는지 설명해 주실 수 있으신가요?

    • BlogIcon PinkWink 2013.11.08 15:46 신고

      라그랑지 방정식을 얻기 위한 과정을 손으로 직접 풀어보시면 꽤 정형화된 일종의 공식처럼 나타납니다. 그렇다면 프로그램으로 짤수 있다는거죠.
      일단 MATLAB의 문자연산을 할 수 있어야합니다. 변수에 대해 문자연산을 통해 미분, 편미분을 수행해야하니까요.
      그리고, 문자열을 핸들링할 수 있어야합니다. 각 연산을 통해 다수의 방정식을 합치고 치환하는 작업들이 수행되니까요.
      그정도면 라그랑지 방정식을 충분히 풀수 있는 코드를 짤 수 있을듯합니다.
      예전에 저도 제 블로그에 있는 대부분의 동역학 모델은 손으로 구했지만, 확인을 위해 MATLAB에서 코딩을 해서 확인했습니다.

  10. 음.. 2014.05.27 16:47 신고

    이 경우에 이미 운동에너지가 고려되었는데 회전운동에너지가 추가로 고려되었군요.. 회전운동에너지 항을 빼줘야 합니다.

    • BlogIcon PinkWink 2014.05.27 19:43 신고

      네 저도 뭐 그리 잘 아는건 아닙니다만
      고려할 운동 에너지는 병진운동에너지와 회전운동에너지의 합산이라고 알고 있어요
      http://www.pinkwink.kr/327
      혹시 아니면 다시 알려주세요~~~^^

    • BlogIcon 초피 2015.03.11 15:06 신고

      글쓴이께서 point mass가 아니라고 말해주시면 될꺼 같습니다 (뭐 그냥 J라고 inertia를 명기해주셨으니 큰문제는 아니지만 둥근 점이 point mass처럼 생겨서요.). point mass일경우 계산 기준이 mass의 origin이라면 회전운동에너지가 0이 됩니다. 반대로, 진자의 root가 origin이라면, 병진 운동에너지가 0이됩니다.

    • BlogIcon PinkWink 2015.03.11 18:23 신고

      아무래도.. 제가 동역학이 탄탄한 베이스가 없는 비전공이다 보니 용어의 깔끔한 정의를 하지 않아서 그런가봅니다^^
      뭐 ... 그래도 알아들을 만큼 설명한 것이 아닐까 했는데.. 혼선이 있나봅니다. ㅎㅎ
      도와주셔서 감사합니다^^

  11. 행방불명 2014.08.24 22:26 신고

    진자운동부터 설명해주시니깐 더 이해가 쉽네요 ^^ 설계회사를 그만두고 뒤늦게 학부때 관심있었던 제어에 입문한 늦깎이 대학원생입니다. 학부생들과 함께 밸런싱로봇 연재를 통해 조금씩 배워가며 만들어가고 있습니다. 이렇게 좋은 블로그를 만들어 주시고 질문도 친절히 대답해주셔서 항상 감사드립니다.

    • BlogIcon PinkWink 2014.08.25 04:41 신고

      네 대단하십니다 ^^ 그리고 항상 느끼는거지만 좀더 열정적인사람이 좀 머리는 아플지몰라도 원하는데로 될때가 많더라구요 ㅎ
      아무튼 감사합니다 ㅎ

  12. 밥이대세다 2015.07.02 10:31 신고

    안녕하세요! 벨런싱 로봇을 만들고자 찾아 다니다가 여기를 들르게 되었네요^^
    혹시 너무 늦어서 답이 달릴까 합니다만 ㅎㅎ
    라그랑지안을 푸시는데 있어서 왼쪽항에 F theta 라는 항이 있자나요??
    혹시 모터를 달지 않는다면, 저 항은 0이 되는 것인가요??
    도립 진자를 풀고 있는데, 혹시 저기서 모터가 아니라, 중심축이 x축 방향으로 움직이다면, 힘은 어떻게 될까요??
    너무 중구난방한 질문이네요;; 부탁드립니다!

  13. SJ 2015.11.12 23:06 신고

    일단, 님의 휼륭한 글에 감동 합니다. 그런데 옥의 티라고 하할까? 내용에 오류가 점 있네요.
    운동에너지 구하는 부분에 있어 T 의 회전 운동 에너지를 추가로 고려 했는데,
    그 에너지는 이미 1/2 m (v * v) 계산 하면서 추가 된 1/2 m(lw)^2 속에 들어가 있네요.
    그래서 더블 카운팅이 되어 버렸군요^^
    그런데 님의 다른 포스트에선 제대로 잘 하셨던데요? --> http://pinkwink.kr/227

    • BlogIcon PinkWink 2015.11.13 02:09 신고

      아.. 그런가요?.. 저런.. 당시에 여기저기 비슷한 글을 생산하고 또 동역학이라는 아이한테 치이다가 혼돈헀나보네요.. 지금은 본문을 읽을 시간이 없어서 검토는 못하고.. 그저 감사하다는 댓글을 다시 남깁니다. 그나저나 예전 글들 중에 창피한 내용들은 좀 정리를 해야할텐데.. 이리저리 피하네요...
      아무튼.. 소중한 지적 감사합니다.^^