본문 바로가기

Robot/Project

[밸런싱 로봇 만들기] 7. Lego Mindstorm 동역학 따라하기

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

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

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

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

반응형