밸런싱 로봇 (Balancing Robot) 만들기 연재
1. 동역학 구축 (1) [바로가기]
2. 동역학 구축 (2) [바로가기]
3. 동역학 구축 (3) [바로가기]
4. 기구부 구성 및 모터 파라미터 측정 [바로가기]
5. 제어기 설계 및 MATLAB을 이용한 시뮬레이션 [바로가기]
6. 밸런싱 로봇 만들기 [바로가기]



요즘 너무 머리가 복잡하고 일손이 잡히질 않습니다. 왜냐구요? 먹고살 궁리때문이지요. 그러서 자꾸 살만 찝니다. 응? 먹고살 궁리를 하는데 왜 살찌냐구요? 음... 먹고살 궁리를 하다보니 스트레스 받아서 야밤까지 안자고 있다가 새벽에 술먹거든요... 응? 먹고살 궁리하는데 술먹을 돈은 어디 있냐구요??? 이제 다 떨어져 갑니다. ㅋㅋㅋ

음 본론으로 들어와서 밸런싱로봇을 만드는 걸 연재하다가 갑자기 레고 마인드스톰으로 넘어와버렸네요. 뭐 저의 나쁜 머리탓입니다만...ㅠㅠ 직접 공부하는 것이나 요즘 준비하는 논문과 관련없이 별도의 연재를 다루는 것이 힘들다는 것을 뼈저리게 느끼는 중입니다. 뭐 그래도 하기로한 연재니 계속 하는 것이고, 또 이것도 저의 공부가 될테니 말이죠.

하여간, 지난번에 제가 레고 마인드 스톰의 기술문서의 내용중 동역학 유도부분이 이상하게 제가 한 거랑 안맞다 [관련글] 라는 이야기를 했었는데요. 찾았습니다. 원인은 저한테 있더군요. ㅠㅠ


바로 위의 항이었지요... ㅎㅎ. 희한하게 손으로 푸는 경우 자신이 틀린곳을 찾기가 좀 어렵죠. (응? 저만 그런가요???) 하여간 





그래서 MATLAB의 힘을 빌렸습니다. 예전에 크레인 제어기 설계를 위해서 동역학 유도할때, 하도 수식이 복잡해서 MATLAB으로 유도하기 위해 짜놓았던 코드가 있거든요. 그걸 조금 뜯어 고쳐서 밸런싱로봇에 적용했습니다.


저게 그 결과입니다. (언제 그 MATLAB으로 동역학 유도라는 주제로 연재를 하고싶어지는 군요.. ㅋㅋ) 하여간, 그 결과를 한글에서 정리했습니다.


저 부분은 Lagrangian인데요. 음... 마지막항에서 제가 손으로 유도한것이 잘 못 되었음을 확인했습니다. 그리고


theta의 라그랑지 방정식은 제일 위의 레고 문서와 제가 손으로 유도한 것과 마지막으로 MATLAB으로 유도한 것이 동일합니다.


음 phi의 라그랑지 방정식도 셋 다 동일하구요.


ㅎㅎ 그 문제의 psi의 라그랑지 방정식은 레고 문서와 MATLAB의 결과가 같고, 제가 손으로 한 것만 다르더군요. 큭...>.< 뭐가 잘못되었는지도 확인했습니다.

결국, 제가 잘 못된 것이더군요... 쩝.. 뭐 그래서든 이래서든 하여간 


요게 맞다.. 라는 것을 알게 되었습니다. 이제 위 식 각 우변의 Generalized Force라고 흔히 부르는 것을 정의해 줘야겠는데요.


