본문 바로가기

Robot/Project

Balancing Robot 밸런싱 로봇

본 내용은 현재 너무 오래되고 포스팅의 내용이 자세하지 않아 다시 포스팅을 했습니다. 연재를 수행했지만, 최종글인 http://pinkwink.kr/344 을 읽으시면서 링크를 따라가시면 됩니다.


2005년인가 2006년에 일인승 스쿠터로 많은 사람들의 관심을 끌었던 Segway라는 제품(회사?)가 있었습니다. 얼마전에 읽은 블로그에서는 이제 2인승도 나올거라고 하더군요. 여하튼 당시 그 모델을 보고 제어나 전자를 전공한 학생들이 한번쯤 만들어 보고 싶어 했었거든요. 우리 실험실도 그래서 당시(2007년) 학부논문조와 함께 작업을 했었습니다.


 

I. 시작하기 전에 

 밸런싱로봇은 그 구동방법이나 원리등이 역진자 시스템과 아주 흠사합니다. 뭐 딱 봐도 카트형 펜들럼이죠. 일단, 실제 제작전에 카티아(Catia)로 외형을 잡고 아이디어 회의를 했었네요.


위의 그림이 당시 어찌어찌 하면서 잡은 외형입니다. 모터를 놓을 자리나, 센서의 위치, 적절한 무게등등을 논의 했었죠.


이번엔 못쓰는 시디와 그 시디 케이스와 빨대(^^)로 모형을 제작해 봤습니다.


음... 이게 최종적으로 만들어진 모형입니다. 허접 납땜의 모습이 보이지만, 전시를 위해 데코레이션도 나름대로 좀 했었죠...ㅜ.ㅜ


당시 사용한 맥슨모터의 스펙입니다.

II. 동역학 방정식 유도


뭐 우리가 항상하듯이 또 동역학 유도 해야지요^^ 밸런싱 로봇을 위와 같이 간략화 할 수 있습니다. 무게들이 극단적으로 위 그림처럼 배치되어있다고 보는 겁니다. 지구 중심에서 쓰러진 각도를 phi라하고 지구중심에서 바퀴가 돌아간 각도를 theta라 하고 몸체에서 바퀴가 돈 상대 각도를 beta라고 했습니다.


위는 각 펙터들의 의미입니다.


또 다른 이야기 하나하면, 위의 문자에 이상한 &기호 보이시죠? 이후에도 계속 저런 &기호를 만나실 텐데, 저건 미분을 의미하는 dot입니다. 즉, theta_dot 이 theta_&로 표기되어진 것입니다.
 음. 위 방법은 라그랑지방법으로 동역학을 유도할려고 하는 것입니다. 그러기 위해서 위에서 나온 T, U, D, Q를 구해야만 합니다.


위에서 구한 운동에너지나 위치에너지등등을 그 위의 원식에 대입하면


와 같은 비선형식을 얻게 됩니다.

III. 동역학 방정식의 검증

 당연히 위의 동역학 방정식을 검증해야만 합니다. MATLAB/Simulink를 이용하여 검증을 수행했습니다. 실제 기구부를 거꾸로 뒤집어서 단진자처럼 자유운동을 하는 움직임을 시켜놓고 그 데이터를 MATLAB에서 확인한 것입니다.


위는 그때 사용한 MATLAB/Simulink 블럭도입니다. 일단 시뮬레이션 결과만보면


와 같습니다. 그래프를 잘 보면 몸체의 각도가 90도와 270도를 지날때마다 바퀴의 방향이 바뀌는 것을 볼 수 있습니다. 이는 90도 270도 지점에서 진자 운동을 하면서 바퀴에 대해 반대의 힘을 받기 때문이라고 생각됩니다.


다시 자세한 시스템 ID를 위해, 실제 기구부의 wheel을 고정시키고 몸체만 진자운동시켜서 위의 시뮬레이션 결과와 비교합니다.


일단 저정도가 최대한 일치시킨 정도입니다.


이번에는 실제 기구부의 몸체를 고정시키고 Wheel만 등속 회전 운동을 시킨 결과를 비교하기 위해서입니다.


이 부분도 역시 최대한 일치시킨것입니다.


위의 실험으로 시스템의 모든 파라미터를 ID할 수 있었습니다.


IV. 제어기 설계


이렇게 해서 비선형 방정식을 이제 선형화후 상태방정식으로 표현해야겠습니다.


0도부근을 동작점으로 잡아야겠지요?^^


선형화 되었습니다. 여기서 다시


몇몇 변수들을 치환하고


위와 같이 간단히 표현했습니다.


위의 형태의 상태방정식으로 표현하면


이렇게 될 것입니다.


상태궤환을 사용하여 각 상태를 항 상 0으로 유지하는 레귤레이터를 LQR을 이용하여 설계할 수 있습니다. 상태방정식을 블럭선도로 표기하면 위와 같습니다. 이때 제어기 K를 고려하면


와 같이 꾸며지게 될 것입니다.


이때 제어입력을 위와 같이 잡은 것입니다. 이를 상태 방정식에 대입하여 다시 정리하면


이렇게 됩니다.


MATLAB에서 제공하는 lqr명령어를 사용하여 간단히 제어게인 K를 구할 수 있습니다.


제어기를 테스트하기 위한 Simulink 블럭입니다.


제어 결과는 아주 만족스럽습니다.^^


V. 하드웨어 구성


저희가 이 밸런싱로봇을 구동하기 위해 사용한 하드웨어적 장비들은


먼저 DSP2812를 주 프로세서로 사용했습니다.


모터와의 절연을 위해 Photocoupler는 HCPL2731을 사용했구요.


모터 드라이버로는 LMD18200을 사용했습니다.

VI. 성공^^

동작 결과 동영상을 보시죠^^ (아래 동영상은 본문에서 말하는 로봇의 다음 버젼입니다. 당시 동영상으로 기록을 남기지 않고 바로 다음버젼으로 넘어갔습니다. 동영상의 로봇과 본문의 로봇이 형태가-껍데기(^^)가 다르다는 것을 알 수 있으실겁니다.)



반응형