PDA

View Full Version : Điều khiển gán điểm cực và điều khiển gán điểm cực tự điều chỉnh


HaiAu2005
31-05-2006, 08:43 AM
Xin trao đổi sơ bộ về thuật toán điều khiển đặt điểm cực (pole placement control) hoặc điều khiển gán điểm cực (pole assignment control). Tuy hai tên gọi khác nhau bằng tiếng Anh, nhưng bản chất thuật toán là một.

Vậy điều khiển gán điểm cực là gì? Nói nôm na, thuật toán điều khiển gán điểm cực là thuật toán tính toán khuếch đại điều khiển hồi tiếp trạng thái (state feedback control gains) dựa trên việc gán (đặt lại) điểm cực của hệ hồi tiếp với điểm cực mong muốn.

Khi thuật toán gán điểm cực được biến đổi sao cho các cực thay đổi hoặc tham số hệ thống thay đổi sẽ làm khuếch đại phản hồi trạng thái thay đổi. Trong trường hợp này chúng ta có thuật toán gán điểm cực thích nghi.

Trong các thuật toán điều khiển thích nghi (adaptive control) - thuật ngữ này thường dùng cho hệ tuyến tính có tham số thay đổi theo thời gian - có một số thuật toán điều khiển tự điều hưởng (self-tuning control) là kết hợp một thuật toán ước lượng để tìm tham số hệ thống với một luật điều khiển. Trong các thuật toán tự điều chỉnh có thuật toán gán điểm cực tự điều chỉnh là một thuật toán thích nghi đơn giản. Thuật toán self-tuning control thường dùng cho hệ rời rạc theo thời gian (discrete-time system hoặc digital system), các tài liệu ở VN gọi là "hệ xung số".

Trong chủ đề này sẽ trình bày: 1. thuật toán gán điểm cực áp dụng cho hệ tuyến tính có các tham số không thay đổi và 2. thuật toán điều khiển 'gán điểm cực tự điều chỉnh' (self-tuning pole assignment control) cho đối tượng tàu thủy. Thuật toán gán điểm cực tự điều chỉnh là sự kết hợp của thuật toán ước lượng tham số (the recursive least squares algorithm) và thuật toán gán điểm cực.

Ví dụ sau minh họa hệ máy lái tự động cho tàu thủy dùng thuật toán gán điểm cực (pole placement control). Mô hình toán của tàu thủy giống mô hình toán dùng minh họa trong thuật toán điều khiển tối ưu. Trong MATLAB Control System Toolbox có hai hàm tính khuếch đại điều khiển hồi tiếp trạng thái K: place (dựa trên phương pháp dùng ma trận biến đổi) và acker (phương pháp dùng công thức Ackermann). Bạn đọc dùng lệnh > help để xem mô tả hai hàm trên.

Mô hình tàu (Nomoto's first order model):

\dot{\psi} = r
T\dot{r} + r = K\delta

trong đó T, K là chỉ số điều động tàu (hằng số, T = 7.5 sec, K = 0.11), r là tốc độ quay trở của tàu (yaw rate or turning rate, rad/sec), delta là góc bánh lái (rudder angle, rad), và psi là hướng mũi tàu (heading angle, hoặc yaw angle, rad). Viết lại phương trình này dưới dạng mô hình không gian trạng thái như sau:

\dot \mathbf{x} = \mathbf{A} \mathbf{x} + \mathbf{B}u
y = \mathbf{C} \mathbf{x} + \mathbf{D}u

trong đó:
\mathbf x là véc tơ trạng thái:
\mathbf x = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} \psi \\ r \end{bmatrix}
u là tín hiệu điều khiển (góc bánh lái):
u = \delta
y là tín hiệu ra (hướng mũi tàu):
y = x_1 = \psi
A, B, C, D là các ma trận tham số của mô hình không gian trạng thái (bạn đọc tự tính các ma trận này giùm).

Điểm cực mong muốn là: J(1) = -10+j*5 và J(2) = -10-j*5 (J = [-10+j*5 -10-j*5], hai số phức liên hợp - conjugate complex numbers) (với điểm cực mong muốn này hệ hồi tiếp dù phức tạp bao nhiêu đi chăng nữa thì sau khi đặt lại điểm cực hệ thống trở thành hệ bậc hai, mà hệ bậc hai thì có lẽ nhiều người trong chúng ta đều biết!).

