본문으로 바로가기
분명 여름인데... 비가오면서 그런건지 요즘 덥지가 않네요. 지금 시간이 밤 10시가 넘었는데, 제가 있는 건물 1층에는 내일 국제생물올림피아드대회 준비로 많은 사람들이 분주하게 움직이고 있네요. 

오늘은 리액션휠에 대한 이야기를 할려고 합니다. 사실 이 부분은 참 창피한 이야기인데요. 아주 예전에 리액션휠에 대해 이야기를 했었습니다.[관련글] 그런데 이 때 제가 동역학을 잘 못 유도한 것을 알고 다시 수정본을 포스팅[관련글] 했는데요. 큭... 그것 마저 잘못되었더군요. 그래서 다시 합니다. 두 번째 포스팅 당시 sdfzz님의 질문에서 시작된 의문 덕분에 잘못된 것을 알았지요. 그 후 차일피일 미루다가 이렇게 다시 공부한 결과를 올려놓네요...

먼저 의문점의 시작을 이야기해야겠습니다.^^


이 책은 "The reaction wheel pendulum"이라는 책(이하 참조A)에서는 


여기서



위의 운동에너지 부분이 마치 단순히 theta와 theta_r 즉, 막대기와 휠의 운둥에너지를 다룬듯이 보이고, 


라그랑지안 방정식에서 모터의 토크가 두 상태에 다른 방향으로 인가된다고 설명하고 있습니다.

이제 또다른 참조


"Non-linear control for Underactuated Mechanical Systems"와


"Nonlinear control of the Reaction Wheel Pendulum"

위 두 참조 문헌(이하 참조B)에서는 


위에서



운동에너지를 고려할때, 참조A와 다른 모습을 보여주고 있는듯 보입니다.


그리고, 마지막 단계, 라그랑지방정식에서 외력을 한쪽에만 모터토크가 들어가는 듯 모이는데요.

마치 다르게 유도된듯이 보이는 것이 당시 가졌던 의문입니다.

정리하면,

참조A는 운동에너지를 직선운동에너지와 회전운동에너지로 두고 있는데, 이때, 회전운동에너지는 단순히 두 물체(막대기와 휠)의 회전력만을 고려했고
참조B는 회전운동에너지를 고려할때, 참조A와는 달리 뭔가 하나 더 들어간듯이 보인다는 겁니다.

또한,
참조A는 라그랑지 방정식의 결과식에서 외력을 두 상태 모두에 인가를 했고,
참조B는 휠을 구동하는 모터 토크는 휠의 상태 q_2를 유도한 식에만 인가되어있다는

것으로 보이는 겁니다.

이제, 달라보이는 두 동역학유도과정을 비교해보겠습니다. 방법은 참조A를 변형하는 것인데요. 참조A의 치환된 문자들을 대입해보겠습니다.


위 그림에서 참조A는 두 각 theta와 theta_r을 모두 절대좌표계의 각도로 보고있습니다.


그래서, 참조A의 라그랑지 방정식 결과식에 위와같이 대입합니다. theta는 phi로 theta_r은 막대가 움직인 phi에 휠이 돌아간 phi_r을 더한 것으로, 나머지는 참조A가 본문에서 밝힌대로 본래의 치환을 돌려놓는 것입니다.


일차적으로 위와 같이 정리가 됩니다. 이를 참조B처럼 만들기 위해 모터 토크 tau를 다시 대입해서


이렇게 만들어 볼 수 있습니다. 이 결과를 참조B와 비교하면


이렇습니다. 같네요. 즉, 참조A와 참조B의 동역학은 같은 식입니다. 여기서 위치에너지를 의미하는 부분 중력가속도 g가 있는 부분의 부호는 좌표원점을 어디로 보고, 초기상태를 어떻게 보았느냐의 차이라 달라도 다른게 아니라는...^^

즉, 단순히 눈으로보면 달라보이는 동역학이 사실 같은 동역학이라는 것이 중요합니다.

결국

참조A는 막대와 휠의 각도를 절대좌표에서 바라본것이고
참조B는 막대의 각도는 절대좌표에서 본 것이지만, 휠의 각도는 막대를 기준으로 본 상태좌표입니다.

