본문 바로가기

Theory/ControlTheory

부유체 위의 크레인 제어기 설계 - 1. 궤환선형화기법


   궤환선형화 기법을 이용한 제어기 설계 !  
 

이 전에 구축했던 부유체 위의 크레인의 동역학[[프로젝트/ControlTheory] - 부유체 위의 크레인 동역학]에서 라그랑지 방정식 부분


에서 힘에 관해 식을 다시 변경하고


이렇게 적어볼 수 있을 겁니다. 여기서


입니다. 그 식을 다시 적으면




으로 표현할 수 있는데요. 여기서 e는 오차입니다.


그러면 이렇게 오차에 대한 선형시스템을 구축할 수 있는데요. 이제 위 시스템을 안정화 할 수 있는 a, b, c, d를 구성하면 됩니다. 


실제 크레인의 정확한 제원을 몰라서 그냥 임의로 설정했습니다.


제가 이전글[[프로젝트/ControlTheory] - 부유체 위의 크레인 동역학 - 2. 절대좌표계에서 상태를 설정]에서 말했듯이, 트롤리의 절대좌표계에서의 수평위치를 기준값으로 인가해야합니다. 그 기준값은 위에 나타나 있습니다. 10초정의 시간동안 30미터를 이동하라는 지령을 내릴려고 하는 것이지요.


그리고, 아까말한 a,b,c,d는 위와 같이 중근을 같도록 그냥 편안하게^^ 잡았습니다.

   MATLAB을 이용한 시뮬레이션 !  
 

이제 MATLAB/Simulink를 이용해서 시뮬레이션을 해 보아야겠네요.^^


위 그림과 같이 전체 블럭을 구성했습니다. 표시된 부분은 [[프로젝트/ControlTheory] - 부유체 위의 크레인 동역학]에서 이야기한 결과식이


와 같이 들어가 있습니다.


위에 표시된 부분은 제어기인데요. 방금이야기한 제어기(F_t, F_b)를


와 같이 구성했구요.




위 부분은 기준값을 설정하는 부분입니다. 그것은 [[공학기초/MATLAB] - Embedded Block을 이용해보자.]에서 이야기했던 Embedded Block으로 


와 같이 짜여져 있습니다. 위와같이 구성한 이유는 시뮬레이션 시작과 동시에 미분값이 갑자기 큰 값이 들어가기 때문에 그것을 방지하기 위해서입니다.


위에 표시된 부분은 y_t의 기준신호를


에 의해 y로 변경해주는 블럭으로


간단히 function 블럭으로 꾸며져있습니다.



 
파도에 의해 흔들리는 부유체의 각도(alpha)를 표현하기 위해 위에 표시된 대로


정현파 입력을 사용합니다. 물론 그냥 미분기를 사용해서 dot_alpha, ddot_alpha를 구현할 수도 있으나 기준값을 설정해줄때와 같은 이유로 극초반의 큰 미분값을 막기 위해 실제 손으로 미분을 계산해서 각각 넣어주었습니다.

 
그리고, 표시된 저 부분은 시뮬레이션의 편의를 위한 부분으로 a,b,c,d값 뿐만아니라 시뮬레이션 파라미터의 변경을 편하게 해주기 위해 [[공학기초/MATLAB] - Simulink에서 Annotation 사용하기]에서 이야기했던 annotation을 사용한 것입니다. 

이렇게 해서 시뮬레이션한 결과


위와 같네요. 귀찮음으로 인해 그냥 화면캡쳐한 것을 용서해주세요^^

일단 트롤리의 수평성분(y_t)은 아주 잘 따라갑니다. 그것을 유지하기 위한 (y)의 움직임도 보이네요. 각도가 큰데? 하고 생각하실지 몰라도 소숫점 16자리에서의 변동으로 거의 변화가 없다고 봐도 무방합니다. 그런데 제어입력이 좀 크네요....ㅜ.ㅜ 10에 7승 정도라면, 꽤 크다고 볼 수 있습니다. 특히 스프레더 쪽에 추가제어력을 설치할 생각인데 이러면 곤란하지 않을까하는 생각도 드네요. 그것을 보완하기 위한 제어기 설계를 다시 생각해보아야겠습니다.


반응형