theta를 움직이는 힘은 두 바퀴의 합력이 될 것이고, psi를 움직이는 힘은 두 바퀴를 움직이는 힘의 반력이 있을 것입니다. phi를 움직이는 힘은 비례식이 적용된 상태에서 두 바퀴가 내는 힘의 차이가 될 것입니다. 비례식이 적용되는 부분에 대한 설명은 이전에 레고 문서를 처음 소개할때 했었구요.[관련글] 위 힘에서 모터에 인가하는 전류가 입력으로 되어있는데 이는 일반적인 모터 사용에서 힘이 좀 듭니다. 통상 마이크로 프로세서를 통해서 쉽게 DC모터를 다루는 방법이 PWM이니까요. 그래서 전압으로 바꾸도록 하지요.



일반적인 DC 모터의 경우


위의 식을 따릅니다. 여기서 보통 모터 내부 인덕턴스는 아주 작다고 보니까


로 간략히 표현할 수 있겠습니다. 여기서, Kb는 DC 모터의 back EMF 상수이고, Rm은 DC 모터의 내부 저항입니다.

위 식을 대입해서 힘을 다시 표현하면


이 됩니다. 여기서 f_w는 바퀴와 바닥과의 마찰 계수이고, f_m은 모터와 바디사이의 마찰계수입니다.



이제 레고 문서 따라하기는 그만하고, (아 이후 포스팅에서 언급은 계속하겠습니다.) 이제 라그랑지 방정식까지 나타났고, 힘의 관계도 잡았으니, 다음부터는 원래 제가 좋아하는 스타일로 진행하도록 하겠습니다. 

http://pinkwink.kr/trackback/333 관련글 쓰기
  • 건뚱이 2010/06/20 04:59

    잠이 안와서 포스팅한거 읽엇습니다. 수식이 마이복잡 하네요. 빨리 따라가야겟습니다. 좀자다가일어나서 화이팅 해야 겟습니다. 행님도 주무시고 나중에뵙겟습니다. 아이폰으로 사길잘햇습니다

  • 라라윈 2010/06/20 09:18

    오오.. 외계어같지만 문양으로 보기에도 아름다운 수식이 한가득이네요.. ^^
    저도 이제 한 학기 남았는데, 학기 마무리와
    나중 생각을 하노라면, 뾰족한 해법이 나오는 것도 아니면서
    살만 찌네요... ㅜㅜ

    • PinkWink 2010/06/20 15:00

      헉.. 맞아요맞아요... 희한하게 살이쪄요.. ㅋㅋㅋ^^

  • 탐진강 2010/06/20 09:57

    항상 미래는 불안하게 만들기도 합니다.
    그렇지만 자신감을 갖고 꾸준히 정진하다보면 희망찬 길이 보이겠지요.
    힘내세요

    • PinkWink 2010/06/20 15:00

      넵.. 안그래도.. 푹 자고.. 힘낼려고 하는 중입니다.^^

  • 핑구야 날자 2010/06/21 00:18

    EBS의 로봇대전인가... 가끔보는데 요즘 PinkWink님이 생각이 납니다.

    • PinkWink 2010/06/21 02:17

      아.. EBS에서 그런 프로를 하는군요.. 한번 봐야겠습니다..^^

  • 바람처럼~ 2010/06/21 15:01

    먹고 살만한거 생각 다 하시면 저도 좀... 굽신굽신 ㅠ_ㅠ

    • PinkWink 2010/06/21 15:32

      ㅋㅋ... 해결이 되면... 적금넣고 마다가스카르로 떠버릴겁니다. ㅋㅋㅋ

  • 아이미슈 2010/06/21 16:46

    휴..여기 먹고살 궁리로 자꾸 살만찌는 1인 추가요!!

    • PinkWink 2010/06/21 16:47

      헉.. 역시 먹고살 궁리하면 살찌는 것이 맞는 모양입니다. ㅋㅋㅋ^^

  • 아고라 2010/06/21 17:17

    믿거나말거나 제가 어렸을때 로봇장난감조립 넘넘 좋아했는데...'창조'단계로 넘어가려면 저 정도는 되어야한다고 생각하니..진작에 포기하길 잘했군요. 흐흐흐. 제눈에는 저 수식들이 모짜르트의 아름다운 악보로 보입니다. 글씨 넘 멋지세요. (뭔뜻인지는모르니까그냥보이는것만찬양하라!)

    • PinkWink 2010/06/21 17:16

      헉 .. 아닙니다. 믿습니다.. 그리고.. 일반적으로 로봇을 만들때 저렇게 수식을 생각하지 않는 경우가 더 많습니다.^^.

  • 재오리 2010/06/22 09:42

    MATLAB으로 동역학 유도라는 주제로 간단한 포스팅이라도 부탁드립니다. 굽신굽신 ㅋ

    • PinkWink 2010/06/22 09:58

      그러게요.. 필요한 분들이 있으실것 같은데..말이죠..
      의외로 글로 작성하기가 쉽지가 않네요^^

  • 야옹~ 2010/09/01 19:44

    블로그 잘 보고있습니다. 위 모터 관계식이 다음과 같이 되어있는데,

    L_m*dot_i = v + K_b*(dot_psi-dot_theta)-R_m*i

    아래와 같이 감속비 n이 포함되어야하지 않나요?

    L_m*dot_i = v + K_b*n*(dot_psi-dot_theta)-R_m*i

    감속비가 왜 고려되지 않았을까 의아해서 여쭤봅니다.

    • PinkWink 2010/09/02 13:01

      네 그렇습니다. 실제로는 감속비가 고려되어야합니다. 그러나 당시 모터 구매를 담당했던 후배가 기어비가 고려된 역기전력상수라고 알려주어서 감속비는 고려하지 않는게 맞겠군이라고... 생각을 했습니다. 그런데 약간 의구심이 드네요. 다시 확인을 해봐야겠습니다. 왜냐면, 그게 제가 이 동역학 유도의 원본이 되는 마인드스톰의 문서를 확인해보니 거기도 고려하지 않았네요. 제가 단순히 마인드스톰의 문서를 검증없이 따라간건지.. 아니면 방금 말씀드린 이유에서였는지 확신이 갑자기 서지를 않는 군요... 지적에 감사합니다. 확인해보도록 하겠습니다.^^

    • 야옹~ 2010/09/02 14:26

      아~~ 빠른 답변 감사드립니다. ^^ PinkWink님 블로그에서 많은 도움을 얻고 있습니다.

    • PinkWink 2010/09/02 15:21

      오히려 명쾌하게 처리하지 못해 창피하네요
      지금은 졸업준비중이라 너무 바빠서... 시간이 좀 걸릴듯합니다.

  • Hollyho 2010/11/22 15:24

    안녕하세요.. 블로그를 통해서 많은 것을 배우고 있는 1人입니다.

    일반적인 DC모터의 경우 다음의 식(Li = v+K_b(dot(psi)-dot(theta))-Ri)을 따른다고 하셨는데요. 이런건 어디서 정보를 얻으시는지..ㅡㅜ
    일반적이라고 하는 것의 정보도 알고 싶습니다. 이 식이 DC모터의 역학모델을 뜻하는것인지도요..;; 답변 주시면 감사해요

    • PinkWink 2010/11/29 11:43

      일반적...이라는 것의 정보라... 음... 그냥 일반적인 건데요..ㅠㅠ
      Dorf의 Modern Control System이라던지
      각종 인터넷상의 자료들이나
      MATLAB의 기술문서들
      혹은 DC를 그냥 간단히 구현하는 여러 논문들이지요...ㅠㅠ
      그리고 말씀하신 식은 모터의 전압에 대한 토크식입니다.

  • 서형규 2013/07/18 23:44

    안녕하세요~
    라그랑지안 계산 식 잘 보고 있습니다!!!
    다름이 아니라 저도 손으로 풀면서 보고 있는데요~ 저도 PinkWink 님 처럼 psi 텀에서 똑같이 맞질 않습니다.ㅠㅠ
    MRLsinψ*dθ*Dψ 이텀이 저도 생겼는데요...
    몇번을 다시 계산해도 이 텀이 계속 생깁니다.. ㅠㅠ
    어디서 잘못 계산했을까요?? ㅠㅠㅠ

    • PinkWink 2013/07/19 09:09

      앗... ㅎㅎ 2010년에 작성한 내용이었으니, 그때 기억은 저도 가물가물하죠.. ㅎㅎ
      그러나 확실한건 단순실수였는데요. 식전개에서 발생하는 실수였습니다.
      왜냐면, 제가 만들었던 MATLAB의 문자연산을 이용한 라그랑지 방정식에서 동역학을 만드는 함수가 있는데, 그걸로 풀면 올바른 결과가 나왔거든요.
      그래서 다시 확인했던거죠.
      오래전이라 지금 다시 유도하면 좋겠지만, 그럴려면 저도 시간이 필요한데 그럴 시간이 요즘 저한테 허락되지를 않네요.^^

    • 서형규 2013/07/19 09:48

      알겠습니다~ ^^ 한번 그냥 쭈욱 풀어볼게용~ ㅋㅋ
      혹시 뒤에 나오는 모든 수식들 손으로 전개해서 정리하신건가요??
      각 angle에 대한 2차미분 식으로 정리하신게 꽤 길던데...
      State Space Equation 으로 만드려고 하는데 수식의 길이를 보내까 전개할 엄두가 안나네요 ㅠㅠ

    • PinkWink 2013/07/19 10:45

      ㅎㅎ 그럴리가 있나요^^ 딱봐도 기계가 전개한거죠.. ㅎㅎ
      시스템이 선형화가 가능하고 선형방정식 자체에 관심이 있는경우는
      라그랑지 방정식 단계에서 선형화를 시도하고 손으로 전개했던 적이 많습니다.
      그러나 그 결과가 복잡하거나, 혹은 비선형에 일단 관심을 가지거나, 혹은 좀 귀찮을때는,
      MATLAB으로 프로그램을 짜서 유도 및 전개하고, 다시 MATLAB의 문자 치환 명령등을 이용해서 HWP의 수식 형식에 맞추고, 그걸 복사해서 HWP에 넣고, 일부만 손으로 좀 보기 좋게 만져주고 마무리하는 습관을 가지고 있답니다.^^
      가끔은 스트레스 해소 삼아서 논문을 뒤적거려서 동역학 MATLAB에서 제가 작성했던 코드랑 돌려보고 결과가 같으면,
      다시 손으로 풀어서 또 결과가 같은지 확인하면서 즐거워했던 기억도 살짝 나는데요.. ㅎ^^

    • 서형규 2013/07/23 22:08

      넹넹~ ㅋ
      열심히 풀어보겠습니다!!
      감사합니다~ ^^

    • PinkWink 2013/07/24 11:46

      네 좋은 성과 있으시길 바랍니다.^^

  • 서석현 2014/05/29 17:51

    Generalized Force 식은 어디서 구해낸 거죠 ? ? ?

    • PinkWink 2014/05/29 19:07

      아직 고려하지 않은겁니다.
      그냥 일반적인(generalized) 힘이 여기 있다는 의미이구요.
      그건 중력일 수도 있고, 모터에 의한 토크일 수도 있습니다.

  • 서석현 2014/06/08 21:18

    음.. 위에서 F세타 F프사이 F파이 의 일반적인 힘의식으르 정의해 주셨잖아요 . 거기에 일반적인DC모터의식에서 i 값을 도출하여 대입을 한것이구요.
    일반적인 힘 F값 식이 어디서 나왔는지잘 이해가안되네요;; 알려주세요.. ㅜㅜ

    • PinkWink 2014/06/09 08:29

      그건 모터의 식입니다. 움직이는 각도의 이름이 다르니 다른 변수가 사용되었을뿐 형태가 동일하자나요.... 모터의 식이랍니다. 일반적인 모터의 식은 DC Motor Dynamics라고 검색하시면 나타납니다. 제 블로그에도 소개했던적이 있구요^^