본문 바로가기

Robot/Project

Cart type Inverted Pendulum (카트형 역진자) 시스템

2002년 학부 졸업논문으로 완성했던 카트형 역진자 시스템입니다. 이걸 소개하는 것만 3번째네요. (네이버의 제 블로그-지금은 안쓰지만, 이전 pinkwink.kr) 데이터를 백업받을 수도 있었지만, 그래도 명색이 학부졸업논문인데, 너무 허덥하게 소개한듯해서 그냥 다시 작성할 각오로 백업받질 않았습니다. (지금 후회 中 ...) 역진자 시스템은 로터리 형이나 요즘 유행하는 밸런싱 형태도 있지만, 이 카트형 펜들럼은 상대적으로 동역학이 쬐~금 쉽고 (정말 쪼금 쉽습니다.) 기구부의 구현을 생각할때 편합니다. 기구부에서는 바퀴와 지면의 마찰력을 적절히 유지시켜야하는 부분이 좀 걸리긴 하죠^^. 역진자, 혹은 도립진자, (Inverted Pendulum) 시스템은 미사일이나 로켓트, 2족 보행로봇 등을 제어하기 위해 고안된 간단한 모델 시스템으로 카트(Cart)위의 폴(Pole)이 적당한 제어력이 없는 상황에서 중력에 의해 어느 한 쪽 방향으로 넘어지려고 할 때 외부에서 카트에 힘을 가하여 특정 위치와 폴의 각도를 유지시키는 시스템을 말합니다. 어릴때 빗자루 손가락 끝에 두고 중심잡던 놀이를 생각하시면 됩니다. 2002년 당시 동역학을 유도하고, 선형화시켜서 LQR을 이용하여 제어기를 설계했습니다. 사용한 마이크로프로세서는 80c196이었고, 앱솔루트 타입의 엔코더 2개를 센서로 사용했습니다. 모터는 Maxon의 DC모터를 사용했지요.

위의 모습은 논문 발표회를 하던 모습입니다. 쿨러가 달린 부분이 당시 DC 모터의 구동회로를 H-Bridge로 꾸몄는데 뭐가 잘못되었는지 발열이 너무 심해서 달았던 겁니다. 바퀴가 있는 부분 바로 위가 엔코더입니다. 폴이 넘어지는 각도를 측정하지요. 사진에서는 안보이지만, 앞바퀴에 또 하나의 엔코더가 달려있어서 카트의 위치를 센싱합니다.

I. 동역학 방정식 유도

카트형 펜들럼의 동역학을 유도하기 위해 간단히 카트부분을 도식화한겁니다. 폴이 누르는 힘을 P라고 하고 기울어진 폴이 카트를 미는 힘을 N이라고 합니다. 모터에 의해 움직이는 힘을 F로 두고, 카트의 위치와 가속도를 X와 X의 두번 미분치로 잡았습니다.

위는 폴(Pole)을 도식화한 것입니다. 폴자체는 카트위에 고정되어있으니 중력방향으로 병진운동으로 낙하(중력에 의해 기울어지는 것과는 별개의 문제)하지는 않습니다. 그 힘을 P로 보고, 역시 카트를 밀려고하는 힘을 N으로 보고 있습니다.

위 의 두 그림을 수직으로 표현하면 저렇습니다. 첫 그림에서 왼쪽으로 카트가 움직일려고 하는 힘 F는 속도성분에 비례하는 마찰력과 폴의 기울어짐에 의해 방해받은 힘과 실제 F=Ma라는 유명한 법칙에 의해 움직인 전체 합과 같다는 것입니다. 두 번째 수직은 폴 입장에서 유도된 것인데, 폴의 기울어지는 각도를 theta라고 했을때, 그 가속도성분은 theta 자체가 가지는, 즉 폴의 기구적인 마찰력과 무게 중심을 폴의 정중앙에 있다고 가정했을때 N과 P의 삼각함수로 표현할 수 있습니다. 이를 다시 폴의 Y축 X축 방향으로 표현하면

이 될것입니다. 이를 최초의 식에 대입하여 정리하면

이 됩니다. 이제 제어입력을 힘으로 보고난 x와 theta의 식으로 표현된것입니다. 하지만, 위 식들은 비선형 운동방정식입니다. 이를 동작점 부근에서 선형화할 필요가 있습니다.