결국 최초로 저에게 리액션휠의 동역학 분석을 질문하셨던, "정문님"님과 그 후 저에게 질문을 하셨던 "sdfzz"님 덕분에 제가 라그랑지 방법을 통한 동역학 유도에서 잘 못 알고 있던 부분, 혹은 고민하지 않았던 부분에 대한 고민을 하게 해 주신거라... 감사의 말씀을 전하고 싶습니다.^^.

하여간, 결론은

라그랑지 방법을 이용한 동역학 유도에서 각 상태를 절대좌표계에서 보는가 상대좌표계에서 보는가에 따라 조심스럽게 접근을 해야겠네요.

이제 다시, 저만의 것으로 만들기 위해 저도 따로 유도를 하겠습니다.


위 그림에서,


위치벡터와 그에 따른 속도벡터에서 운동에너지와 위치에너지는


와 같습니다. 여기서 theta_2는 막대에서 본 상대각도입니다. 그러므로 운동에너지는 직선운동성분과 회전운동성분인데, 이 중 회전운동에너지는 theta_1에 대해서는 일반적인 상황과 같지만, 휠의 회전운동은 theta_1의 속도와 theta_2의 속도의 합에 대해 기술해야하는 것입니다.


그럼 위의 라그랑지안이 나타나는데요


이 후 유도를 위해 좀 정리를 다시하고, theta_1에 대한 라그랑지 방정식은


이렇습니다. 여기서 외력은 '0'입니다. (마찰 무시) theta_2에 대한 라그랑지 방정식은


이렇습니다. 여기서는 모터의 토크가 외력으로 고려됩니다.


이렇게 해서, 리액션휠의 동역학의 라그랑지방정식을 얻었네요. 음... 이쯤이 결론이지 않을까하는데요^^

요즘 논문준비로 너무 바쁘게 보네는데, 큰일입니다. 밸런싱로봇 이야기도 해야하는데 말이죠.. ㅎㅎ



