12.07.2015 Views

Cart-Pendulum System 피드백 제어기 설계 - 한국항공대학교

Cart-Pendulum System 피드백 제어기 설계 - 한국항공대학교

Cart-Pendulum System 피드백 제어기 설계 - 한국항공대학교

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2010년 1학기 자동제어 설계 프로젝트(Design Project)<strong>Cart</strong>-<strong>Pendulum</strong> <strong>System</strong> 피드백 제어기 설계한국항공대학교 항공우주기계공학부(Instructor: 권상주 교수)모델링 안정성 해석 제어기 설계 시뮬레이션 실험1[1] 카트-진자 시스템 운동 방정식 유도• 2원 연립2차 비선형 미분방정식2⎧⎪( m + m ) x+ m lθ cosθ − ml θ sin θ + bx= f ( t)⎫1 2 2 1⎪⎨2⎬⎪ml ⎩ 2θ + mlx 2cosθ + mgl2sinθ + b 2θ= 0 ⎪⎭<strong>System</strong> Parameters수레 무게(m1)2.54kg진자 무게(m2)0.56kg진자 길이(l)400mm수레 감쇠계수(b1) 01 0.1~0.3 03진자 감쇠계수(b2) 0.1~0.3bx1b 2θ Sampling time (RK4적분 주기)모터 토크 한계1 ms (0.001초)50 N2


[2] 카트-진자 시스템의 안정성 해석‣ 안정한 평형점(stable equilibrium point): theta = 0 deg에대한 선형화- 선형화된 정상진자 운동방정식 유도:0θ = 0 부근에서 cosθ ≈1,sinθ ≈θ로 근사화- 전달함수 유도:X () sθ()s,Fs () Fs ()- root-locus 해석- 주파수 응답, Nyquist 안정성‣ 불안정한 평형점(stable equilibrium point): theta = 180 deg에 대한 선형화- 선형화된 역진자 운동방정식 유도:0θ → θ + 180 로 치환후 cosθ ≈1,sinθ ≈θ로근사화- 전달함수 유도:X () s θ () s,Fs () Fs ()- root-locus 해석- 주파수 응답, Nyquist 안정성3[3] 피드백 제어기 설계입력 제한disturbance(motor torque의 한계) dt ()<strong>Cart</strong>-pendulum 비선형 운동 모델(theta = 0 ~ 360 deg)ref. command PID 제어기x()tθ d () tdet()+ ut()f() tK(s)− θ () t+<strong>Cart</strong> 운동<strong>Pendulum</strong> 운동Coupled dynamics( ) K : K 10: 1, K : K 10: 1, K : K 1: 1예 P D= P I = D I =- P control: Ks ( ) = KP→ ut ( ) = KPet( )-PD control: Ks () = KP + KsD→ ut () = KPet () + KDet()- PID control: 1Ks ( ) = KP + KI+ KDs→ ut () = KetP() + KIetdt () + KDet()s∫4


[4] 제어 성능 시뮬레이션• 선택 1: Simulink를 이용한 시뮬레이션• 선택 2: m-file 프로그래밍을 통한 시뮬레이션• 시뮬레이션에서의 실제적인 고려사항들(practical considerations)• PID 제어 입력: ut () = ketp() + kDet () + kI∫etdt ()→ discrete-time 형태로 표현:⎛ek( ) −ek( −1)⎞uk ( ) = kekp( ) + kD⎜⎟+ kTekI( ) + uk ( −1)⎝ T⎠→ 제어오차와 제어입력 제한을 확인하면서 적절한 gain tuning• Joint 입력 토크:f() t = u() t + d()t→ 제어 입력 제한(모터의 한계): −umax ≤u () t ≤umax ( 예) umax=10,50,1 00[ N]• Disturbance 입력 : d() t = Dsin( ωdt) , D = 0.2 umax, ωd= 50rad/sec→ D와ω 값을 변화시키면서 제어 오차가 어떻게 변화하는지를 고찰d5[5] 시뮬레이션 Cases1) 자유진자 운동 시뮬레이션 (open-loop)• 초기조건 변화에 따른 카트와 진자 운동의 변화• 점성 마찰계수 변화에 대한 운동의 변화2)정상진자 제어 시뮬레이션: 기준 입력 θ () t = d0• 초기조건, theta(0)= -10~10 deg3)역진자 제어 시뮬레이션: 기준 입력 θ ( t ) = d180• 초기조건, theta(0)= -170~190 deg )4) 큰 각도의 기준입력에 대한 시뮬레이션(예) θ 0 0( t ) = d30 ( 정상진자의 경우 ) ,150 ( 역진자의 경우 )5) (Option) 진자 도립 시뮬레이션 : 초기 정상진자 상태에서 역진자 상태로 도립시키는 제어 시뮬레이션00㈜ 위 모든 경우에 대하여- 구동기 입력 제한 효과 고려,- 외란 입력에 의한 제어 성능 변화 고찰,- PPDPID제어 P, PD, PID 성능 비교6