동작점을 theta = 0 로 생각하면, 사인과 코사인은 각각 위와 같이 바뀌게 될것입니다. 그리고 평형상태 (모든 상태가 0)에서 상태를 편차까지 고려하여 다시 정립하면,

이를 이용하여 원 동역학을

로 표현하겠습니다. 좀 복잡한듯하지만, 대부분 상수값이므로 그리 복잡한 것도 아닙니다.^^ 이제 고려해야할 것이 DC모터에 관련된 부분입니다. 위 수식은 제어입력(u)을 단지 힘으로 보고 있기 때문에 바퀴를 돌릴 DC모터도 동역학적 고찰이 필요합니다. 여기선 통상 두 가지 방법이 사용되는데, 첫 번째는 필요한 힘을 산출한다음 모터의 제어기를 별도로 설계해서, 그 모터 제어기에게 필요한 속도로 돌게 하는 겁니다. 그러나 여기서는 다른 방법으로 모터의 동역학을 저 위의 수식에 포함시켜서 하나의 시스템으로 표현할 겁니다. 이를 위해 모터의 전압에 관한 식을 보면,

Vb는 역기전력으로

이므로 다시 대입하여

로 표현합니다. 우리는 기어가 장착된 모터를 사용하니까 기어비도 고려해서 생각해야겠죠.

위 그림이 도식화된 모터 제어 구성도입니다. 바퀴의 회전을 생각한다면, 회전 각도에 대한 원의 둘레로 표현을 해야할 것입니다. 이것까지 모두 고려한 수식이

입니다. Rm, Km 은 모터의 Data Sheet에 있으니 큰 걱정은 없을 겁니다.

여기서 토크식

을 이용해서

힘을 전압으로 완전히 표현할 수 있게 되었습니다. 저 F를 원 동역학에 다시 대입하겠습니다.

예.. 이제 모터에 인가되는 전압을 제어입력으로 가진 동역학을 우리는 얻게 되었습니다. 여기서 p는

입니다.

위의 상태방정식에서도 다시 전압으로 표현하면

이렇게 될것입니다.

이 식에 각종 파라미터 값인

를 대입하여

상태방정식을 얻었습니다. 뭐 이제 제어기를 설계하면 되겠네요^^ 그 전에 하드웨어의 구성을 잠시 보겠습니다.

II. 하드웨어의 구성

실제 제어 구동부의 개략도입니다. 펜들럼의 센싱값이 마이크로프로세서로 입력되고 제어게인에 의해서 각 모터에 인가될 전압이 결정되면 모터드라이버에 입력하면 됩니다.

그 모터 드라이버로 채택한 H-Bridge를 설명하는 그림입니다. 정역회전에 대해 설명하는 것이지요.

III. 제어기 설계

모든 선형시스템은 위와 같은 상태방정식으로 표현가능합니다. 즉, 아까 우리도 위의 형식으로 구했지요.

각 행렬들입니다.

특성근을 조사해보니, 모든 근이 좌반부에 있는것은 아니네요. 즉, 불안정한 시스템입니다.

그러나 가제어성을 조사해보니 Rank가 4가 되어서 선형제어기 설계가 가능하겠습니다. 그래서 우리는 LQR제어기법을 이용한 상태궤환 제어기를 설계하겠습니다. 최적 제어 문제는 다음의 성능지수 J를 최소화하는 제어 이득행렬 K를 구하는 것으로 정의 됩니다.

여기서 Q, R은 설계변수가 됩니다. 우리는

로 Q,R을 잡았습니다.

MATLAB의 LQR 툴박스를 이용해서 간단히 제어 이득을 구했습니다.

MATLAB/Simulink에서 사용한 제어블럭입니다. 상단은 선형화된 시스템이고 하단은 비선형시스템입니다. 제어기를 선형시스템에서 구했지만, 실제 적용은 당연히 비선형시스템이니 실제 구동전에 비선형시스템에서도 잘 동작하는 지 확인 해야지요...^^

비선형 시스템의 내부 블럭입니다.

시뮬레이션 결과이빈다. 제어입력이에요.

Cart와 Pole의 상태입니다. 제어성능이 괜찮다는 사실을 발견할 수 있습니다. 이를 실제로 테스트하는 환경을 보겠습니다. 동영상의 화면에 나오는 사람은 제가 아닙니다.^^

반응형