본문 바로가기

Theory/ControlTheory

밸런싱 로봇의 동역학 유도


2010년 1월 24일을 기준으로 사소한 오타와 잘못된 식을 다시 정리했습니다. 혹시 이전에 이 글을 읽으셨던 분들이라면 다시 확인하시길 바랍니다.

이번에 크리스마스때 태국에서 개최되는 학회를 다녀왔는데요. 비행시간이 6시간인데 갈때 너무 지루하더군요. 잠도 오질 않고... 그래서 이전에 밸런싱로봇([공학기초/Robot] - Balancing Robot 밸런싱 로봇) 동역학이 엉망으로 정리된듯해서 그걸 다시 정리해서 올려야겠다고 생각하고 정리했습니다. 비행기 안에서 주는거 다 받아 먹으면서 정리했더니 대략 한 3시간 정도 걸렸네요. 뭐 그래도 지루하지 않은 비행이었습니다^^.


이번엔 저도 이걸 다시 만들어야겠다는 생각을 해서 제가 만들어 가는 과정을 당연히 정리하는 과정에서 예상 기구부를 생각하고 위와 같이 개념도를 만들었습니다. 일단 기구부의 자세한 설명은 나중에 다시 이야기 하고, 로봇은 전체적으로 하단과 상단에 질랴이 모여있도록 만들것입니다. 동역학을 유도해보면 그게 식도 간편하고 편하거든요^^ 하단의 질량체의 위치벡터와 상단의 위치벡터는 각각


입니다. 여기서 R은 하단 질량체를 원형이라고 가정했을 때 반지름이고, l은 하단과 상단 질량체간의 거리입니다. 또한, theta는 전체 밸런싱로봇의 기울어진 각도, y는 하단 질량체의 이동거리입니다. 질량체의 회전각속도와 y의 관계는


이므로


라고 생각할 것입니다. 위의 위치벡터에서 속도벡터는


입니다. 라그랑지 방법을 사용하기 위해 각 운동에너지와 위치에너지를 정의하면


입니다. 여기서 라그랑지




입니다. 각 상태, y, theta에 대해서 일반적 외부힘을 고려한 라그랑지 방정식


을 유도하면


입니다. 여기서 로봇을 이동시키는 힘을 고려하여 외력을 잡으면


입니다. 여기서 f_i는 마찰계수입니다. 상태


에 대해


의 형태로 위 라그랑지방정식을 다시 표현하면


입니다. 이제




를 이용해서 흔히 사용하는 동역학을 구해보면


입니다. 이렇게 동역학이 완성이 되었네요. 이 동역학대로 로봇을 만들려고 하는데요. 기구부는 뭐 언제 만들어질진 저도 잘 모르겠네요^^ 근데 꼭 필요한 것은 theta와 y의 상태를 꼭 알아야한다는 것을 알 수 있네요. 아참 MATLAB으로 정리한 것을 일반적 수식 전개법을 사용하지 않아 각 문자의 배치가 영엉망이네요... 그래도 식이 간단하니 알아보실 수는 있겠죠?^^