설계 프로젝트 보고서 제출• 보고서는 PPT 파일로 작성(공학인증 포트폴리오)‣ 앞장 [1]~[5]에 제시된 모델링, 해석, 제어기 설계, 동적 시뮬레이션 과정을 정리‣(Option) Graphic Animation‣ 제출기한: 2010년 6월일㈜ 지도교수와의 수시면담 환영! (기312호)그래픽 애니메이션 기법에 관한 문의는 TA 김상태(기402호)7(참고)미분방정식 적분을 위한 MatLab Code 例 (script m-file)% main.mm% === Example of RK4 Integration algorithm%------- 2nd order ODE ----------------------% y_ddot + a*y_dot + b*y = 0% with (I.C.) y(t=0) = , y_dot(t=0) =clear;%---------- <strong>System</strong> Parameters --------------a = 10.; b = 100.;% (I.C.)x1(1) = 3.0; x2(1) = 0.0;y′′ + ay′+ by = 0(I.C.) y(0) = 3, y′(0) = 0 ←Spring을 3m 앞으로 당겼다 놓는 경우k 2b= 100 = = ωn→ Natural freq.( 고유진동수),ωn= 10 rad / secma = 10 = 2ζωn→ Damping coeff.( 감쇠계수),ζ =( ω , ζ)값을 변화시켜 볼 것.nh = 0.01; % Integration time intervaltf = 3.0; % Final timet = [ 0: h: tf]';%--- RK4 integration start -----------------------------for i = 1: 1: size(t,1)-1% Slopes k1, k2, k3, k4k11 = x2(i) ;k12 = -a*x2(i) - b*x1(i);k21 = x2(i) + 0.5*k12*h ;k22 = -a*( x2(i) + 0.5*k12*h ) - b*( x1(i) + 0.5*k11*h );k31 = x2(i) + 0.5*k22*h ;k32 = -a*( x2(i) + 0.5*k22*h ) - b*( x1(i) + 0.5*k21*h );k41 = x2(i) + k32*h ;k42 = -a*( x2(i) + k32*h )- b*( x1(i) + k31*h );% Updated valuex1(i+1) = x1(i) + (k11 + 2*k21 + 2*k31 + k41)*h/6;x2(i+1) = x2(i) + (k12 + 2*k22 + 2*k32 + k42)*h/6;end;figure(1);subplot(211); plot(t, x1); xlabel('time(sec)'); ylabel('x1'); title('Position'); grid;subplot(212); plot(t, x2); xlabel('time(sec)'); ylabel('x2'); title('Velocity'); grid;8


(참고) MatLab Code 例 (function m-file)% === Example of RK4 Integration algorithm% It requires m-files with subfunctions rk4.m & dyn_eqn.m%========================================% 화일명: rk4_main.m or 임의명.mfunction rk4_main()%각 subfunction을 독립적인 m-file로 저장하면 main 함수 이름 생략 가능%------- 2nd order ODE ----------------------% y_ddot + a*y_dot + b*y = u(t) with (I.C.) y(0), y_dot(0)clear;%---------- <strong>System</strong> Parameters --------------%global a b h;a = 3.; % c/mb = 100.; % k/mh = 0.01; % Integration time interval% (I.C.)x(1,:) = [3.0 0.0]; %x1(1) = 3.0; x2(1) = 0.0;tf = 3.0; % Final timet = [ 0: h: tf]';% Subfunction 1% rk4.mfunction x = rk4( x, u, a, b, h )% Slopes k1, k2, k3, k4


(참고) Inverted <strong>Pendulum</strong> 제어 시스템 H/W 구성Control program (VC++)CounterRotory EncoderDAC (제어 명령)<strong>Cart</strong> (linear motor)+ <strong>Pendulum</strong>Linear EncoderControl PCCounterMotor Driver11(참고) 실험 영상 및 데이터 정리1) 초기 도립 조건에 대한 도립 제어기준명령(진자의 각도) = 180 deg에대한 제어 오차2) 스윙 동작에 의한 도립 제어‣ 초기 각도 = 0에서 모터 구동 시작‣ Open-loop p mode에서 선형 모터를 좌우로빠르게 운동시켜 진자를 도립시킴‣ 진자의 각도가 180 deg 근처에 오면 closed-loop control mode로 전환 기준명령 180 deg 에 대한 도립 제어프로그램 GUI12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!