Trước khi thiết kế hệ điều khiển gán điểm cực, một công việc đơn giản là phải kiểm tra xem đối tượng điều khiển (hệ động) có đảm bảo điều kiện cần và đủ để gán được điểm cực hay không, tức là hệ động phải là hệ 'có thể điều khiển trạng thái hoàn toàn' (completely state controllable). Hay nói cách khác là phải kiểm tra tính điều khiển được (controllability) của hệ động. Hệ tàu thủy này có véc tơ trạng thái gồm hai phần tử (n = 2), chúng ta tính ma trận tính điều khiển được (controllability matrix):

>> M = [B A*B]

M =

0 0.0147
0.0147 0

Rank (hạng) của ma trận này là:

>> rank(M)

ans =

2

Hạng của M là 2, bằng số phần tử của véc tơ trạng thái, vậy hệ này là 'completely state controllable'.

Codes mẫu cho hệ máy lái tự động tàu thủy như sau:



% PoleAssignmentAutopilot.m
%

clear

T = 7.5;
K = 0.11;

A = [0 1;0 -1/T];
B = [0 K/T]';
J = [-10+j*5 -10-j*5]; % điểm cực mong muốn (desired poles)
C = [1 0]; D = 0;

KK = acker(A,B,J)

%KK2 = place(A,B,J)

AA = A-B*KK;BB=B*KK(1);CC = C;DD=D;

Nomoto = ss(AA,BB,CC,DD);

[y,t,x] = step(Nomoto,10);

%subplot(211);
plot(t,y*180/pi);grid
title('Ship heading');
xlabel('Time (sec)');
ylabel('Heading (deg)');

% End of program



Kết quả chạy chương trình này (đáp ứng của hệ thống) cho trong file gửi kèm.

Trong ứng dụng thiết kế hệ điều khiển, thuật toán điều khiển gán điểm cực tự điều chỉnh nói riêng và điều khiển thích nghi nói chung thường được áp dụng cho hệ tuyến tính hoặc phi tuyến có các tham số biến đổi (thay cho hệ tuyến tính có các hệ số không đổi như ở ví dụ trên). Thuật toán điều khiển thích nghi này thường được kết hợp với một phương pháp ước lượng trực tuyến (online estimation algorithm, được dùng để ước lượng các tham số hệ thống). Phần sau sẽ xin trình bày ví dụ minh họa thuật toán điều khiển gán cực tự điều hưởng PID (three term (PID) self-tuning pole assignment control algorithm).

Lý thuyết và thực hành thiết kế hệ thống điều khiển thích nghi sẽ được trình bày trên trang web www.dieukhien.net trong thời gian tới, xin mời mọi người đón đọc!

H.A.

NTVinh
02-06-2006, 09:37 AM
Bài viết này e rằng chưa thuyết phục người đọc. Thiển nghĩ rằng, với pole placement control mà tác giả đề cập thì chưa lột tả được cái "vẻ đẹp" của adaptive control. Mong rằng, bài viết: "three term (PID) self-tuning pole assignment control algorithm" sẽ nói lên nhiều điều hơn về adaptive control.
Nguyen The Vinh.

HaiAu2005
04-06-2006, 10:15 PM
Như đã trình bày, thuật toán pole placement control ở trên là thuật toán đơn giản và được dùng để minh họa cho thuật toán gán điểm cực tự điều chỉnh hơi phức tạp hơn trong phần sau. Thuật toán three term (PID) self-tuning pole assignment control algorithm (kết hợp của thuật toán bình phương nhỏ nhất đệ quy và thuật toán điều khiển gán cực tự điều hưởng - a combination of recursive least squares algorithm & self-tuning pole assignment control algorithm) có lẽ cũng chỉ thuộc loại một thuật toán adaptive control đơn giản và có khi vẫn chưa có gì là lột tả được "vẻ đẹp" của adaptive control cả ha!

Hi vọng qua bài này các bạn sẽ tiếp tục trao đổi và trình bày thêm những thông tin hay hơn những thông tin tôi trình bày để có thể tìm ra "vẻ đẹp" của adaptive control:-))

H.A.

HaiAu2005
04-06-2006, 11:09 PM
Tiếp tục chủ đề này xin trình bày bài toán thiết kế máy lái tự động cho tàu thủy dùng thuật toán điều khiển gán cực tự điều hưởng PID.