반응형
  • 궁금인 2010.04.13 11:57

    안녕하세요~ pinkwink님 블로그 내용들이 너무 좋아 이것저것 보고있는 전기과학생입니다.
    다름아니라, 위의 동영학유도과정에서 궁금점이 생겼는데요.
    운동에너지 TM을 정의하시는데 있어서, 파이는 각속도를 의미하는게 맞나요?
    그럼 Jm은 관성모멘트가 되는지...
    주변 기계과 친구들한테 물어봐도, 이친구들 속빈 강정이라!-_-a 시원한 대답이 없어서 이곳에 질문글 남겨봅니다.
    오늘 하루 날씨 너무 좋은데요~ 그럼 수고하세요!

    • BlogIcon PinkWink 2010.04.13 12:56 신고

      phi는 각도입니다^^
      운동에너지는 속도성분을 고려해야하니 dot_phi를 사용한 것입니다. 그리고 회전운동성분이 1/2 * Jm * dot_phi^2 이고, 여기서 Jm은 회전관성모멘트입니다^^

  • 궁금인 2010.04.13 13:23

    우옷! 빠르고 친절한 답변 정말 감사드립니다.
    실은 제가 저번학기 제어 과목 수강중에, 도립진자의 모델링부터 매트랩을 이용한 PID제어까지 해봄으로써 이런 제어 분야에 관심이 생기게 되었고, 그와중에 이 밸런싱로봇을 한번 직접 만들어보자!! 라는 생각에..
    학부생 혼자서 무턱대고 들이대는거라, 기간을 길게 2년 안쪽으로 잡고 차근히 해보려는 중입니다. (기간이 긴건 중간에 휴학하고 이것저것 할 계획인지라 ㅎ;)
    일단 시간 낸만큼! 또 pinkwink님의 이 글을 발견한지라! 동역학유도부터 이해해보려고 질문글을 올렸네요.ㅎ
    염치없지만 자주자주 찾아와서 도움요청하겠습니다! (그래봐야 실제론 드문드문 -_-a)
    좋은하루보내시길! 'ㅡ'

  • 질문있습니다 2010.05.19 22:01

    라그랑지 Ξθ 가 의미하는 것이 토크 아니예요?? 그래서 바로 로봇토크에 Ξθ식 넣어주면 되지 않나요?? 굳이 왜 q''=M(inv)*(F-G-Cq')으로 고쳐서 θ''에 대한 식으로 뽑아내는 것입니까??
    제가 전자공학을 전공하고 있는 학생이라서 이런 기계나 동역학쪽에는 살짝 문외한이라 많이 부족합니다. 자동제어 쪽에 관심이 있어서 밸런싱 로봇을 만들어 볼려 하는데 보통일이 아니네요.... 답변 부탁하겠습니다.
    좋은 하루 되세요~~

    • BlogIcon PinkWink 2010.05.20 13:31 신고

      더블닷으로 정리하는 이유는 여러가지가 있겠지만 시뮬레이션을 위해서는 꼭 필요합니다. Algebric Loop Warning이 일어나거든요. 또한 선형화후 특성방정식을 만들때도 필요합니다. ^^

    • 질문있습니다 2010.06.29 20:29

      학과공부를 하다가 다시 본격적으로 방학 때 Balancing Robot을 하려다 보니까 질문이 조금 늦었습니다.ㅎㅎ
      특성 방정식을 알아내는 이유는 무엇인지 궁금합니다.
      그 방정식으로 부터 plant의 특성인 G(s)를 알아내서 transfer function을 알아내고, 그 G(s)와 T(s)로 부터 나이퀴스트 plot이라던가 bode plot을 그려서 시스템 안정도를 다 따져보고, 그 안정할 때의 gain값을 찾아서 PID 제어기를 설계하기 위함인가요??
      제가 공부하기론 그런거 같은데 pinkwink님의 관련 포스트를 봤을 땐 그쪽으로 유도하지는 않았던 것 같았습니다.. 그래서 그게 궁금합니다. ㅎㅎㅎ
      좋은 하루 되세요~

    • BlogIcon PinkWink 2010.06.29 21:13 신고

      그거야 당연히 제어기를 설계하기 위해서이고, 또한 시뮬레이션을 위해서이지요

  • 질문있습니다 2010.06.30 18:37

    y에 대해 편미분 한 방정식은 시뮬레이션을 위한 것인가요??
    실제 DSP에 코딩한 방정식은 θ'에 대한 식을 PWM으로 넣어 준건가요?
    혹시 그렇다면 그 이유를 듣고 싶습니다.
    pinkwink님의 생각을 들어 보고 싶어서요.........제가 공부를 바닥부터
    하고 있는데 제대로 하고있는지, 잘 나아가고 있는지 의문도 들고 해서요..
    좋은 하루 되세요~~~

    • BlogIcon PinkWink 2010.06.30 23:33 신고

      순전히 저의 경우에 대한 답변입니다.

      동역학을 유도하는 것의 첫 목표는 시뮬레이션을 위해서입니다. 저는 MATLAB이라는 프로그램을 많이 사용하는데, 실제로 만들어보거나 혹은 만들어져있다하더라도 각종 테스트를 위해 동역학을 유도하여 그 수식을 MATLAB에 구현해서 시뮬레이션을 합니다. 대상으로하는 시스템 대신 시뮬레이션을 하기 때문에 당연히 실제 시스템과 가급적 유사하게 동역학을 유도할려고 애를 씁니다.

      두번째는 제어기를 만들기 위해서 입니다.

      그럼 실제 시스템에는 제어기가 들어가는 것이지요.
      위와 같이 유도된건 실제 시스템 대신 사용할려고 한거고, 실제로 구현할때는 위 동역학은 필요없습니다. 그저 도출된 제어기가 필요하죠. 그래서 그 제어기를 마이크로프로세서든 혹은 PC기반이든 이식하면 됩니다.

    • 질문있습니다 2010.07.01 12:32

      아하!!!! 그렇군요.... 그렇다면 그 쪽 관련 공부를 더 해 봐야겠네요.....
      좋은 답변 감사합니다.~~ㅎㅎ

    • BlogIcon PinkWink 2010.07.01 17:30 신고

      네... 화이팅입니다.

  • 궁금이. 2011.10.17 13:32

    안녕하세요. 항상 많이 배우고 있습니다.
    동역학식에서 바퀴의 위치에너지는 추가하시지 않았는데 이유가 궁금하네요.

    • BlogIcon PinkWink 2011.10.17 13:45 신고

      질량의 밀도가 균일한 바퀴가 무게중심축에 고정된 상태에서
      바닥에 접지하고 있다면
      위치에너지는 고려하지 않아도 됩니다.
      고려하고 식을 유도해도 바퀴반지름만큼 떠 있어도
      그 바퀴반지름이 시간에 대한 변수가 아니라서
      라그랑지안을 유도하는 과정에서 미분할때 없어져버립니다.

  • ljk2202 2011.10.25 14:56

    근데 밸런스로봇에 응용분야가 무엇인가요 왜만드는건지?

    • BlogIcon PinkWink 2011.10.25 16:17 신고

      음.. 글쎄요...
      당시 전.. 제어기술은 이런걸 보유하고 있고, 또, 자이로+가속도센서로 각도 측정은 잘 되고 있다...의 예제로서 .. 그러니까 한마디로 그냥 재미있어 보이길래 만들었는데요...

  • 밥이대세다 2015.07.08 14:46

    안녕하세요! 저번에 다른글에도 댓글을 남겼었는데 기억은 안나네요;;ㅎㅎ
    질문이 있습니다! 제가 여기 블로그에서 밸런싱 로봇의 제작에 대하여만 계속 보고 다니고 있는데요!
    저는 스테핑 모터를 이용하여 밸런싱 로봇을 만들고 있습니다! 여기서 연재된 내용을 가지고 동역학 식을 구했는데요.
    일반적인 외부힘을 고려했을 때, f_y와 f_theta 가 0이라는 전제 하에 입력으로 되는 힘F만 남게 될 텐데요.
    그렴 스테핑 모터의 입력은 힘이 아닌 가속도가 될 것으로 생각됩니다. 그럼 여기서 F=ma라는 식을 사용하면 될 것같은데, 만약 이렇게 되면 어떻게 되는 것일까요?? 너무 질문이 중구난방이네요.. 혹시 알고 계시면 답변 부탁드립니다!

    • BlogIcon PinkWink 2015.07.09 20:38 신고

      스탬모터의 경우는 전압이 아니라 각도를 제어하는 것으로 보기 때문에 이부분에 대한 수식 전개가 살짝 필요할 듯 합니다만, 실제로는 ma가 아니라 J*ddot_theta처럼 회전 힘 (토크)으로 전개하면 되지 않을까 추측합니다. 그러나 정확하진 않으니 확실히 확인을 해보셔야할 듯 합니다.

    • 밥이대세다 2015.07.10 09:58

      스테핑 모터는 아무리 찾아봐도 뭔가 힘에 관련된 식이 나오지 않습니다ㅠㅠ 제가 잘 못찾는 것도 있을테지만, 그래서 한번 생각을 달리 해 보았습니다.
      어.. 일단 스테핑 모터에 정토크의 특성이 있을것입니다.
      그래서 어차피 모터가 가지고 있는 토크 이상을 가하게 되면 각도 제어가 되지 않게 되기 때문에(모터에 홀센서를 부착하지 않고 펄스의 갯수만으로 오픈루프 제어하게 됩니다)모터의 토크 이내에서 제어가 된다고 가정을 하고, 입력으로 계산된 힘 F를 모터가 구동하는 바퀴가 로봇에 부여한다라고 생각하고 F=(바퀴의무게*DDOT_Y) 이렇게 생각해도 무방할까요?? 말이 너무 길어 졌네요ㅠ 어려운 이야기 인것을 알지만 혹시 가능하다면 답글 부탁드립니다^^

    • BlogIcon PinkWink 2015.07.10 22:09 신고

      네.. 얼핏 그래도 된다고 생각됩니다...
      그러나, 확실히는 잘 모르겠네요...ㅠㅠ
      시뮬레이션이 아니라 자료를 아주 많이 뒤져봐야할 듯 한데.. 저에게는 여유가 허락하지 않네요...ㅠㅠ

    • 밥이대세다 2015.07.13 11:10

      신경써 주셔서 감사합니다! ㅎㅎ 위의 방법으로 계산해서 결국 성공 했습니다ㅠㅠ

    • BlogIcon PinkWink 2015.07.13 19:36 신고

      어이쿠~~ 축하드립니다. ^^