Cart-Pendulum System í¼ëë°± ì ì´ê¸° ì¤ê³ - íêµíê³µëíêµ
Cart-Pendulum System í¼ëë°± ì ì´ê¸° ì¤ê³ - íêµíê³µëíêµ
Cart-Pendulum System í¼ëë°± ì ì´ê¸° ì¤ê³ - íêµíê³µëíêµ
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