Sử dụng mô hình điều động tàu bậc nhất Nomoto sau:

\dot{\psi} = r
T\dot{r} + r = K\delta

trong đó T, K là chỉ số điều động tàu (hằng số, T = 7.5 sec, K = 0.11), r là tốc độ quay trở của tàu (yaw rate or turning rate, rad/sec), delta là góc bánh lái (rudder angle, rad), và psi là hướng mũi tàu (heading angle, hoặc yaw angle, rad, giả thiết dùng la bàn đo, góc hướng mũi tàu nằm trong khoảng 0 tới 360 độ). Góc bánh lái có thể dùng mô hình sau:

\dot \delta = \frac{\delta_c - \delta}{|\delta_c - \delta|T_{rud} + a}

trong đó:
\delta_c là bánh lái khẩu lệnh (commanded rudder angle),
T_{rud} là hằng số thời gian bánh lái (rudder time constant)
a là hằng số dùng để tránh chia cho zero (a = 1).

Giả thiết bánh lái được hạn chế trong khoảng -35 đô trái (port) và +35 độ phải (starboard), và tốc độ bẻ lái trong khoảng -5 độ/giây tới +5 độ/giây).

Quỹ đạo chuyển động của tàu trong hệ tọa độ quán tính được tính theo công thức sau:

\dot X_{pos} = u cos (\psi) - v sin(\psi) (m)
\dot Y_{pos} = u sin (\psi) + v cos(\psi) (m)

trong đó u là tốc độ chạy thẳng (surge velocity), và v tốc độ dịch chuyển sang ngang (sway velocity). Giả thiết tàu chuyển động với tốc độ không đổi 15 nơ (knots, 1 hải lý hàng hải (NM) = 1852 m). Notes: U = sqrt(u^2 + v^2) , coi v rất nhỏ (v = 0) ta có u = U.

Hãy lập chương trình mô phỏng hệ thống máy lái tự động (điều khiển hướng mũi tàu) bằng thuật toán gán cực tự điều hưởng PID dùng một phương pháp nhận dạng hệ thống đệ quy - hoặc trực tuyến (ví dụ dùng recursive least squares algorithm). Notes: góc bẻ lái do máy lái giới hạn trong khoảng -10 độ trái tới +10 độ phải.

Xin hẹn lần sau...

H.A.

HaiAu2005
05-06-2006, 04:07 PM
Sách "Adaptive Control: Stability, Convergence and Robustness" download miễn phí:

http://www.ece.utah.edu/~bodson/acscr/

E-books của trang dieukhientudong.com:

http://www.dieukhientudong.com/diendan/index.php?showforum=62

Trong đó có cuốn Adaptive Control Systems:

h**p://rapidshare.de/files/21322348/FENG__G.__1999_._Adaptive_Control_Systems.rar

Và cuốn "Adaptive Control Design and Analysis":
http://dientuftp.com/down/e-bookt206/

"Robust Adaptive Control":
http://www-rcf.usc.edu/~ioannou/Robust_Adaptive_Control.htm

Ngoài ra còn ba cuốn sau (chưa tìm thấy nguồn download miễn phí!):

Hang, Chang C., Lee, Tong H. & Ho., Weng K. (1993), Adaptive Control. Instrument Society of America, USA.

Harris, C.J. & Billings, S.A. (1985), Self-tuning and Adaptive Control: Theory and Application. Peter Peregrinus Ltd., revised second edition.

Wellstead, P.E. and M.B. Zarrop (1991). Self-tuning Systems: Control and Signal Processing, John Wiley and Sons Ltd., UK.


H.A.

amal
10-10-2006, 12:36 AM
Anh HaiAu đâu rồi, sao lâu rồi mà không thấy viết tiếp. Em rất thích phần trình bày này. Hope you'll be back!

HaiAu2005
10-10-2006, 11:07 AM
Nếu ai quan tâm xin download Chapter 6 ở trang sau:

http://academic.amc.edu.au/~hnguyen/MOSSD/E33605_Mossd_2006.html

Trong đó có phần chương trình minh họa (Simulink model) cho PID self-tuning control (Autopilot).

H.A.

Hinfinity
04-10-2007, 06:21 PM
"Pole assignment" không thể xếp vào Adaptive control được, thực tế nó là một phương pháp thiết kế bộ điều khiển thông thường trong không gian trạng thái "state-space representation".

Adaptive control chỉ có ba dạng chính là Self-tuning, gain-scheduling và model predictive.

HaiAu2005
13-10-2007, 09:20 PM
To Hinfinity: Tôi cho rằng thuật toán pole placement control sử dụng mô hình không gian trạng thái với các hệ số bất định (không đổi) chỉ là trường hợp vô cùng đơn giản, và có thể xếp pole placement control vào mục điều khiển phản hồi trạng thái, và vì sử dụng các hệ số không đổi nên thuật toán này chưa "lột tả" được tính thích nghi. Trong lý thuyết điều khiển self-tuning có thuật toán pole assignment control hoàn toàn tương tự với thuật toán pole placement control nhưng lúc này hệ số của các ma trận của mô hình không gian trạng thái không còn bất định nữa mà biến đổi. Các ma trận (hay nói rõ hơn các tham số hệ thống) trong thuật toán điều khiển pole assignment thường được ước lượng bằng một phương pháp đệ quy (recursive, hoặc trực tuyến, online) nào đó, ví dụ như recursive least squares algorithm. Do vậy có thể nói thuật toán điều khiển pole placement hay pole assignment hoàn toàn tương tự nhau do vậy có thể đưa vào nhóm điều khiển thích nghi. Trong các thuật toán điều khiển self-tuning cũng còn có thuật toán điều khiển PID dùng thuật toán pole assignment để điều chỉnh khuếch đại điều khiển một cách tự động. Sự phân chia và xếp loại các thoật toán điều khiển tôi nghĩ không thể tuyệt đối được.

Tôi có viết sơ lược về thiết kế bộ điều khiển gán điểm cực cho tàu thủy (máy lái tự động) và sử dụng mô phỏng để minh họa ở địa chỉ sau:

http://www.dieukhien.net/vn/index.php?arid=1034

Ai quan tâm có thể đọc.

Hải Âu

Hinfinity
14-10-2007, 10:12 AM
To HaiAu2005: Có lẽ bạn đọc nhiều quá nên bị "tẩu hỏa nhập ma" rồi, pole placement và pole assignment không thể xếp vào adaptive control được, hai cái này chỉ là hai tên gọi khác nhau cho cùng một phương pháp. Nếu bạn bảo pole assignment và pole placement khác nhau thì bó hand rồi. Khi pole assignment kết hợp với các thuật toán khác thì không nói làm gì (chắc bạn nhầm khi nó được kết hợp với self-tuning), chứ bản thân nó không bao giờ được gọi là adaptive control, có gì chưa rõ thì nói để mình giải thích thêm nhé. chúc vui vẻ.

HaiAu2005
14-10-2007, 02:41 PM
Thuật toán điều khiển gán điểm cực mà tôi biết có hai dạng khác nhau:

1. Pole placement control: áp dụng cho hệ linear time-invariant systems

2. Self-tuning pole assignment control: áp dụng cho hệ linear time-varying systems, trong thuật toán này có thuật toán PID self-tuning pole assignment control.

Như vậy sự phân loại tôi nghĩ hoàn toàn tương đối. Nếu xét bản chất của chúng tuy đều được gọi là cùng tên "gán điểm cực" hay "đặt điểm cực" (pole placement hoặc assignment đều có nghĩa gần giống nhau) nhưng phương pháp thực hiện để tìm khuếch đại có khác nhau (ngay trong phương pháp pole placement control cũng có nhiều tác giả có các phương pháp khác nhau). Xét bản chất có thể bạn cho rằng thuật toán pole placement control áp dụng cho hệ linear time-invariant systems không được liệt vào nhóm adaptive control, tôi thấy ý này của bạn cũng có lý vì trong phương pháp này chỉ thuần túy là tìm khuếch đại phản hồi trạng thái còn bản thân các tham số hệ thống không hề biến đổi, nó chưa cho thấy tính thích nghi của các tham số. Tôi quan niệm là bằng phương pháp gán điểm cực làm cho đáp hệ thống phù hợp (thích nghi) với một đáp ứng mong muốn nào đó (tác giả Ogata trình bày khá rõ và chi tiết về thuật toán pole placement này). Trong chủ đề này tôi muốn đề cập đến thuật toán điều khiển gán cực: một là pole placement control cho hệ linear time-invariant system (theo Ogata, Modern Control Engineering) và một là self-tuning pole assignment control cho hệ linear time-varying system (theo Wellstead và Zarrop, sách đã cho tên ở trên). Theo Ogata thì thuật toán pole placement control được thực hiện trong miền s, còn theo Wellstead và Zarrop thì thuật toán self-tuning pole assignment control được thực hiện trong miền z kết hợp với một thuật toán ước lượng tham số hệ thống (eg. recursive least squares algorithm).

Bạn có thể giải thích theo các nguồn tham khảo của bạn để tôi được học hỏi thêm.

H.A.

Hinfinity
14-10-2007, 05:07 PM
Theo Ogata thì thuật toán pole assignment được thực hiện trong miền s, còn theo Wellstead và Zarrop thì thuật toán self-tuning pole assignment control được thực hiện trong miền z kết hợp với một thuật toán ước lượng tham số hệ thống (eg. recursive least squares algorithm).

H.A.

Miền s để thiết kế bộ điều khiển dưới dạng continuous còn miền z để thiết kế bộ điều khiển dưới dạng discrete. Một hệ thực thì thường tồn tại dưới dạng liên tục (continuous) còn khi thực hiện bằng microcontroller hay PC thì phải chuyển sang rời rạc (discrete). Về nguyên tắc, bạn có thể:
1. Thiết kế bộ điều khiển C(s) rồi chuyển qua C(z).
2. Thiết kế trực tiếp C(z).
Như vậy pole placement thì thiết kế theo miền s và z là tương đương nhau (MATLAB có lệnh hết rồi).
Thực ra theo tôi nếu bạn để cái tiêu đề của Topic này là Điều khiển thích nghi (gán điểm cực - pole assignment) là không ổn. Nó chưa chính xác với điều khiển thích nghi mà theo tôi được biết.
"Bộ điều khiển thích nghi là bộ điều khiển có khả năng thay đổi cấu trúc hoặc/và tham số của nó khi tham số của đối tượng điều khiển thay đổi". Khi bạn dùng pole placement thì bạn nhận được một bộ điều khiển với thông số cố định, vậy thích nghi ở đâu?
Còn khi bạn nói "self-tuning ...pole placement" thì tôi hiểu nó là phương pháp Hybrid rồi. Điều khiển thích nghi có 3 dạng chính sau:
- Self-tuning
- Gain scheduling
- MRAS (model reference adaptive systems)
Như thế bạn đã thấy rõ ràng chưa nhỉ.

HaiAu2005
14-10-2007, 06:50 PM
Thực ra thì bạn muốn phân loại "rạch ròi" và cho rằng pole placement control không phải là adaptive control với ý là thuật toán này không làm/chưa làm thay đổi cấu trúc hay tham số hệ thống. Ý này thì đúng.

Cũng giống như thuật toán PID control khi mới đặt các khuếch đại là hằng số thì nó chưa được gọi là thuật toán adaptive control, chỉ khi người ta thêm một phép toán nào đó làm cho các khuếch đại điều khiển hoặc tham số hệ thống thay đổi thì nó cũng được gọi là adaptive control, ví dụ như thuật toán PID self-tuning pole assignment control... và đây là thuật toán điều khiển hybrid (như bạn nói). Theo ý bạn tôi hiểu nếu nói trong thuật toán adaptive control thì có thuật toán điều khiển gán điểm cực thích nghi (có tài liệu nói tới thuật toán direct pole placement adaptive control) hoặc thuật toán điều khiển gán điểm cực tự điều chỉnh thì đúng, còn nói thuật toán gán điểm cực nằm trong thuật toán thích nghi thì không đúng hoàn toàn.

Vậy chủ đề này có thể đổi thành "Điều khiển gán điểm cực (chưa thích nghi) và điều khiển gán điểm cực tự điều chỉnh (thích nghi)" cho chính xác hơn. Tôi cũng sẽ mở một chủ đề mới về Điều khiển thích nghi, các các bạn quan tâm về điều khiển thích có thể trao đổi và viết bài ở đó.

H.A.

navy
07-01-2008, 11:38 PM
HA có bài viết nào về autopilot sytem không?Chỉ cho mình link mới.Mình đang quan tâm và định làm một cái mô hình nhỏ về máy lái tự động.

HaiAu2005
14-03-2008, 03:09 AM
@ Navy: Bạn có thể xem thêm một số bài ở www.dieukhien.net.

Hải Âu