PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Điều khiển (http://www.picvietnam.com/forum/forumdisplay.php?f=21)
-   -   Bộ lọc Kalman (http://www.picvietnam.com/forum/showthread.php?t=283)

HAI 13-11-2006 07:00 AM

Em biết là mấy bác rất bận.Nhưng em nghĩ mấy bác phải có trách nhiệm truyền kinh nghiệm lại cho tụi em những đứa nhỏ mới bắt đầu học, đơn giản là mấy bác "già" hơn tụi em.:D Em nghĩ kiến thức nào cũng thế, nói một cách cụ thể, với đầy đủ công thức chứng minh thì không thể một hai dòng, một hai trang mà nói hết được, nhưng em thường thấy cái ý tưởng bên trong của một vấn đề thường rất trong sáng và dễ hiểu.Tuy nhiên, để ngộ ra được cái chân lý giản đơn bên trong một vấn đề quả thật là một việc không đơn giản, cần có một thời gian nghiên cứu và trải nghiệm và cái này chắc chắn là thuộc lĩnh vực của những người "già" như mấy bác.Cái đấy là cái chúng em cần để bám vào đó mà đọc thêm sách vở rồi tự ngộ ra những kiến thức ấy.
Mấy bác nếu giúp được tụi em thế thì quả là đáng quý, nhưng tụi em chắc chắn chẳng đền ơn được mấy bác.Chỉ biết rằng đến khi tụi em già lại phải có trách nhiệm dẫn dắt cho thế hệ tiếp theo, cái nợ ở đời là thế thôi.
Nói tóm lại bác phải giúp tụi em, đó là trách nhiệm của người già như các bác:D .

candykitty 13-11-2006 03:15 PM

Với nguyên tắc một người đã từng ứng dụng các bộ lọc vào việc điều khiển động cơ không đồng bộ (mô phỏng thôi), mình thấy trước hết nên các bạn mới nên coi từ giải thuật điều khiển MRAS (Model Reference Adaptive System), sau đó hãy đi vào tìm hiểu các bộ lọc!

HAI 13-11-2006 06:56 PM

Cám ơn bác candykitty, em sẽ tìm hiểu cái MRAS thử xem.Em đi từ bộ lọc tuyến tính rồi nghe mọi người quản cáo về bộ lọc Kalman nên tò mò đọc, em tiếp cận thuần tuý là ý toán của nó thôi chứ thực tế ứng dụng của nó thì mù tịt.Kiến thức về điều khiển của em thì phải nói là chưa có gì, cái nhìn hạn hẹp lắm nên hay hỏi những câu ngớ ngẩn.Chắc là vì chúng ngớ ngẩn quá nên chẳng ai trả lời cả.:(
Thôi vậy, để khi nào mấy bác rãnh rỗi thì post bài thêm vậy.Em sẽ cố gắng để cái luồng này không bị chìm nghỉm, đợi một ngày đẹp trời các bác lại vào tham gia góp ý.:)

HAI 14-11-2006 06:35 AM

Ý tưởng đầu tiên của bác F là viết về bộ lọc Kalman một cách cơ bản với một thứ ngôn ngữ dễ hiểu gần gũi với người mới bắt đầu học.Mình nghĩ vài trang đầu của luồng này đã đáp ứng được điều đó.Mình xin tóm tắt sơ bộ như sau:
Thứ nhất bạn nắm được cơ bản thế nào là bộ lọc, vai trò của bộ lọc (nếu quên thì xem lại mấy bài của bác F)
Thứ hai đối tượng của bộ lọc là các tiến trình ngẫu nhiên.
Tính ngẫu nhiên của tiến trình do hai nguyên nhân chính (xem bài của bác ami)
- nhiễu đo (nhiễu do các thiết bị đo)
- nhiễu tiến trình (hay nhiễu hệ thống) (bản thân hệ thống có một độ không chắc chắn nào đó)
Vì quá trình là ngẫu nhiên nên để đánh giá nó cần một thước đo, đó chính là hệ số tương quan, độ lệch bình phương...Các khái niệm này bác F cũng đã nói rồi.
Ông Kalman trong bài báo cáo đầu tiên chỉ đề cập đến nhiễu hệ thống còn nhiễu đo thì sau này người ta mới thêm vào.Mục đích của ông là thiết kế một bộ lọc tuyến tính tối ưu sử dụng lợi nhất về bộ nhớ.Bạn để ý rằng để đánh giá bước thứ n+1 ta chỉ cẩn biết giá trị đo của nó và giá trị đánh giá thứ n, các bộ lọc khác thì cần biết đến n-p giá trị trước đó (p chính là bậc của bộ lọc).Thêm nữa ông cho tất cả các nhiễu đều là dạng ồn trắng, ma trận hệ số tương quan của chúng là ma trận đường chéo, điều này giúp cho dễ tín toán hơn.
Thứ ba, tiêu chuẩn để thiết kế bộ lọc là tối ưu một hàm mục tiêu, cụ thể ở đây là trung bình bình phương sai số của tín hiệu đánh giá và tín hiệu thật bằng 0.Dựa trên điều này ông Kalman đã xây dựng một thuật toán truy hồi cho bộ lọc này.Một kết quả quan trọng trong đại số tuyến tính mà các bộ lọc tuyến tính thường sử dụng là "đánh giá tối ưu của một vecto a trong một không gian tuyến tính B chính là hình chiếu của nó lên không gian B".Những bài sau mình sẽ cố gắng đề cập kỹ hơn về nghiệm của hệ số Kalman.
Ví dụ sử dụng Kalman thì mình thấy cái ví dụ trong Matlab rất khó hiểu khi mới đọc, tốt hơn hết là bạn dùng chương trình mà bác ami đã post ấy, cái này dễ tiếp thu hơn.
Ứng dụng của Kalman :D cái này mấy bác nói mà mình chưa rõ nên chưa thể tóm tắt được.Bạn có thể xem thêm bài của bác benq, trong đấy có một vài ý hay, nhưng mình chưa làm thử.
À mà nói thêm Kalman là người đã tìm ra được tính đỗi ngẫu giữa tính chất quan sát được và tính chất điều khiển được của một hệ thống.

hoangminh1234 22-11-2006 03:34 PM

trong luận văn segway anh ami đã áp dụng bộ lọc kalman tốt thật. Phần lý thuyết anh nói nhanh quá nên phải đọc thêm mới biết ảnh nói gì :D

hoangminh1234 23-11-2006 07:40 PM

Trích:

Nguyên văn bởi bunyuki (Post 4184)
hê hê Sorry,em nhầm chỗ:E{v.v'}=R.
Trả lời Béo luôn:
Khi tính toán bộ lọc Kalman là phải đưa ra giá trị ước lượng dựa các biến trạng thái trên các thông số tổng hợp của quá trình,đo,mô hình...một cách chân thực nhất để lam đầu vào cho bộ điều khiển.Khi tính toán người ta coi chia thành hai giai đoạn:Predict và Correct.Hai giai đoạn này bổ sung ,tác động lẫn nhau theo 1 vòng tròn khép kín(tao ko vẽ minh hoạ đc) đại loại là đoán trứơc rồi sửa cái đoán ấy cho phù hợp.Cho nên người ta còn gọi KALMAN FILTER là cái ESTIMATOR là vì thế.Trong đó,mỗi một giai đoạn người ta tính toán 1 thông số.Giai đoạn Predict người ta ước lượng trạng thái của hệ thống dựa trên trạng thái trươc đó đã có,cái giá trị ước lượng trong giai đoạn này gọi là 'a priori' tức là trạng thái trước,trạng thái sơ cấp ,trạng thái chưa đc bù kí hiệu là Xk-(a priori thời điểm k):
Xk-=A*x(k-1)^+B*u
Trong giai đoạn này ta tính covariance của sai lệch nhiễu luôn(cũng là trạng thái priori) Pk-=A*Pk-1*A'+Q
Tuy nhiên giá trị priori này chưa mang tính chân thực về hệ thống,và ta cần phải Correct lại cho đúng dựa trên các giá trị đo đc từ các sensor.Đó chính là nhiẹm vụ của giai đoạn Correct(hay update này).Giá trị đc corect lúc này gọi là 'a posteriori' kí hiệu là Xk^:
Xk^=Xk- + K(zk-H*Xk-)
zk:giá trị nhận từ sensor
K là hệ số Kalman phản hồi sai lệch trạng thái.Việc giải K khá phức tạp.Một trong cách đó là giải phương trình Riccacti.Cái này tao có nhưng chắc chẳng cần đọc,hoa mắt chóng mặt lắm.Đại loại là tính K theo covariance của sai lẹch trạng thái như sau:
K=Pk-*H'*inv(H*Pk-*H'+R)
Rồi tính thêm Pk=(I-K*H)*Pk- để cho vòng lặp sau
thế đó,lằng nhằng vậy thôi
khá lằng nhằng nhưng viết ra thấy mình hỉu đôi chút hêhê
Bác FALLEAF đâu nhẩy,lâu lắm ko thấy

zk là giá trị đo từ cảm biến hả bạn, theo công thức thì zk= xk + v (H=1). Mình băn khoăn chỗ này vì theo định nghĩa v là nhiễu Gauss, vậy xk lấy giá trị nào để tính x^k- à ?? Để mình tính lại thử xem, cảm ơn bạn nhé
////////tính toán xong thấy đúng như bạn nói, cám ơn you again

Mecha 16-03-2007 12:54 AM

Bộ lọc Kalman thực chất là bộ quan sát trạng thái tối ưu cho hệ thống. Điều này có nghĩa là khi ứng dụng bộ lọc Kalman, hai điều kiện sau đây phải được thỏa mãn:
- Cấu trúc và thông số của đối tượng và của mô hình mẫu phải tương đương nhau.
- Nhiễu hệ thống (w) và nhiễu đo lường (v) phải là nhiễu ồn trắng với biên độ trung bình bằng 0 và thỏa mãn mối tương quan sau: E(w)=E(v)=0, E(wv')=0.

Thêm một yếu tố nữa cần quan tâm là:
Từ phương trình ddt(x)=Ax+Bu+Gw có thể thấy ngay là phải biết được biến trạng thái nào của đối tượng chịu tác động của nhiễu hệ thống w -> mới có thể xác định được ma trận G. Biết được G, thay vào phương trình Riccati để tìm ma trận P -> tìm được L -> ra được trạng thái ước lượng.

Ví dụ: giả sử ta dk hệ động cơ DC kéo cục tải trên một mặt phẳng (gần đúng coi là đối tượng bậc 2 tuyến tính) -> có hai biến trạng thái là vị trí (x1) và tốc độ (x2). Nếu ta xác định được rằng nhiễu hệ thống (giả sử là ma sát giữa tải và mặt bàn) sẽ chỉ làm thay đổi x2 (tức là hệ số a22 của ma trận A bị thay đổi) -> G=[0;1].

HAI 17-03-2007 07:39 AM

Cái yếu tố thứ ba về ma trận G hay quá, cái này chắc phải làm mới có được kinh nghiệm này.Còn cái ý đầu tiên em vẫn không hiểu lắm, cấu trúc và thông số của đối tượng và của mô hình mẫu phải "tương đương" nhau.Anh có thể nói rõ hơn cái ý "tương đương" này được không hả anh?
Nhân tiện nói về đối tượng với mô hình mẫu, anh cho em hỏi cái khái niệm nominal là thế nào hả anh?Em thấy có hàm truyền nominal, giá trị nominal(trong phương pháp đo), nó cứ lờ mờ, em không hiểu được.Em nghĩ nó giống như là cái gì đó cân bằng, ở không, hoàn toàn không có nhiễu, hay cái dạng na ná thế.Nhưng em thấy nó không đúng lắm.Anh giải thích cho em với nhé!:)

tda 17-03-2007 09:56 AM

Không biết đã nói chưa nhưng theo mình trước khi tiếp cận bộ lọc Kalman, bạn nên đọc phần "Điều khiển bằng hối tiếp trạng thái", "Quan sát trạng trái", kết hợp chúng là "Điều khiển bằng hối tiếp trạng thái quan sát". Rất may phần này thầy Dương Hoài Nghĩa có dạy hồi đầu năm tư nên khi đọc Kalman mình thấy nó na ná giông nhau nên cũng dễ hiểu.

Mecha 17-03-2007 04:41 PM

Trích:

Nguyên văn bởi HAI (Post 7770)
Cái yếu tố thứ ba về ma trận G hay quá, cái này chắc phải làm mới có được kinh nghiệm này.Còn cái ý đầu tiên em vẫn không hiểu lắm, cấu trúc và thông số của đối tượng và của mô hình mẫu phải "tương đương" nhau.Anh có thể nói rõ hơn cái ý "tương đương" này được không hả anh?
Nhân tiện nói về đối tượng với mô hình mẫu, anh cho em hỏi cái khái niệm nominal là thế nào hả anh?Em thấy có hàm truyền nominal, giá trị nominal(trong phương pháp đo), nó cứ lờ mờ, em không hiểu được.Em nghĩ nó giống như là cái gì đó cân bằng, ở không, hoàn toàn không có nhiễu, hay cái dạng na ná thế.Nhưng em thấy nó không đúng lắm.Anh giải thích cho em với nhé!:)

- Cấu trúc và thông số của đối tượng và của mô hình mẫu phải "tương đương" nhau nghĩa là: giả sử ta xác định được đối tượng dk có dạng bậc 4 tuyến tính => Mô hình mẫu cũng phải là bậc 4. Và khi vẽ mô hình trong Matlab hoặc 20-sim em sẽ có 4 đường tín hiệu từ đối tượng thực (y) và 4 đường tín hiệu ra từ mô hình mẫu (y_hat) thì mới tính được cái (y - y_hat) chứ đúng không. Từ đó thì sẽ xác định được trạng thái ước lượng theo công thức ddt(x)=Ax+By+L(y - y_hat) => ddt(x)=Ax+By+L(y-Cx-Du) với A,B,C,D là thông số của mô hình mẫu.

- Khái niệm nominal anh cũng không biết dịch ra tiếng Việt chuẩn nhất thì tương đương với khái niệm gì. Anh nghĩ có thể coi nominal = chuẩn hay lý tưởng. Ví dụ "Nominal plant model" có nghĩa là đối tượng có tính chất tường minh (no uncertainty). Hay "nominal feedback loop" có nghĩa là vòng lặp phản hồi được thiết kế với giả sử rằng, hệ thống không bị ảnh hưởng bởi cả nhiễu ngoài và nhiễu hệ thống.

Mecha 17-03-2007 05:16 PM

Trích:

Nguyên văn bởi HAI (Post 5981)
Cám ơn bác candykitty, em sẽ tìm hiểu cái MRAS thử xem.Em đi từ bộ lọc tuyến tính rồi nghe mọi người quản cáo về bộ lọc Kalman nên tò mò đọc, em tiếp cận thuần tuý là ý toán của nó thôi chứ thực tế ứng dụng của nó thì mù tịt.Kiến thức về điều khiển của em thì phải nói là chưa có gì, cái nhìn hạn hẹp lắm nên hay hỏi những câu ngớ ngẩn.Chắc là vì chúng ngớ ngẩn quá nên chẳng ai trả lời cả.:(
Thôi vậy, để khi nào mấy bác rãnh rỗi thì post bài thêm vậy.Em sẽ cố gắng để cái luồng này không bị chìm nghỉm, đợi một ngày đẹp trời các bác lại vào tham gia góp ý.:)

Bạn có thể tham khảo về MRAS ở luồng này:
http://www.picvietnam.com/forum//showthread.php?t=473
Trong đó có phần thiết kế bộ quan sát trạng thái thích nghị dựa trên Indirect MRAS.

candykitty 18-03-2007 07:23 AM

Mình có đọc bài báo đó của bạn, kg biết bạn có làm thực tế chưa? Nếu chỉ dùng mô phỏng thì cách đây hai năm mình cũng có một bài báo về vấn đề MRAS này (điều khiển sesorless)

candykitty 18-03-2007 07:31 AM

Sensorless mới đúng!

Mecha 18-03-2007 08:16 AM

Cái điều khiển sensorless thấy nhiều nhất trong biến tần. Điều khiển dựa trên mô hình nội (internal model). Tôi nghĩ chắc họ dùng Indirect MRAS để xác định các thông số của động cơ mà không cần đo trực tiếp.

Mình không chuyên về MRAS, đây là nội dung nghiên cứu của 1 anh khác trong Lab của mình nhưng mình làm về DK thông minh nên cũng biết một chút về nó. Các bộ điều khiển như PID, LQG, STR, I-MRAS, D-MRAS,... đều đã được kiểm tra trên mô hình thực hết rồi.

candykitty 18-03-2007 10:15 AM

1 Attachment(s)
Sorry, quên là bạn đang ỡ Netherlands, mình tưởng bạn đang ở VN nên muốn hỏi về các kinh nghiệm khi làm thực tế (với các thiết bị hiện có tại VN), vấn đề này tại nước ngoài thì hầu như đã được nghiên cứu khá kỹ. (mình có kèm theo bài báo cáo cách đây 2 năm về MRAS).


Múi giờ GMT. Hiện tại là 10:19 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam