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


실제 제작과 연재를 동시에 진행하다보니 약간 혼선이 있었습니다만, 이번에는 밸런싱로봇의 동역학 최종 결과를 보여드릴려고 합니다. 일부 레고문서(^^)를 참조했었지만, 실제 연제의 시작은

였구요. 여기서 라그랑지 방정식을 손으로 직접 풀어도 보고, MATLAB을 이용해서 유도하여 그 결과식이 맞다는 것을 알게 되었습니다. 그래서 라그랑지 방정식을

에서 검증했습니다.


밸런싱로봇을 위 그림처럼 볼 수 있게 되구요. 거기서 유도된 라그랑지 방정식이


였습니다. 거기에


모터의 특성을 고려하여 외부힘을 인가하게 되고 전개하여 각 double-dot에 대해 정리하면


이 됩니다. (클릭하셔서 크게보세요^^)





위의 결과식을

sin(angle) = anlge
cos(angle) = 1
두 상태의 곱은 = 0

로 보고 '0' 부근에서 선형화를 수행했습니다.


그리고, 상태별로 식을 


정리했구요.



이제 상태방정식


과 같은 형태로 둘 것입니다. 여기서, u1 = v_l + v_r이고, u2 = v_l - v_r 입니다. 이는 phi 쪽 상태를 고려하는 것 자체가 이전에 제가 자주 다루던 two-rotor와 같은 형태입니다.[참조1, 참조2, 참조3, 참조4]. 두 모터에 인가되는 전압(v1,v2)로 제어입력을 표현하고자 하지만, 동역학을 해석해보면, 결국 theta와 psi는 두 모터의 합력, phi는 차에 의해서 결정되기 때문에 u1, u2로 표현한 것입니다. 

위 상태방정식의 각 요소들 중 theta 쪽은


이고, phi 쪽은


이고, psi 쪽은


입니다. 여기서 Den, u1, u2, alpha, beta는


입니다.



동역학에 대해서는 이제 그만 만져야겠지요. 아직도 해야할 일이 많으니까요. 중간중간 또 틀리거나 오타가 있다면, 그때그때 수정하도록하겠습니다.


