본문으로 바로가기

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

[프로젝트/Robot] - [밸런싱 로봇 만들기] 5. Yaw 움직임을 포함한 동역학 (1)

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

[프로젝트/Robot] - [밸런싱 로봇 만들기] 7. Lego Mindstorm 동역학 따라하기

에서 검증했습니다.

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

였습니다. 거기에

모터의 특성을 고려하여 외부힘을 인가하게 되고 전개하여 각 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는

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


댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2010.06.22 18:27 신고

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

  2. 감사합니다! 2010.06.24 19:35 신고

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

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

    • BlogIcon PinkWink 2010.06.25 02:38 신고

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

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

  3. BlogIcon yemundang 2010.06.26 21:03 신고

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

    • BlogIcon PinkWink 2010.06.26 21:05 신고

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

    • BlogIcon yemundang 2010.06.26 21:32 신고

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

    • BlogIcon PinkWink 2010.06.26 22:28 신고

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

  4. 야옹~ 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 과 같은 식으로 되어야 하는게 아닌가요?

    • BlogIcon PinkWink 2010.09.02 13:11 신고

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

  5. Ms.han 2011.01.04 21:52 신고

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

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

    • BlogIcon PinkWink 2011.01.05 12:27 신고

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

  6. Ms.han 2011.01.05 16:19 신고

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

    • BlogIcon PinkWink 2011.01.05 16:27 신고

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

  7. Ms.han 2011.01.05 19:53 신고

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

    • BlogIcon PinkWink 2011.01.06 04:37 신고

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

  8. 좋은날 2011.05.18 01:56 신고

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

    • BlogIcon PinkWink 2011.05.18 08:41 신고

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

  9. BlogIcon 영진 2012.05.25 13:34 신고

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

  10. 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링크가 넘어가니까 손으로는 도저히 못하겠어요 ㅠㅠ

  11. 왕초보 2015.03.11 11:02 신고

    유도된 라그랑지안 방정식에서 DC모터의 특성을 고려하여 외부힘을 인가하게 되고
    각 항을 double_dot 에 대해 정리 하는 부분에 이해가 안되서 질문 드려요 ...
    phi double_dot 항은 F_phi 을 대입해서 계산하면 간단히 나왔지만

    theta_doulbe_dot 항과 psi_double_dot 항은 어떤식으로 전개하셔서 구하신건가요?

    • BlogIcon PinkWink 2015.03.11 18:22 신고

      2원 2차 연립방정식을 풀듯이 풀거나.. 아니면 행렬 방식으로 표현하고 역행렬을 곱하는 방식으로 수행했습니다.^^ 이부분은 연립방정식을 역행렬을 이용해서 푸는 부분으로 공업수학 책을 참고하시면 됩니다.

  12. 안녕하새요 2016.03.10 01:21 신고

    안녕하세요 핑크윙크님.. 오래된글이라 기억잘안나시겠지만 ㅜㅜ..
    저는 두발을 모터하나로 돌릴 계획입니다
    그래서 yaw 각은 필요가 없구요 그러면 u1을 정할때 그냥 v 로 정하면 되는건가요?

    또다른질문은 저희가 풀리와 벨트를 모터동력전달에 사용하는데 그럼 어떻게 다뤄야될까요.. 힘? dc모터 관계식에서..

    • BlogIcon PinkWink 2016.03.10 07:42 신고

      네.. yaw에 대한 부분은 고려하지 않으시면 됩니다.^^
      그리고... 본래는 그런 벨트 종류에 대한 역학적 모델도 필요할 수 있지만, 단순히 감속비와 높은 마찰 정도만 고려하면 될 것으로 보입니다.

    • 안녕하새요 2016.03.10 14:05 신고

      아.. 넵
      다른질문이있습니다 ..
      무게중심이 조금이라도 위쪽에 있는게 세우기 더 좋은가요 아니면 조금이라도 아래쪽에 두는게 더 세우기 수월할까요?
      그냥 무게중심좌표만 알면 되겠지만 무엇이 더 안정적이거나 세우기 수월할ㅈ게 할수있을지 궁금합니다..

    • BlogIcon PinkWink 2016.03.11 09:02 신고

      그건... 다들 비슷비슷한데...
      제 경우는 무게중심의 길이가 길면 길수록 안정화할때 부드럽게 잘 움직이던데요^^

  13. 성공을위함 2017.03.16 00:53 신고

    핑크님!!

    여기서 세타 두 dot 에 대한 식으로 연립 방정식을 풀어내실 때 툴을 이용하신건가요> 손으로 푸신건가요 ?

    혹시 tool 이 있다면 tool 명좀 알려주세요 ㅠㅠㅠ

    이걸 계속 손으로 풀오내려는데 계쏙 막히네요 ㅠㅠ

    • BlogIcon PinkWink 2017.03.16 09:00 신고

      당시엔... 라그랑지 방법을 사용하는 것이 복잡해서...
      최초 운동방정식의 시작부분만 정의하면..
      심볼릭 연산으로 바로 결과가 나오고...
      다시 그 결과를 한글워드의 수식입력기 문법으로도 나오도록...
      하는 MATLAB 프로그램을 직접 만들었었습니다.
      언젠가 블로그에 올려야지 했는데..ㅠㅠ...
      시간이 너무 흘렀네요...

    • 성공을위함 2017.03.16 14:22 신고

      심볼릭 연산에 대한 연재가 하나 있긴 한데 미분하는 것이요 ..그걸 어떻게 응용해얄지도 모르겠네요 혹시

      구글링 해도안나오던데 검색을 머라해야하나요

    • 성공을위함 2017.03.16 14:37 신고

      혹시 저도 지금 syms 이용해서 수식 풀어내는 건 다 했는데 그 복잡한걸 상태변수만 입력해주면 행렬식으로 변환해주는 게 있나요 ?

    • BlogIcon PinkWink 2017.03.16 14:42 신고

      음... 저도 당시엔 그저 MATLAB 문서를 보고 공부했던듯 합니다.

    • BlogIcon PinkWink 2017.03.16 14:44 신고

      전 만들어 사용했습니다.ㅠㅠ

  14. 해봅시다 2017.03.16 17:41 신고

    저기 모터 방정식에서 추론된 F 항들에서

    f_w 는 연재 4에서 거꾸로 매달아서 하는 실험에서 바디와 모터 축의 마찰계수와 같은건가요 ?

    • BlogIcon PinkWink 2017.03.16 17:45 신고

      http://pinkwink.kr/333
      글 하단에 있지만.. f_w는 바퀴와 바닥과의 마찰입니다.
      거꾸로 매다는 실험과는 관계가 없습니다.

    • 해봅시다 2017.03.16 17:58 신고

      죄송합니다 하 제가 이것 저것 파일 다보면서 해서 정신이 없었네요 핑크님이 말씀해주시자 마자 아 봤었지..싶었습니다..ㅎㅎㅎ
      정말 어렵네요 ..진짜

      근데 모터 하나로 바퀴 2개를 돌리는 효과에 대한 전압은 vl vr 에서 각 바퀴당 똑같은 전압이 인가 된다라고 생각해도되나요 ??

      11v 짜리모터라면

      vl=vr=11 이렇게 말이죠 ..

    • BlogIcon PinkWink 2017.03.16 18:42 신고

      모터가 하나라면.. 나누어야하지 않나 생각되는데요...

    • 해봅시다 2017.03.17 10:55 신고

      답변 감사드립니다.

      나눠라고 하심은 ...


      모터 풀리로 샤프트 연결 처리 됐는데

      모터가 200rpm으로 돌라하면 두 개다 200으로 돌거란 생각으로 같다고 뒀는데 ..ㅠㅠ 핑크님 생각은

      vl=11/2 vr=11/2 이렇게 말인가요?...


    • BlogIcon PinkWink 2017.03.17 11:03 신고

      어차피 yaw 움직임은 신경안쓸테니..
      v_l - v_r 한 항은 없을거고...
      v_l + v_r 한 항은.. 모터가 하나라고 했으니..
      그냥 v_single 정도로 두시는건 어떨까요...

    • 해봅시다 2017.03.17 19:00 신고

      넵 핑크님 말씀 거의 알겠는데 하나가 궁금한 점이 있는데 ..

      제가 바퀴 왼쪽 오른쪽 바디 이렇게 세개에 대해서 T,V에 대한 라그랑지안을 구햇는데

      라그랑지안 결과 오른쪽 항인 F(the) 항을 구할 때 F=-alpha(vl+vr)~~뭐 이부분 있짜나요

      결국은 vl=v_single 로 두면

      vl+vr=2v_single 아닌가요 ?

      제가 이해잘못한건지 여쭤보고 싶습니다.ㅠㅠ

    • BlogIcon PinkWink 2017.03.19 09:37 신고

      그냥 두 개를 합한걸 v_single 정도로...
      혹은 u1을 사용해도 될듯하구요..

    • 해봅시다 2017.03.20 08:49 신고

      아 걍 single 인풋으로 두고서...
      알겠습니다
      저 F항이 바퀴를 돌리는 힘이라고 하셨는데 ..그 F항 추론 식에 베타항과 알파항 다 있는데 이것도 다 single 로 두는게 맞겟죠 ?..

    • BlogIcon PinkWink 2017.03.20 10:02 신고

      사실은...

      이런 사소한 부분은 사실 결과식을 바꾸는 것으로 충분하겠지만.

      그래도...
      원래는... 처음 유도하는 그.. 처음부터 다시 보는 것이 맞긴합니다.

      그러다 보면... 모터가 하나니까.. 어떻게 바뀌어 가야하는지를 알 수 있게 되는거지요...

    • 해봅시다 2017.03.20 16:00 신고

      아 감사합니다~

      정말 갈길이 멀군요 .ㅠㅠㅠㅠㅠ
      부럽습니다.

      엔코더의 차분을 잡는 게 정말 어렵군요 ..

      평균값으로 하는 것에도 한계가 ..

    • BlogIcon PinkWink 2017.03.20 16:17 신고

      그러나.. 또 완성해놓고 보면... 생각보다 어렵지 않은데? 하시게 될겁니다. 아무튼.. 재미있는 과정이라 뿌듯함을 느끼실겁니다.

  15. 해봅시다 2017.05.01 22:51 신고

    핑크님 오랜만입니다.!!!!

    핑크님 질문이 있습니다. 오랜만에!!! 너무 반갑네요.

    이제 라그랑지안 편 미분 결과가 Tow타우 즉 토크 or Force 힘이 되지 않습니까 .

    근데 위에서 보면 바퀴를 굴려주는 힘이 결국 몸체에도 힘 주기 때문에 서로 부호만 반대고 같은 모터 힘으로 인가해주지 않습니까 .

    근데 몸체에 반대 힘 주지 않고 그냥 0 으로 하면 안되는건가요ㅕ ?

    • BlogIcon PinkWink 2017.05.03 12:39 신고

      ?? 무슨 말씀이신지.. 작용반작용의 원리가 있으니 모터가 회전하는 힘은 바퀴에도 또 기계적 장치를 거쳐 바디에도 영향을 주는 것이 맞지 않나요?

  16. 해봅시다 2017.05.02 15:06 신고

    핑크님!!

    하나 질문이 더있습니다.

    4 by 4 역행렬을 수식적으로 풀어낼 툴이나 방법이 있나요 ??

    2by2 정도는 손으로 어느정도 되지만 ..4by 4 는 정말. ..미치네여

    • BlogIcon PinkWink 2017.05.03 12:44 신고

      MCU 레벨에서 역행렬을 풀일이 있나요????
      아무튼.. 그걸 프로그램을 해결할 수 있는 방버은
      http://pinkwink.kr/181
      에 보시면 가우스 소거법이 있을 겁니다.
      가우스 소거법을 사용하면 프로그램으로도 가능합니다.

    • 해봅시다 2017.05.03 21:47 신고

      가우스 소거법 이나

      syms 이용해서

      다변수 함수 만들어내서

      inv 쓰니까 되긴 되던데 이것도 가능한 방법이겠지요 ?

    • BlogIcon PinkWink 2017.05.10 13:25 신고

      뭐.. 환경을 잘 몰라서 뭐라 말씀은 못드리겠지만... 뭐 원하는 결과가 나온다면 괜찮겠죠...

  17. 한번더 2017.06.05 03:05 신고

    핑크님 안녕하세요
    위에 게시중에 질문이 두가지가 있습니다.!

    1. 선형화를 하는데 cos ==1 sin the == the 고 나머지 상태 두 곱은 0으로 하셔랬는데.
    두 상태의 곱이 phix * dot_phiy 이런 것도 다 0이라 하는 것인지요 ?
    2. 위에 더블 투돗 식은 어떤 식으로 유도해낸건가요 ?!! M dd_p + C d_p G = F 꼴로 만든건가요 ?
    항상 도움 많이 받고 있습니다. 감사드립니다.