본문으로 바로가기

요즘 너무 머리가 복잡하고 일손이 잡히질 않습니다. 왜냐구요? 먹고살 궁리때문이지요. 그러서 자꾸 살만 찝니다. 응? 먹고살 궁리를 하는데 왜 살찌냐구요? 음... 먹고살 궁리를 하다보니 스트레스 받아서 야밤까지 안자고 있다가 새벽에 술먹거든요... 응? 먹고살 궁리하는데 술먹을 돈은 어디 있냐구요??? 이제 다 떨어져 갑니다. ㅋㅋㅋ 음 본론으로 들어와서 밸런싱로봇을 만드는 걸 연재하다가 갑자기 레고 마인드스톰으로 넘어와버렸네요. 뭐 저의 나쁜 머리탓입니다만...ㅠㅠ 직접 공부하는 것이나 요즘 준비하는 논문과 관련없이 별도의 연재를 다루는 것이 힘들다는 것을 뼈저리게 느끼는 중입니다. 뭐 그래도 하기로한 연재니 계속 하는 것이고, 또 이것도 저의 공부가 될테니 말이죠.

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

바로 위의 항이었지요... ㅎㅎ. 희한하게 손으로 푸는 경우 자신이 틀린곳을 찾기가 좀 어렵죠. (응? 저만 그런가요???) 하여간... 그래서 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은 모터와 바디사이의 마찰계수입니다.

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