댓글을 달아 주세요

  1. BlogIcon 핑구야 날자 2010.07.15 13:09

    어느새 최종인가요,, 잘모르는 불량한 학생으로 그동안 잘배웠어요,,ㅋㅋ
    감사합니다.

  2. sdfzz 2010.09.09 00:09

    -_-;; 저도 바빠서(믿거나 말거나) 한동안 못들어 와 봣는데 이렇게 정리해 주셔서 정말 감사합니다.
    많이 배우고 가고요, 앞으로도 좋은 포스팅 부탁드립니다.

  3. BlogIcon HUK 2010.10.21 20:12

    저도 여기 와서 가끔 글을 읽었는데, 이렇게 댓글 쓰는건 처음이네요^^
    잘 읽었습니다. 여기 블로그가 많은 도움이 되요~

  4. 케이크 2012.03.27 00:56

    안녕하세요~ 질문이 있어서요 ㅎ

    결론으로 나온 두 식에서 theta2에 대해서는 소거해버리고 theta1에 대한 식으로 나타낼 수 있다면,

    두번째 식의 토크는 제어입력이 되는건가요?

    그렇다고 한다면, 토크를 어떤식으로 제어해야 할까요?

    보통 모터는 각속도를 측정하는거 같던데 말이죠..

    • BlogIcon PinkWink 2012.03.27 09:10 신고

      해당식에서 토크는 제어입력입니다. 만약 DC모터라면 DC모터의 동역학적 방정식을 대입하면, 전압에 대해 나타납니다.

  5. BlogIcon mong 2013.05.27 14:43

    제가 아직 라그랑지에 대한 지식이 전혀 없어서 질문 드립니다.
    결론으로 나온 두식이 차이가 먼가요??
    두번째식은 토크에 관한 식인건 알겠는데, 첫번째 식은 멀 의미하는지 정확하게 모르겠네요 ㅠㅠ

    • BlogIcon PinkWink 2013.05.29 17:09 신고

      어떤 수식을 유도과정없이 그 결과식을 놓고 의미를 말로 풀어서 설명을 완전히 할 수 없을 때가 더 많습니다.
      이 경우도 마찬가지 입니다. 뭐 말을 만들어내면 할 수 있을진 모르지만, 그렇게 해본적은 없습니다.
      라그랑지안 유도법대로 그 시작이 되는 식을 잘 적용하고 거기서 유도를 시작한것으로 결과식이 중요한것이 아니라 사실은 첫 부분과 그 개념이 중요합니다. 해당식도 마찬가지로 제가 실수했을 수도 있구요.

  6. HT 2015.02.25 00:36

    안녕하세요 ! reaciton wheel을 이용해서 자세제어 하는 로봇을 만들어 보려고 하는 학생입니다.
    막연하게 Matlab을 이용해서 하고싶다 ! 라고 생각이 들어 Pinkwink님의 블로그를 정독하고 있는 중입니다..
    reaciton wheel 관련된 내용은 이 글밖에 없고, 세그웨이 만드실 때 시뮬레이션 하셨던 것 처럼 하려고 해도
    회전 중심점? 이 달라서 어떻게 적용해야 하는지 감이 안옵니다 ㅠㅠ
    질문을 정리하자면...reaction wheel을 이용해 균형잡는 로봇을 만드려면 어떤 글을 참고해야 할까요 ?..
    그리고 혹시 reaction wheel을 이용한 균형잡는 로봇을 만드실 계획은 없으신가요 ?ㅠㅠ

    • BlogIcon PinkWink 2015.02.25 16:26 신고

      아하... 이건 제가 답변을 쉽게 못하겠습니다.
      왜냐면 저도 시간을 들여서 다시 확인을 해야할듯해서요.. 이 글을 적을때는 감이 좀 있었지만.. 지금은 좀 시간이 필요하거든요^^

  7. HT 2015.03.17 02:19

    그러면 다른질문 드릴게요 ㅠㅠ
    위의 식에서 토크가 모터의 토크라고 하셨는데, 모터의 토크를 DC모터 방정식을 통해 얻은 값을
    바로 넣는건가요 ?? 그러면 안되지 않나요 ..?? 리액션 휠은 휠의 원심력의 힘을 받아 작용하게 되는건데
    그렇다면 원심력까지 고려한 DC모터 방정식을 새로 구해야 하는건가요 ?? 답변 부탁드립니다 ㅠ 너무 어렵네요 ...

    • BlogIcon PinkWink 2015.03.17 11:32 신고

      말씀하신 부분들은 이미 애초 역학을 고려할때 들어갔습니다.
      그래서 모터의 방정식만 들어가주면 전체 동역학이 완성되는 겁니다.

  8. HT 2015.03.21 11:58

    질문 1. 이 식을 선형화를 진행할 때, theta 2를 소거하여 theta 1에 대한 식으로 바꾸고
    선형화를 진행시켜야 하나요 ...???

    질문 2. inverted pendulum의 경우 선형화를 진행할 때 theta = phi로 두고 하던데, 그러면
    theta_1을 phi로 두고 계산하면 되는건가요?? 감이 잘 안와서 모르겠네요ㅠ

    • BlogIcon PinkWink 2015.03.22 00:24 신고

      그건 편한대로 해도 되던데요^^. 먼저 sin(theta) => theta 등등의 공식으로 진행 후에 다항식을 풀듯이 연립방정식을 풀고... 다시 선형화할 항이 있으면 또 선형화를 해버리는게 제일 편하더라구요^^

  9. HT 2015.03.23 02:26

    답변해 주셔서 감사합니다 !
    어렵고 모르는거 투성이지만 그래도 한발짝씩 나아가고 있는거 같네요 ㅎㅎ
    하나더 질문드릴게요.. 선형화 할 때 위 식에서는 sin(theta_1)밖에 바꿀게 없으므로 sin(theta_1) => pi - theta_1 으로 바꾸면 되는건가요?

  10. HT 2015.04.12 18:24

    현재 몸체 관성모멘트는 진자운동 동역학을 사용하여 진자운동 실험을 통해 구하고,
    휠의 관성 모멘트와 모터간 마찰계수는 직접 모터를 돌려 구할 예정입니다.


    진자운동 동역학 식으로 몸체의 관성 모멘트를 구하면서 지면과의 마찰을 무시할 수 없더라구요....
    만약 이 식에서 만약 지면과 몸체간의 마찰계수를 추가한다면, 어느 부분에 해아 할까요 ..?

    • BlogIcon PinkWink 2015.04.12 22:15 신고

      리액션휠은 지면위를 구동하는 것이 아닌데 왜 지면과의 마찰을 고려하나요???
      그럼에도 불구하고 그걸 고려한다면 당연히 지면과의 운동관계가 나와야할겁니다... 직선방향으로 구동된다면 그 방향의 운동방정식을 구하는 과정에서 자연스럽게 마찰은 고려가 될겁니다.

  11. HT 2015.04.13 02:44

    http://pinkwink.kr/319 에 나와있는 진자운동 식을 이용해 몸체의 관성 모멘트를 구하려고
    합니다. 여기에 나오는 마찰계수를 무시할 수 없을거라 생각되는데, 어찌해야 할까요 ??ㅜ

    • BlogIcon PinkWink 2015.04.13 09:52 신고

      그건 지면과의 마찰이 아니라...
      모터 축이 가지는 마찰입니다.
      맥슨같은 모터를 사용하고 계시다면 모터 데이터시트에 나오구요..
      아니면
      http://pinkwink.kr/336
      에서 모터마찰계수찾기라는 글을 참조하셔도 됩니다.

  12. HT 2015.04.30 18:17

    하나만 더 여쭤볼게요..

    여기서 선형화를 한 상태방정식은, 어떤값에 의한 식 으로 나와야 할까요?

    현재 theta_1, dot_theta_1 , theta_2, dot_theta_2 에 의한 값이 나왔는데

    theta_2 라는 위치값은 휠이 돌아가야 하기 때문에 필요 없을거 같은데요...ㅠㅠ

    • BlogIcon PinkWink 2015.04.30 20:35 신고

      그렇지 않습니다.
      휠의 각도도 제어 대상이 되는 상태에 포함시켜야합니다.
      안그러면 휠이 계속 발산할 수도 있어서
      전체 시스템을 안정화시키는데 힘들 수 있습니다.

  13. HT 2015.05.06 02:35

    안녕하세요 ! Pinkwink님 홈페이지를 보고 LQR제어를 하고 있는 사람입니다.
    너무 모르는게 많다보니 질문을 너무 많이 드린거 같아 죄송하네요..
    그래도 찾아보고 물어보고 하다보니 리액션 휠 제어 거의 끝부분에 왔다고 생각이 드네요..
    다 했긴 했는데 가중치 값을 잘못 설정했는지, 제대로 서지 못하네요...
    혹시 가중치를 더 알맞게 구하는 방법이 있을까요 ?? 아니면 계속 찾을때까지 테스트 해봐야 할까여 ?ㅠ

    • BlogIcon PinkWink 2015.05.06 12:17 신고

      MATLAB에서는 잘 되나요???
      먼저 그걸 확인해보시구요...
      안되는 것도 안되는 것에 따른 현상이 많지요...
      예를 들어 제일 중요한것은 바디의 기울어지는 각도인데..
      가중치 가장 큰값은 휠 각도에 있다든지...
      전체적으로 좀 더 낮은 제어입력을 사용해야한다든지.. 그러기 위해서는 R값을 높이는 것이구요...
      이런 방향이 필요하답니다.

    • BlogIcon 오시 2015.05.06 13:37

      안녕하십니까? 공학도 오시입니다.
      저도 도울수 있다면 도움을 드리고 싶습니다.
      혹시 시뮬링크로 시뮬레이션 할때 발산 하시는지요? 모터쪽의 동역학은 어떻게 하셧는지요?

    • BlogIcon PinkWink 2015.05.06 14:16 신고

      ㅎㅎ. 감사합니다.^^

  14. HT 2015.05.06 16:55

    안녕하세요 ! 답변주셔서 감사합니다 ..
    현재 시뮬레이션 하면 발산하지 않고 0 또는 0.001 정도로 수렴하게끔 값을 입력해 보았습니다.
    모터쪽 동역학은
    http://pinkwink.kr/357
    참고하여 최종 동역학 방정식을 완료했습니다.
    현재 문제점은 각도에 따라 휠이 제대로 돌긴 하지만 가만히 서질 못하고 계속 왔다갔다 하다가 결국
    쓰러지네요 ....

    • BlogIcon PinkWink 2015.05.06 22:39 신고

      가능하면 R값을 낮춰서 제어입력을 약간 크게...
      혹은...
      주 상태에 해당한는 Q의 대각 성분만 10배나 20배 정도로 키워보시고 한 번 시도해보는 것도 어떨까 합니다.
      그리고, 기울어지는 정도에 맞춰 휠의 회전 방향이 상황에 맞는지도 보셔야하구요.
      또한 제어기가 생성하는 전압을 모니터링하셔서 모터 정격에 맞춰 여유로운지도 한 번 확인해보시기 바랍니다.

    • 오시 2015.05.07 00:04

      아....제가 도와드릴수 있는게 아니었군요....
      혹시 그럼...제작 후의 문제점 이신지요....?

    • BlogIcon PinkWink 2015.05.07 10:39 신고

      네.. 그런듯 보이네요.. 제어기의 성능에 대한 부분으로 넘어가신듯 한데요...

    • HT 2015.05.07 17:48

      네 그렇습니다 현재 동역학 완료해서 MATLAB 구성한 후 나온 결과값으로 작동시켜 봤는데
      기울어짐에 따라 휠의 회전 방향도 맞고 Q의 가중치 값을 여러번 바꿔보았지만 각도 0도 부근에서
      균형을 잘 잡지 못하는거 같아요.. 0도 부근에서도 계속 회전을 해줘야 어느정도 균형을 잡을거 같아
      현재는 바디의 각도 가중치 값을 계속 올려보고 있습니다 ....ㅠ

    • BlogIcon PinkWink 2015.05.08 13:08 신고

      흠... 0도 부근에서 힘이 딸린다는 이야기군요.
      전체적인 제어입력을 한 번 높여보시는 것도 해보시길 바랍니다.

  15. HT 2015.05.09 17:58

    시뮬레이션을 해서 그래프가 어떤식으로 나와야 제어가 잘되게 나올까요 ...??

    그나마 잘 되는게 각도0도 근처에서 조금 파닥파닥 거리다가 쓰러지네요....ㅠ

    • BlogIcon PinkWink 2015.05.09 21:51 신고

      앗.. 당연히.. 그래프는 설계자가 의도한 대로 나와야 하겠죠.
      내가 의도한것이 어떤 상태가 0으로 가길 원했다면
      결과 그래프도 그렇게 나와야 하는 것일 거구요...
      이렇게 모델 베이스로 제어기를 꾸미는 경우는 시뮬레이션 결과를 보고난 다음 어느정도 튜닝을 시작해야 합니다.

  16. 하하 2018.09.27 00:37

    질문좀 드리겠습니다. 역진자에서 운동에너지 항을 구하실때 직선운동에너지와 회전운동에너지를 다 구하셨는데 회전운종에 직선운동에 에너지가 포함된거 아닌가요..?

    제 생각에는 T = 1/2 * J(휠) * (theta1_dot+theta2_dot)^2 + 1/2 * J(시스템) * theta1_dot ^2 라고 생각이 들어서요..

    • BlogIcon PinkWink 2018.09.30 12:13 신고

      그때의 기억이 잘 나지 않는데.. 또 그걸 기억하기위해 지금 이 글을 검토할 시간이 없어서요^^
      근데 포함하든 하지않든.. 각각의 방법에서 진행해서 최종 결론으로 모여보면 같은 결과였던기억이 나는데 정확하지 않습니다.ㅠㅠ.

  17. 영잼 2019.07.04 23:51

    Theta1에 관해서 라그랑지안 함수 시 위치에너지 부분 cos 미분하면 -sin 되어 원래 식인 -에 의해 +부호가 되는 것 같은데 -부호로 쓰인부분이 위에서 말씀하신 좌표설정이나 초기상태에 따라 중력가속도 g의 부호에 의해서 -부호로 나온 것인가요?ㅠㅠ

    • BlogIcon PinkWink 2019.07.07 01:53 신고

      내가 설정한 기준방향과 여러 요소를 고려해서 부호를 선정합니다. 정확하게는 했을겁니다.ㅠㅠ. 너무 오랜전이라 추측성 답변입니다.ㅠㅠ

  18. 2020.11.17 20:22

    비밀댓글입니다

    • BlogIcon PinkWink 2020.11.24 10:47 신고

      최대한 무게가 가운데 오도록 잘 만들려고 했지만, 조금 어긋납니다. 그 상태에서 그냥 동작시켜도 괘찮습니다. 약간 기울어진 상태에서 잘 동작할겁니다.
      그리고 불안하면 그냥 뒤집어서 기울어진 각도를 찾고 그 상태를 중심이라고 생각해도 됩니다.