http://pinkwink.kr/trackback/334 관련글 쓰기
  • 핑구야 날자 2010/06/22 18:27

    이 포스팅을 나이지리아선수들에게 보여주면 그냥 16강 진출할겁니다.

    • PinkWink 2010/06/23 01:26

      히히.. 아쉽네요.. 우편으로 보내줄걸 그랬나봅니다.
      리포트도 제출하라고 할걸 말이죠..ㅋㅋ

  • 감사합니다! 2010/06/24 19:35

    저는 아직 학부생이라서 많이 부족하지만, 이번 방학동안 밸런싱 로봇을 만들어 보려고 검색을 하던차에 우연히 오게 되었습니다.
    수학이 많이 약해서 어렵기는 하지만 포스팅 해주신 것을 보면서 어떤식으로 접근해야할 지 감을 잡을 수 있었습니다.^^
    정말 감사드립니다!!

    (아, 그리고 혹시 기회가 되신다면 TMS320F2812에 대해서도.... 나중에 포스팅 해주셨으면 합니다.^^ 현재는 AVR을 사용하고 있는데, 엔코딩도 불편하고 느리고... 그래서 2812도 공부를 시작했는데, 아직 부족한게 많습니다. QEP 모듈 사용법 등등... 나중에 시간이 되신다면 부탁드리겠습니다-)

    • PinkWink 2010/06/25 02:38

      요즘... 의욕상실에 무책임증 등등 .. 각종 일하기 싫은 꾀병에 몹시 시달리고 있습니다..ㅠㅠ 그래도... 한번 시작해 보곘습니다.^^ 그러나 언제가 될지는 장담드리기가 어렵습니다.^^

      아.. 그리고.. 잘 읽고계시다니 오히려 제가 감사드립니다.^^

  • yemundang 2010/06/26 21:03

    저.. 학부 수학 전공이고, 석사 컴퓨터학 전공인데.. 오랫만에 만나니 웬 외계어인가 했습니다.
    아이 수학문제나 제대로 풀어줄 수 있을런지... 끙!

    • PinkWink 2010/06/26 21:05

      수학을 몹시 잘하시는 분들도 직접.. 아이들을 가르치는건 힘들어하시던데요^^

    • yemundang 2010/06/26 21:32

      자녀교육에서 가장 어려운 것은 엄마가 '화'를 낸다. 라네요.
      자녀를 가르치기 전에 '도'부터 닦아야할듯합니다.
      남의 아이 가르칠 땐 참아지는데, 내 아이는.. 잘 안되더라구요. ㅋㅋ

    • PinkWink 2010/06/26 22:28

      그렇겠죠?? 저도 예전에 동생을 가르칠때와 알바로 과외할때랑 저의 태도가 달라진다는 것을 알았거든요^^

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

    밸런싱로봇 만들기 잘 보고있습니다. 그런데, 모터에 대한 수식에서 beta로 정의되는 식 내에 n값이 있는데, 제손으로 풀어보면, 이게 n^2으로 풀리네요...

    토크와 각속도가 기어비 n을 거치면 아래와 같기때문에
    T = n*T_m,
    omega = (1/n)*omega_m

    beta는 n^2*K_t*K_b/R_m + f_m 과 같은 식으로 되어야 하는게 아닌가요?

    • PinkWink 2010/09/02 13:11

      http://pinkwink.kr/333#comment2175754 에 이은 질문이지요?? 생각해보니... 바퀴의 속도를 고려하는 항에 일괄적으로 감속비를 고려하지 않았네요...ㅠㅠ 아마 제가 틀린듯한 예감이 드는데... 일단 이부분도 역시 다시 확인해보겠습니다. 일단 "야옹~"님 말씀이 맞습니다. 그리고 제가 참조한 마인드스톰 문서 역시 그렇게 유도되었길래 DC모터 부분을 아무생각없이 따라간게 아닐까하는 두려움이 다가오네요... "야옹~"님께서 지적해주시지 않았다면 아무 고민없이 진행했을 부분이네요. 확인후 다시 수정포스팅을 올리도록 하겠습니다.

  • Ms.han 2011/01/04 21:52

    저희가 지금 세그웨이를 만들고 있는데요..
    밸런싱로봇과 거의 시스템이 비슷한듯 한데 몸체를 직육면체로 보기에는
    손잡이의 무게가 꽤 나가서 직육면체로 일반화시킬 수가 없어서요.
    질량관성모멘트가 바뀌는 듯 한데 직육면체에 막대봉이 붙은 듯한 이 형체에 대해서는 질량관성모멘트를 어떻게 구해야하나요?

    그리고 운동에너지를 구할 때 바퀴의 운동에 의해 폴이 영향을 받는 식에서 기어비를 고려하는 부분이 잘 이해가 안 갑니다. 기어비가 크면 그 값이 너무 커져서 영향을 많이 주는 것 같아서요.

    • PinkWink 2011/01/05 12:27

      질량관성모멘트가 이너셔를 이야기 하는 것인가요? 제가 용어에 좀 약하답니다.ㅠㅠ 하여간 이너셔를 말씀하시는 거라면, 보통 선형제어기를 꾸미는 경우는 조금 간략하게 생각한답니다. 질량이 양쪽 끝에 모여있다고 가정한다던지.. 혹은 봉 끝에 질량이 모여있다던지.. 양쪽 끝에 있다든지 하는 것인데요. 만들고 계신 로봇의 형태와 무게를 고려해서 간략화해서 생각하시면 됩니다. 그리고, 기어비가 커지면 토크가 커지는 것으로 표현한 것입니다.

  • Ms.han 2011/01/05 16:19

    아 그러면 거기서의 이너셔는 모터의 이너셔를 말하는 거지요?

    • PinkWink 2011/01/05 16:27

      회전하는 모든 물체는 이너셔가 있습니다. 모터 축의 이너셔는 통상 모터의 데이터시트에 제시되어있습니다. 제가 방금 말씀드린것은 펜들럼에서 폴의 이너셔와 암의 이너셔를 말씀드린 것입니다.

  • Ms.han 2011/01/05 19:53

    또 여쭤볼 게 있는데요.
    일반힘을 정의할 때 phi를 움직히는 힘 부분에서 두 바퀴가 내는 힘의 차이인 건 이해가 가는데요. 관계식부분에서 w/2R을 해주는 이유는 뭔가요?

    • PinkWink 2011/01/06 04:37

      http://pinkwink.kr/326 의 초반부에 phi를 정의하는 식을 만들때의 이유와 같습니다.혹은 http://pinkwink.kr/333 의 하단부에 약간의 언급을 조금 더 해두었습니다.

  • 좋은날 2011/05/18 01:56

    좋은 정보 정말 잘봤습니다. 그러나 제가 이쪽에 문외한이라서 질문을 드리네요. 봐도 이해가 안가요 ㅜ
    gyro sensor의 값을 위 식에 이용하려면 어디에 들어가는거죠?
    모터에 인가되는 값은 어느 것인지도요 ㅠㅠ
    그냥 서있기만 할려면 유도를 어찌 해야 될지 감이 안잡힙니다..
    완전 초보가 어이 없는 질문을 하는것같습니다. ㅠㅠ

    • PinkWink 2011/05/18 08:41

      이 글은 동역학을 유도하는 포스팅입니다.
      실제 구현은 http://pinkwink.kr/344 에서 보여드리고 있습니다.
      거기서 자이로에서 얻은 각속도는 psi의 미분값에
      ARS에서 얻은 각도는 psi에 사용하고 있습니다.

  • 영진 2012/05/25 13:34

    B52에서 u2가 빠져야하는데 오타이신듯하네요.. ㅎ

  • Mo 2012/06/02 10:41

    안녕하세요~
    전 기계공학을 전공하고 있는학생인데
    요즘 이블로그에서 정말 많이 배우고 있습니다 유익한자료 너무나 감사합니다(__)
    전 매트랩을 기초적인것만 할줄알아서
    동역학 방정식을 손으로 풀로 그 수식을 매트랩에 일일히 적어넣다보니 거의 매번 오류가 나고 수정하는데 너무너무 힘이듭니다 ㅠ
    그래서 꼭좀 답변해주셨으면 하는 질문이 있는데요
    예를들어서 시간이 t로 정의된다면
    각도 Ø = 2*t
    라그랑지안 L = 2*(Ø')^2 + 3*Ø +1 이라면요
    라그랑지 운동방정식을 d(∂L/∂Ø')/dt - ∂L/∂Ø 로 구해야 하잖아요
    이것을 위해서 매트랩으로 표현하면
    syms t
    Ø = 2t
    L = 2*(Ø')^2 + 3*Ø +1

    result = diff( diff(L,'diff(Ø)'), 't') - diff(L,'Ø')

    원하는 결과는 4*Ø'-3인데
    이렇게 하면 diff(L,'diff(Ø)') 이부분때문에 바로 오류가나서 항상 손으로 풀고있습니다. ㅠㅠ
    잘못된 표현방법이라는건 아는데 바르게 표현하는 방법을 도무지 모르겠습니다.

    저 운동방정식을 수식으로 유도하는 방법을
    매트랩으로 바르게 표현하는 방법좀 알려주실수 있나요?
    부탁드립니다 ㅠ 3링크가 넘어가니까 손으로는 도저히 못하겠어요 ㅠㅠ

    • PinkWink 2012/06/04 11:38

      http://pinkwink.kr/322 다변함수의 문자연산에대해 다룬글입니다
      먼저 읽어보시면 도움이 되지 않을까합니다

    • Mo 2012/06/04 19:15

      아하~
      그런글이 있었군요
      감사합니다~

    • PinkWink 2012/06/05 07:20

      네 때마침 우연히도 그와같은 글을 적었네요^^