댓글을 달아 주세요

  1. BlogIcon 건뚱이 2010.06.20 04:59 신고

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

  2. BlogIcon 라라윈 2010.06.20 09:18 신고

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

  3. BlogIcon 탐진강 2010.06.20 09:57 신고

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

  4. BlogIcon 핑구야 날자 2010.06.21 00:18 신고

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

  5. BlogIcon 바람처럼~ 2010.06.21 15:01 신고

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

  6. BlogIcon 아이미슈 2010.06.21 16:46 신고

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

  7. BlogIcon 아고라 2010.06.21 17:17 신고

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

    • BlogIcon PinkWink 2010.06.21 17:16 신고

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

  8. 재오리 2010.06.22 09:42 신고

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

  9. 야옹~ 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

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

    • BlogIcon PinkWink 2010.09.02 13:01 신고

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

    • 야옹~ 2010.09.02 14:26 신고

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

    • BlogIcon PinkWink 2010.09.02 15:21 신고

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

  10. BlogIcon Hollyho 2010.11.22 15:24 신고

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

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

    • BlogIcon PinkWink 2010.11.29 11:43 신고

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

  11. 서형규 2013.07.18 23:44 신고

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

    • BlogIcon PinkWink 2013.07.19 09:09 신고

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

    • 서형규 2013.07.19 09:48 신고

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

    • BlogIcon PinkWink 2013.07.19 10:45 신고

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

    • 서형규 2013.07.23 22:08 신고

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

    • BlogIcon PinkWink 2013.07.24 11:46 신고

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

  12. 서석현 2014.05.29 17:51 신고

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

    • BlogIcon PinkWink 2014.05.29 19:07 신고

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

  13. 서석현 2014.06.08 21:18 신고

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

    • BlogIcon PinkWink 2014.06.09 08:29 신고

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

  14. Majing 2015.04.27 01:20 신고

    F(phi)= 식을 구할때 알파와 베타를 대입해서 간략하신 부분에서 어떻게 간략화 하신건지 이해가 잘안돼네요;;
    dot_phi가 어디서 튀어나온건지도 잘모르겠구요 ... 알파와 베타를 대입하기 전에는 dot_phi항이 없는데 말이죠..

    그리고 F(theta) 와 F(psi)에 알파와 베타를 대입해서 간략화 하실때 theta_r , theta_l을 같다고 하시고 간략화
    하신거같은데 그이유도 설명해주시면 감사하겠습니다~

    • BlogIcon PinkWink 2015.04.27 12:56 신고

      이건 직접 손으로 유도해보면서 보셔야할듯합니다. 댓글로 설명하기 어렵습니다.
      그리고 theta는 theta_l과 _r의 평균값입니다. 그래서 그냥 theta를 사용해도 된다는 개념으로 접근한것입니다.

  15. 세그웨이 2016.03.23 18:29 신고

    좋은 글 너무 잘보고 있습니다.^^
    궁금한게 몇가지 있습니다.
    1. DC모터의 Generalized Force식에서
    K_t는 무엇을 의미하는 건가요? 모터관련 식 자체에 포함된 상수값인건 알겠는데 그것이 무엇을 의미하는지 모르겠습니다.

    2. 또 Genelized Force식에서, F_phi식이 어떤 비례식을 거쳐서 W/2R*(F_r-F_l) 인지 궁금합니다.

    3. 만약 저같은 경우 스텝모터로 사용할 생각도 있는데,, 이럴경우 스텝모터의 Generlized Force식은 어디서 구할 수 있는지도 알 수 있을까요?,,,,저는 주행이 가능한 밸런싱 로봇 제작을 계획중입니다. 로봇무게는 넉넉히 6kg 무게에 주행속도는 느려도 상관없는데요,, 어떤 모터가 더 좋을지 추천좀 가능하겠습니까? ㅜㅜ

    • BlogIcon PinkWink 2016.03.24 08:46 신고

      1. DC모터의 Generalized Force식에서 K_t는 무엇을 의미하는 건가요?
      ===> 토크 상수라는 아이입니다. 1A당 만들 수 있는 토크라는 의미입니다. 모터 데이터 시트에 나와있습니다.

      2. 또 Genelized Force식에서, F_phi식이 어떤 비례식을 거쳐서 W/2R*(F_r-F_l) 인지 궁금합니다.
      ===> 연재의 처음 글에서 다루었습니다.
      ( http://pinkwink.kr/326 )입니다.

      3. 만약 저같은 경우 스텝모터로 사용할 생각도 있는데,, 이럴경우 스텝모터의 Generlized Force식은 어디서 구할 수 있는지도 알 수 있을까요?
      ===> 스탭모터를 어떻게 적용할 지는 저도 안해봐서 잘 모르겠습니다.ㅠㅠ.

      도움이 되었는지 모르겠네요.. 좋은 성과 있으시길 바랍니다.^^

  16. 궁금 2016.05.28 01:01 신고

    열심히 따라가다 궁금한 점이 있어 질문 드립니다.
    일반화된 힘 F 에 관한 식에서 f_w 와 f_m 에 관한 항이 있는데요.
    F_l = ***** + f_m * ( dot(psi) - dot(theta_l) ) - f_w * dot(theta_l)
    여기서 마찰계수와 각속도의 곱으로 이뤄진 항의 단위는 rad/s 가 아닌지요??
    그렇다면 F_l 의 단위도 rad/s 가 되는 건가요?
    앞서 달린 댓글들을 보고 일반화된 힘 F_l 가 토크라고 생각하고 있었는데 단위가 Nm 가 아닌것 같아 질문드립니다.
    F_l 의 단위는 무엇이고, 무엇을 나타내는 항인가요? 토크? 각속도?

    • BlogIcon PinkWink 2016.05.28 17:11 신고

      그렇게 생각하실 수도 있겠네요.. 결론은 토크입니다.^^
      DC 모터의 동역학을 봐야하는 부분인데요...
      http://pinkwink.kr/732
      를 참조하시면 됩니다.

    • 궁금 2016.06.05 11:55 신고

      저는 dc 모터가 아닌 스텝모터를 사용하기로 했습니다.
      때문에 모터의 일반화 외력을 넣어줄 때 전압에 관한 식이 아닌 스텝모터의 각가속도에 의한 식을 넣어주고자 하는데요.
      말씀하신대로 넣어주는 외력이 토크라면 스텝모토의 토크
      T = J*모터의 각가속도
      이니까 일반화 외력을
      F = J*모터의 각가속도
      이렇게 넣어주어도 되는 건지요?
      나름대로 라그랑지 식을 찾아봤는데 일반화 힘을 어떤식으로
      구성해야할지 감이 안와서 질문드립니다.

    • BlogIcon PinkWink 2016.06.05 15:44 신고

      그렇게 해도 될겁니다. 단~ 위 식의 DC 모터는 전압입력에 대한 토크 출력을 보고 있는데..
      스탭모터는 회전하는 각도 혹은 각속도에 대한 지령을 바로 인가하는 방식이므로 그에 대한 고찰이 필요하겠습니다.

  17. Gjwns 2016.07.27 02:21 신고

    안녕하세요 핑윙님!! 핑윙님 포스팅 참고해서 차량형 로봇을 만드는 공대생입니다!! 먼저 양질의 자료를 올려주시는 핑윙님에게 먼저 감사 인사드릴게요! 감사합니다! 저 이번 포스팅에서 질문이 있습니다. Generalized force를 구하시는 부분에서, theta지표에서의 일반화힘이 (f_r + f_l)/2, psi지표에서의 일반화힘이 R*(f_r - f_l)/W이 되어야 맞지않은건가 궁금합니다. pinkwink.kr/326 포스팅에서도 비례식이 그리 되어있는데, 각도를 두번 미분한 각가속도와 토크는 비례하니 326에서의 관계식이 그대로 들어가야된다는 생각이 듭니다. 제가 잘못 알고있는것이라면 알려주심 정말 감사하겠습니다!!

    • BlogIcon PinkWink 2016.07.27 08:01 신고

      F_r+F_l만 말씀드리면 나머지 하나는 잘 이해하실거라 생각되네요.
      http://pinkwink.kr/326 이 글에서는 기하학적인 관계를 풀었기 때문이구요.
      힘으로 보면...
      "로봇이 쓰러지는 방향(theta)의 힘은 두 모터가 내는 힘의 합"
      입니다. 두 모터가 모두 로봇 입장에서 앞으로 2N의 힘으로 밀어 준 것이 된다면, 로봇이 쓰러지는 방향으로 4N의 힘이 걸린거라 말할 수 있는거지요.

    • Gjwns 2016.07.28 21:07 신고

      아..! 와.. 답변보자마자 바로 바보 도트이는 소리가 나오네요! 핑윙님 정말 감사합니다!!!

    • BlogIcon PinkWink 2016.07.29 09:37 신고

      도움이 되었다니 다행입니다.^^

  18. 성공을위함 2017.03.16 00:18 신고

    theta를 움직이는 힘은 두 바퀴의 합력이라고 하셨는데

    제가 모터 한개로 바퀴 두개를 굴리면 generalized force 에서 F_the 항을 2개 더해주는 게아니라

    그냥 하나의 항만 사용해도 되는 것인가요 ??