Mô Hình Đối Tượng
Giới thiệu Pendubot
Mô hình Pendubot là mô hình có ngõ vào điều khiển ít hơn số bậc tự do, có độ phi tuyến cao và rất khó để điều khiển Pendubot với cấu trúc cơ khí không quá phức tạp nên được nhiều nhà nghiên cứu sử dụng để kiểm tra giải thuật điều khiển trong các phòng thí nghiệm.Trong bài báo cáo này em sẽ xây dựng bộ điều khiển tối ưu LQR, bộ điều khiển phi tuyến (bộ điều khiển trượt) dùng giải thuật GA tìm thông số cho bộ điều khiển trượt ở vị trí TOP với thời gian dài.
Hình 1:Một số mô hình pendubot
Xây dựng phương trình toán học
Hình 2: Mô hình hoá
Pendubot Ở Hình 2, ta chọn hệ trục tọa độ như hình, tung độ có hướng thẳng đứng hướng lên và hoành đồ nằm ngang hướng sang phải.
Cấu trúc của một hệ thống
Pendubot được chỉ ra trong Hình 2
Hệ thống cơ khí kích thích dưới là một robot với một bộ truyền động ở khớp 1 và khớp 2 quay tự do quanh khớp 1
Từ cấu tạo của Pendubot ta cần xây dựng mô hình toán học cho nó để phục vụ quá trình tổng hợp bộ điều khiển và mô phỏng trên máy tính một cách chính xác Khi xây dựng phương trình động lực học ta sử dụng phương pháp Euler-Lagrange
Phương trình Euler-Lagrange để mô tả chuyển động của một hệ bảo toàn Phương trình này thường được dùng để khảo sát những chuyển động cân bằng như dao động hay quỹ đạo của các hành tinh hệ cân bằng con lắc, xe cân bằng cũng như các hệ SIMO khác Do vậy phương trình Euler – Larange đóng một vai trò rất quan trọng trong điều khiển nói chung và hệ pendubot của nhóm nói riêng
Dạng tổng quát của phương trình Euler – Larange. j t j j d L L d q q
Các biến:q 1 , q 2 và Trong đó,q 1 và q 2 là các tín hiệu đầu ra và τ là tín hiệu đầu vào Do hệ pendubot có 1 tín hiệu vào vào hai tín hiệu ra điều khiển nên j là 1 Khi đó 1 dựa trên bộ điều khiển được thiết kế Mỗi biến được định nghĩa như sau:
Bảng 1: Kí hiệu các thông số mô hình
Ký hiệu Đơn vị Mô tả q 1 rad Góc khớp 1với phương Ox q 2 rad Góc lệch khớp 2 so với khớp 1 l 1 m Chiều dài khớp 1 l 2 m Chiều dài khớp 2
I 1 kg m 2 Moment quán tính của khớp 1
I 2 kg m 2 Moment quán tính của khớp 2 g m s / 2 Gia tốc trọng trường
1 l c m Khoảng cách từ trục động cơ đến tâm của khớp 1
2 l c m Khoảng cách từ trục động cơ đến tâm của khớp 2 m 1 kg Khối lượng khớp 1 m 2 kg Khối lượng khớp 2
Ta có bảng các biến số ký hiệu trên.
: lực tác dụng (generalized forces) q: tọa độ suy rộng (generalized coordinates)
Với hệ toán học pendubot ta xét các thanh là đồng chất và có tâm của mỗi thanh ở vị trí chính giữa của mỗi khớp Ta tiến hành xây dựng phương trình toán học cho hệ pendubot thông qua tính toán động năng và thế năng của hệ
- Tổng động năng của hệ thống pendubot như sau:
Từ hình 2 xét vị trí của các khớp:
Khớp 1: x 1 lc 1 cos( );q y 1 1 lc 1 sin( )q 1 717\* MERGEFORMAT (.)
Khớp 2: x 2 l 1 cos( )q 1 l c 2 cos(q 1 q 2 );y 2 l 1 sin( )q 1 l c 2 sin(q 1 q 2 ) 818\* MERGEFORMAT (.)
Từ vị trí của các khớp ta đạo hàm cấp 1 để có vận tốc là:
1 1 1sin ;1 1 1 1sin 1 x lc q q y lc q q 10110\* MERGEFORMAT (.)
2 1 1sin 1 2( 1 2)sin( 1 2); 2 1 1cos 1 2( 1 2) cos( 1 2) x l q q lc q q q q y l q q lc q q q q 11111\*MERGEFORMAT (.)
Thay (1.12) (1.13) vào (1.4) (1.5) ta có phương trình động năng của hệ thống:
Thế năng của hệ pendubot là:
V m y g m y g m glc q m gl q m glc q q 16116\* MERGEFORMAT (.) Đặt:
; ; m lc m l I m lc I m l lc m lc m l m lc
Thay (1.16) vào (1.14) và (1.15) ta có
2 cos cos sin sin cos( ) cos
2 sin cos sin cos sin
( 2 cos ) ( cos ) 2 sin sin [ cos cos( )] q q q q q q q d L q q q q q q q dt q d L L q q q q q q q dt q q q q g q q q d L L dt q
Mô hình động học của hệ thống là:
là vector lực ma sát:
Xét giả định tiêu chuẩn tức là không có ma sát, mô hình động học được suy ra theo dạng Euler-Lagrange như sau:
Trong đó: D q ( ) : ma trận quán tính
Với q [ q 1 q 2 ] T ;q 1 và q 2 là góc của khớp 1 so với phương ngang và góc giữa thanh 2 so với khớp 1; q và q là vector vận tốc và vector gia tốc góc; 1 0 T ; 1 là mô men xoắn bên ngoài đưa vào thanh 1.
Vì D q ( ) là ma trận đối xứng định nghĩa dương nên D q ( ) có thể viết dưới dạng:
Từ công thức động năng của hệ thống:
( ) cos( ) cos( ) cos( ) g m lc m l g q m lc g q q g m lc q q
Bảng 2:Các thông số của mô hình m 1 0.137 l 1 0.2 lc 1 0.1016
Thế vào các thông số
Từ những phương trình trên, hệ thống phương trình hoạt động có thể được viết lại như sau:
1 cos ( ) ( , ) cos 2 cos cos sin
1 cos ( cos )( ) sin cos cos
Phương trình động lực học của pendubot:
1 [ ( ) sin sin cos cos cos cos cos( )] q q q q q q q q g q g q q q
Trong thử nghiệm thực tế, kiểm soát đầu vào tín hiệu đang áp dụng điện áp cho động cơ để tạo ra thời điểm.Vì vậy, nó là cần thiết sang một hệ thống tương đương thành một dạng mới mà đầu vào điều khiển tín hiệu là điện áp.
Hình 3:Mô hình động cơ điện 1 chiều
Ta thay (1.36) (1.35) vào (1.33) (1.34) ta có phương trình động học mới của pendubot:
( ( ( )) ) sin( ) ( cos( )) cos( )( cos( )) cos( )( cos( )) ( cos( )) sin( )]
Hai vị trí cân bằng phổ biến trong việc điều khiển hệ pendubot là vị trí TOP và vị trí MID trong bài báo cáo này, nhóm điều khiển hệ pendubot tại vị trí TOP.
Biến trạng thái mới X [ X X X X 1 2 3 4 ] T để thay thế x [ x x x x 1 2 3 4 ] T Mục đích là để lái biến trạng thái X về 0 khi hệ thống ổn định X sẽ được đặt như sau: X 1 x 1 2
Ta thay biến trạng thái mới X [ X X X X 1 2 3 4 ] T ta có phương trình động học mới của pendubot:
Xây dựng môi trường mô phỏng
Xây dựng môi trường chung
- Bước 1: Vào Modeling, chọn Model settings Hoặc nhấn Ctrl + E để vào Model settings.
Hình 4: Thiết lập môi trường step 1
- Bước 2: Chọn lần lượt Solver => Type: chọn Fixstep => Fixstep size: 0.01
Hình 5: Thiết lập môi trường step 2
- Bước 3: Chọn lần lượt Data Import/Export => Tắt Single simulation output như hình bên dưới
Hình 6: Thiết lập môi trường step 3
Xây dựng hệ thống Pendubot
Các khối cần sử dụng:
Bảng 3: Danh sách các khối cần sử dụng tạo hệ Pendubot
Tên khối Địa chỉ chọn khối
Matlab Function Simulation/ Library Browser/ Simulink/
User-Defined Functions/ MATLAB Function.
Integrator Simulation/ Library Browser/ Simulink/
Hình 7:Cấu trúc khối Matlab-Function mô tả hệ xe Pendubot
Hình 8 Khối chuyển đổi q1 thành X1
Hình 9: Thông số trong khối Integrator và Integrator1
Hình 10: Thông số trong khối Integrator2 và Integrator3
Chương trình chuyển đổi q1 thành X1 khối Matlab-Function function x1 = fcn(q1)
Chương trình mô tả hệ thống pendubot ở khối Matlab-Function
Bộ điều khiển tối ưu
Bộ điều khiển LQR
Ta có ma trận A và B khi ta điều khiển pendubot ở vị trí top được tính như sau: 5312Equation Chapter (Next) Section 1542Equation Section (Next)553Equation Section (Next)
Ở trong bài báo cáo này ta sẽ chọn:
MERGEFORMAT (.) Đối tượng tuyến tính mô tả bởi phương trình trạng thái:
Trong đó:x t( ) [ ( ), ( ), , ( )] x t x t 1 2 x t n T : Vector trạng thái
( ) [ ( ), ( ), , m ( )] T u t u t u t u t : Vector tín hiệu điều khiển
Bài toán đặt ra là tìm tín hiệu điều khiển 𝑢(𝑡) điều chỉnh hệ thống từ trạng thái đầu 𝑥(0) = x 0 bất kỳ về trạng thái cuối x t( ) f = 0 sao cho tối thiểu chỉ tiêu chất lượng dạng toàn phương
Trong đó: 𝑄 và 𝑀 là các ma trận trọng số bán xác định dương
𝑅 là ma trận trọng số xác định dương
Bài toán trên được gọi là bài toán điều chỉnh toàn phương tuyến tính.
62362\* MERGEFORMAT (.) Điều kiện cần để có lời giải tối ưu:
Phương trình trạng thái: ( )x t Ax t( )Bu t( ) 63363\* MERGEFORMAT (.)
Phương trình đồng trạng thái: ( ) H ( ) ( ) t Q x A t
Kết hợp (3.8) và (3.5), ta được phương trình vi phân:
Giải phương tình vi phân (3.9), tìm được 𝑥(𝑡) và 𝜆(𝑡) Thay 𝜆(𝑡) vào (3.7) ta tìm được lời giải tối ưu.
Tín hiệu điều khiển tối ưu: u t * ( )K t x t( ) ( ) 69369\* MERGEFORMAT (.)
Và 𝑃(𝑡) là nghiệm bán xác định dương của phương trình vi phân Ricatti:
3.1.2 Thiết kế bộ điều khiển LQR:
Chương trình tính ma trận A và ma trận B:
%%Programmed by Nguyễn Hoàng Thuật-20151572
K3=Jm; beta1=m1*lc1^2+m2*l1^2+I1; beta2=m2*lc2^2+I2; beta3=m2*l1*lc2; beta4=m1*lc1+m2*l1; beta5=m2*lc2;
X2_d=1/(beta1*beta2 -beta3^2*(cos(X3))^2+K3*beta2)*(beta2*beta3*sin(X3)*(X2+X4)^2 + beta3^2*cos(X3)*sin(X3)*X2^2 - beta2*beta4*g*cos((X1+pi/2))+ beta3*beta5*g
*cos(X3)*cos((X1+pi/2)+X3) + beta2*K1*u - K2*beta2*X2);
X4_d=-(beta5*g*cos((X1+pi/2)+X3)*(K3+beta1+beta3*cos(X3)) - beta4*g*cos((X1+pi/2))*(beta2+beta3*cos(X3)) - K2*X2*(beta2+beta3*cos(X3)) + beta3*sin(X3)*(X2 + X4)^2*(beta2+beta3*cos(X3)) + K3*beta3*X2^2*sin(X3) + beta3*X2^2*sin(X3)*(beta1+beta3*cos(X3)))/(-beta3^2*cos(X3)^2+K3*beta2+beta1*beta2) -(K1*u*(beta2 + beta3*cos(X3)))/(- beta3^2*cos(X3)^2 + K3*beta2 + beta1*beta2);
Tính điều khiển được và quan sát được của hệ thống Pendubot tại vị trí TOP:
Tại vị trí cân bằng Top
Rank B AB A B A B hạng của ma trận A
Vậy,tại vị trí cân bằng Top có thể điều khiển được.
Sau khi có được ma trận A và ma trận B ta tiến hành tuyến tính hoá quanh điểm cân bằng TOP khi X1=0; X2=0; X3=0; X4=0; u=0:
Ta sẽ có được ma trận A và ma trận B như sau:
Ta sẽ tính K dựa vào hàm của matlab:
3.1.3 Mô phỏng bộ điều khiển LQR cho hệ PENDUBOT:
Ta sẽ chọn thông số đầu vào cho góc lệch thanh 1, vận tốc góc thanh 1, góc lệch thanh 2,vận tốc góc thanh 2: q1_init=pi/2+0.03; q1_d_init=0.05; q2_init=0.03; q2_d_init=0.05;
Hình 11:Sơ đồ bộ điều khiển LQR
Hình 12:Thông số khối Gain
3.1.4 Kết quả mô phỏng:
Hình 13:Tín hiệu điều khiển điện áp
Hình 14:Góc lệch thanh 1
Hình 15: Góc lệch thanh 2
+Khi ta sử dụng bộ điều khiển tối lưu LQR cho hệ thống pendubot khi không có nhiễu ta nhận thấy thanh 1 và thanh 2 ổn định tại vị trí cân bằng nhanh và biên độ dao động ít Cụ thế thanh 1 chỉ mấy 1,3(s) để ở vị trí cân bằng và góc lệch lớn nhật là 0.15(rad), thanh 2 mấy 1(s) để ở vị trí cân bằng và góc lệch lớn nhất là 0.19(rad).
+Khi có nhiễu vô góc lệch thanh 1 và góc lệch thanh 2 thì ta nhận thấy bô điều khiển LQR không còn điều khiển hệ thống được tốt nữa Và nó cũng tiêu tốn nhiều năng lượng hơn.
Bộ điều khiển LQG
3.2.1 Tính toán và thiết kế bộ lọc Kalman:
Hình 16 : Sơ đồ cấu trúc bộ lọc Kalman
+ C là ma trận xác định trạng thái quan sát ngõ ra y.
+ R N là phương sai của nhiễu tác động lên hệ thống
+ nghiệm của phương trình Ricatti.
Tính toán cho bộ lọc nhiễu Kalman:
G là ma trận đơn vị 4x4.
Do ta giả sử không có nhiễu hệ thống nên QN rất bé.
Vì phương sai của nhiễu đo góc lệch thanh 2 là 0.001 nên RN(2,2)=0.001, phương sai của nhiễu đo góc lệch thanh 2 là 0.0001 nên RN(1,1)=0.0001
Vì cùng sử dụng chung một hệ thống nên nghiệm của phương trình Ricatti của bộ lọc Kalman đặt trên hệ thống có giá trị tương đương với nghiệm phương trình Ricatti của bộ điều khiển LQR.
Từ công thức (3.21), tìm độ lợi bộ lọc Kalman:
3.2.2 Mô phỏng bộ điều khiển LQR + Kalman:
Hình 17 :Sơ đồ bộ điều khiển LQG
Chương trình cho bộ điều khiển:
%%Programmed by Võ Hữu Thành Nhân-20151527
Bảng 4 : Các khối sử dụng trong matlab simulation
Tên khối Địa chỉ chọn khối
Matlab Function Simulation/ Library Browser/ Simulink/
User-Defined Functions/ MATLAB Function. ntegrator Simulation/ Library Browser/ Simulink/
Subsystem Simulation/ Library Browser/ Simulink/
Random number Simulation/ Library Browser/ Simulink/
3.2.3 Kết quả mô phỏng:
Hình 18 :Góc lệch thanh 1
Hình 19 :Góc lệch thanh 2
Nhận xét: khi ta thêm bộ lọc Kalman vào thì tín hiệu đầu ra mượt hơn và nó bám theo cái tín hiệu nhiễu nhưng góc lệch vẫn dao động xung quanh vị trí cân bằng Bộ điều khiển LQG vẫn điều khiển tốt hơn bộ điều khiển LQR khi có nhiễu
Bộ điều khiển phi tuyến
Bộ điều khiển trượt
Trong bài báo cáo này, một bộ điều khiển chế độ trượt phân cấp được phát triển cho lớp này của các hệ thống SIMO hoạt động kém Theo cách tiếp cận này, một hệ thống hoạt động kém như vậy được chia thành nhiều hệ thống con theo cấu trúc vật lý của nó Mặt trượt của mọi hệ con được xác định, khi đó mặt trượt của một hệ con được chọn làm mặt trượt lớp thứ nhất. mặt trượt lớp thứ hai với mặt trượt của một hệ thống con khác Quá trình này tiếp tục cho đến khi bao gồm tất cả các bề mặt trượt của hệ thống con.
4.1.2Thiết kế bộ điều khiển trượt cho hệ thống SIMO:
Xác định bề mặt trượt của nó là:794Equation Section (Next)
Trong đó c i là một hằng số dương Đạo hàm s i theo thời gian t trong (4.3) thì tồn tại:
81481\* MERGEFORMAT (.) Đặt s i = 0 trong (4.4), tín hiệu điều khiển tương đương của hệ thống con thứ i thu được là:
Cấu trúc phân cấp của trượt, bề mặt trượt được thiết kế theo mô tả sau đây Một hệ con được chọn làm mặt trượt lớp thứ nhất S 1 Dùng để dựng mặt trượt lớp thứ hai S 2 có mặt trượt là một hệ thống con khác.Quá trình này tiếp tục cho đến khi tất cả các mặt trượt của hệ thống con Không mất tính tổng quát, s 1 được định nghĩa là S 1 Cấu trúc của các bề mặt trượt được thể hiện trong Hình 16.
Hình 20: Cấu trúc bậc của các mặt trượt
Hình 16, mặt trượt của lớp thứ i bao gồm toàn bộ thông tin của các mặt trượt i - 1 lớp khác và mặt trượt thứ i của hệ thống con Kết quả, mặt trượt lớp thứ i được xác định như sau:
Tương ứng, luật điều khiển chế độ trượt lớp thứ i phải bao gồm thông tin của các luật điều khiển chế độ trượt thứ i - 1 tầng thấp hơn và luật điều khiển của hệ thống con thứ i được định nghĩa là: u i u i 1 u eqi u swi 84484\* MERGEFORMAT (.)
Trong đó: u 0 0và u swi là điều khiển chuyển mạch của lớp mặt trượt thứ i.
Luật điều khiển (4.5) trên có thể suy ra từ ổn định Lyapunov:
85485\* MERGEFORMAT (.) Đạo hàm V i theo thời gian (4.4) ta có được công thức sau:
Trong đó: a j = i (j=1,2,…,i-1) là hằng số,vàa i =1.
Quan sát tính ổn định của mặt trượt thứ i ta có: i i i i sgn i
90490\*MERGEFORMAT (.) trong đó k i và i là các hằng số dương.
Từ (4.10) và (4.11) luật điều khiển chuyển mạch của lớp thứ i có thể thu được như sau:
Với i = n từ (4.5) và (4.12) sau đó thứ bậc của luật trượt được thể hiện như sau:
1 1 sgn n n n swl swn eql l l n n j r eqr l j r n n n n n n n n j r j r r j r r j r u u u u a b u k S S a b a b
Trong(4.13), chỉ điều khiển chuyển đổi của bộ điều khiển chế độ trượt lớp cuối cùng Các điều khiển chuyển đổi của (n-1) lớp thấp hơn khác được hợp nhất Giai đoạn chế độ tiếp cận, khi bất kỳ trạng thái nào của một hệ thống con lệch khỏi trạng thái của chính nó bề mặt trượt của hệ thống con, điều khiển chuyển mạch của lớp cuối cùng sẽ điều khiển nó quay lại Do đó, trong giai đoạn chế độ trượt, các trạng thái của hệ thống tiếp tục trượt trên mặt trượt lớp cuối cùng.
4.1.3 Thiết kế bộ điều khiển trượt cho hệ pendubot
Như chúng ta thấy muốn xây dựng bộ điều khiển trượt cho hệ pendubot thì hệ thống phải có dạng như phương trình 4.1 Mà theo phương trình 4.1 khi mà điều khiển được thì X1,X2,X3,X4 phải tiến về 0 hết Trong khi đó chúng ta muốn điều khiển hệ pendubot ở vị trí Top tức q1 tiến về pi/2 và q2 tiến về 0 Như vậy thì khi đến vị trí cân bằng thì q1 không có về
0 Do đó chúng ta đặt biến mới như sau:
Lấy vi phân hệ phương trình 4.16 ta được
1 [ ( ) sin sin cos cos cos( / 2) cos cos( / 2 )]
( cos ) cos( / 2 ) ( cos ) cos( / 2) sin ( cos )]
Tiếp theo ta tìm các thông số F1(X),F2(X),B1(X),B2(X) để tính toán giải pháp điều khiển trượt theo như phương pháp được đề ra ở trên:
F1(X),F2(X) được tìm bằng cách thay u = 0 phương trình vi phân:
Từ phương trình 4.1 ta tìm được b1,b2 như sau
1014101\* MERGEFORMAT (.) Đinh nghĩa mặt trượt: Áp dụng công thức (4.1) ta có
Tín hiệu điều khiển tương đương của các hệ thống con thu được theo công thức (4.3) là
1054105\* MERGEFORMAT (.) Kết quả mặt trượt lớp thứ i được xác định theo công thức (4.8) như sau
1074107\* MERGEFORMAT (.) Sau đó thứ bậc của luật trượt được thể hiện theo công thức (4.13) ta có
1084108\* MERGEFORMAT (.)Với a1, a2, c1, c2, k2, nuy2 là các hằng số của bộ điều khiển
4.1.4 Mô phỏng bộ điểu khiển trượt cho hệ PENDUBOT:
Hình 21:Sơ đồ bộ điều khiển trượt
Trong đó cái khối a1, a2, c1, c2, k2, nuy2 là các khối constant
Ta sẽ sử dụng hàm F X B X F X B X 1 ( ), ( ), ( ), 1 2 2 ( ) cho việc xây dựng bộ điều khiển trượt.
Ta sẽ chọn thông số đầu vào cho góc lệch thanh 1, vận tốc góc thanh 1, góc lệch thanh 2, vận tốc góc thanh 2; q1_init=pi/2+0.001; q1_d_init=0.002; q2_init=0.003; q2_d_init=0.004;
Chương trình trong bộ điều khiển trượt: function u = fcn(X1,X2,X3,X4,a1,a2,c1,c2,k2,nuy2) m1=0.137; m2=0.042; l1=0.2; l2=0.22; lc1=0.1016; lc2=0.1052;
K3=Jm; beta1=m1*lc1^2+m2*l1^2+I1; beta2=m2*lc2^2+I2; beta3=m2*l1*lc2; beta4=m1*lc1+m2*l1; beta5=m2*lc2;
F1=1/(beta1*beta2 -beta3^2*(cos(X3))^2+K3*beta2) *
(beta2*beta3*sin(X3)*(X2+X4)^2 + beta3^2*cos(X3)*sin(X3)*X2^2 beta2*beta4*g*cos((X1+pi/2)) + beta3*beta5*g*cos(X3)*cos((X1+pi/2)+X3) + beta2*K1*0-K2*beta2*X2);
F2=-(beta5*g*cos((X1+pi/2) + X3)*(K3 + beta1 + beta3*cos(X3)) – beta4*g*cos((X1+pi/2))*(beta2 + beta3*cos(X3)) - K2*X2*(beta2 + beta3*cos(X3)) + beta3*sin(X3)*(X2 + X4)^2*(beta2+beta3*cos(X3)) + K3*beta3*X2^2*sin(X3) + beta3*X2^2*sin(X3)*(beta1+beta3*cos(X3)))/(- beta3^2*cos(X3)^2 + K3*beta2 + beta1*beta2) - (K1*0*(beta2 + beta3*cos(X3)))/(- beta3^2*cos(X3)^2 + K3*beta2 + beta1*beta2);
B1 = (K1*beta2)/(- beta3^2*(cos(X3))^2 + K3*beta2 + beta1*beta2);
B2= -(K1*(beta2 + beta3*cos(X3)))/(- beta3^2*(cos(X3))^2 + K3*beta2 + beta1*beta2);
%ueqi=-(ci*x2i+fi)/bi u_eq_1=-(c1*X2+F1)/B1; u_eq_2=-(c2*X4+F2)/B2;
S2=(a1*a2)*s1+a2*s2; u=((((a1*a2)*b1*u_eq_1) + (a2*b2*u_eq_2))-(k2*S2+nuy2*sign(S2))) / (((a1*a2)*b1) + (a2*b2)); Ở trong bài báo cáo này nhóm sẽ sử dụng giải thuật di truyền GA để tìm các thông số a1, a2, c1, c2, k2, nuy2 nên chúng ta sẽ sử dụng thêm khối Stop simulation:
Sơ đồ khối chương trình GA:
Hình 22 Lưu đồ giải thuật GA
- Số thế hệ tối đa: 200.
- Kiểu mã hóa: mã hóa thập phân.
%Programmed by Pham Minh Nghia
%date 01/06/2023 clc; clear all; rand('state',sum(100*clock));
%%%%%%%%%%%%%%%%%%%%%%%%%%%% q1_init=pi/2+0.001; q1_d_init=0.002; q2_init=0.003; q2_d_init=0.004;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% max_generation 0; %% có 200 lan chay trong quá trình max_stall_generationP; %% 50 the he giong nhau thì dung epsilon=0.0001; %% J chuan ( neu the he nào có J990 a1 a2 c1 c2 k2 nuy2
J=(e1'*e1)+(e2'*e2)+rho*(u'*u) fitness(pop_index)=1/(J+eps); else
J^100; fitness(pop_index)=1/(J+eps); end end;
[bestfit0,bestchrom]=max(fitness); a10=par(bestchrom,1); a20=par(bestchrom,2); c10=par(bestchrom,3); c20=par(bestchrom,4); k20=par(bestchrom,5); nuy20=par(bestchrom,6);
J0=1/bestfit0-0.001;%do elitism= nen doi hoi phai co 1 cha me tot nhat de so sanh while ~Terminal,%terminal se bang 1 neu chay du 200 the he hoac trong qua trinh chay co 1 the he con cai best generation = generation+1;%truoc moi lan chay cho hien thi disp(['generation #' num2str(generation) ' of maximum ' num2str(max_generation)]); pop=Encode_Decimal_Unsigned(par,sig,dec); %ma hoa thap phan(NST cua cac cha me) parent=Select_Linear_Ranking(pop,fitness,elitism,bestchrom); %sap hang cha me tuyen tinh(cha me tot nhat) child=Cross_Twopoint(parent,cross_prob,elitism,bestchrom);%con cai sinh ra se dc lai ghep pop=Mutate_Uniform(child,mutate_prob,elitism,bestchrom);%dot bien theo dang phan bo deu parode_Decimal_Unsigned(pop,sig,dec);%giai ma ket qua ve lai dang nst for pop_index=1:pop_size,%lan luot test tung ca the trong quan the a1=par(pop_index,1); a2=par(pop_index,2); c1=par(pop_index,3); c2=par(pop_index,4); k2=par(pop_index,5); nuy2=par(pop_index,6); sim('pendubottruotmohinh.slx');%tien hanh chay mo phong de kiem tra if length(e1)>990 a1 a2 c1 c2 k2 nuy2
J=(e1'*e1)+(e2'*e2)+rho*(u'*u) fitness(pop_index)=1/(J+eps); else
J^100; fitness(pop_index)=1/(J+eps); end end;
[bestfit(generation),bestchrom]=max(fitness);%ca the nao co kp1,ki1,kd1,kp2,ki2,kd2 se dc chon la ca the toi uu if generation == max_generation %neu chay du 200 the he roi ma chua co ca the toi uu Terminal = 1; %thi cho terminal=1,stop GA elseif generation>1, if abs(bestfit(generation)-bestfit(generation-1))5||abs(e2)>5) y=1; else y=0; end
Thông số các khối “ To Workspace” được dùng trong chương trình GA:
Hình 23: Tín hiêu điều khiển u
Hình 24:Góc lệch thanh 1
Hình 25:Góc lệch thanh 2
Sau khi chạy chương trình GA thì ta tìm được các thông số của bộ điều khiển trượt như sau a1 = 1.6400 a2 = 9.0800 c1 = 6.2000 c2 = 8.5000 k2 = 7.0300 nuy2 = 0.7500
1.1.1 Kết quả mô phỏng bộ điểu khiển trượt cho hệ PENDUBOT:
Hình 26: Kết quả mô phỏng ngõ ra góc thanh 1
Hình 27: Kết quả mô phỏng ngõ ra góc thanh 2
Hình 28 Tín hiệu điều khiển ngõ ra của bộ điều khiển trượt
Nhận xét: Với bộ điều khiển trượt được thiết kế như trên thì ta thấy rằng hệ thống đáp ứng khá tốt Trong vòng khoảng 3s thì hệ thống đã ổn định tại vị trí cân bằng và tín hiệu điều khiển ít bị dao động (chattering).