Những vấn đề hiện đại của khoa học và giáo dục. Cổng thông tin bảo mật bộ lọc Kalman trong nhận dạng

bộ lọc Kalman

Bộ lọc Kalman được sử dụng rộng rãi trong các ứng dụng kỹ thuật và kinh tế lượng, từ hệ thống radar và tầm nhìn đến ước tính tham số của các mô hình kinh tế vĩ mô. Lọc Kalman là một phần quan trọng của lý thuyết điều khiển và đóng vai trò lớn trong việc tạo ra các hệ thống điều khiển. Cùng với bộ điều khiển tuyến tính bậc hai, bộ lọc Kalman có thể giải quyết vấn đề điều khiển Gaussian tuyến tính bậc hai. Bộ lọc Kalman và bộ điều khiển bậc hai tuyến tính là giải pháp khả thi cho hầu hết các vấn đề cơ bản trong lý thuyết điều khiển.

Trong hầu hết các ứng dụng, số lượng tham số xác định trạng thái của đối tượng lớn hơn số lượng tham số có thể quan sát được để đo. Sử dụng mô hình của một đối tượng dựa trên một số phép đo có sẵn, bộ lọc Kalman cho phép người ta ước tính trạng thái bên trong.

Bộ lọc Kalman được thiết kế để ước tính đệ quy vectơ trạng thái của một hệ động lực đã biết trước, nghĩa là để tính trạng thái hiện tại của hệ thống, cần phải biết phép đo hiện tại, cũng như trạng thái trước đó của chính bộ lọc . Do đó, bộ lọc Kalman, giống như nhiều bộ lọc đệ quy khác, được triển khai theo thời gian, chứ không phải theo tần số, biểu diễn.

Một ví dụ rõ ràng về khả năng của bộ lọc là thu được các ước tính chính xác, được cập nhật liên tục về vị trí và tốc độ của một số đối tượng dựa trên kết quả của một chuỗi thời gian đo không chính xác về vị trí của nó. Ví dụ, trong radar, nhiệm vụ là theo dõi mục tiêu, xác định vị trí, tốc độ và gia tốc của nó, trong khi kết quả đo đến dần dần và rất nhiễu. Bộ lọc Kalman sử dụng mô hình xác suất của động lực mục tiêu để xác định loại chuyển động có thể xảy ra của đối tượng, giúp giảm tác động của tiếng ồn và cung cấp ước tính tốt về vị trí của đối tượng ở thời điểm hiện tại, tương lai hoặc quá khứ.

Giới thiệu

Bộ lọc Kalman hoạt động với khái niệm vectơ trạng thái hệ thống (một tập hợp các tham số mô tả trạng thái của hệ thống tại một thời điểm nhất định) và mô tả thống kê của nó. Trong trường hợp tổng quát, động lực học của một vectơ trạng thái nhất định được mô tả bằng mật độ xác suất phân bố các thành phần của nó tại mỗi thời điểm. Nếu bạn có một mô hình toán học nhất định về các quan sát của hệ thống, cũng như mô hình thay đổi tiên nghiệm trong các tham số của vectơ trạng thái (cụ thể là như một quá trình hình thành Markov), bạn có thể viết phương trình cho mật độ xác suất sau của vectơ trạng thái tại bất kỳ thời điểm nào. Phương trình vi phân này được gọi là phương trình Stratonovich. Phương trình Stratonovich không thể giải được ở dạng tổng quát. Giải pháp phân tích chỉ có thể đạt được trong trường hợp có một số hạn chế (giả định):

  • Gaussianity của mật độ xác suất tiên nghiệm và hậu nghiệm của vectơ trạng thái tại bất kỳ thời điểm nào (bao gồm cả mật độ ban đầu)
  • Gaussianity của tiếng ồn định hình
  • Gaussianity của tiếng ồn quan sát
  • độ trắng của tiếng ồn quan sát
  • tuyến tính của mô hình quan sát
  • tính tuyến tính của mô hình của quá trình tạo hình (hãy nhớ lại, phải là quá trình Markov)

Bộ lọc Kalman cổ điển là một phương trình tính toán khoảnh khắc đầu tiên và khoảnh khắc thứ hai của mật độ xác suất hậu nghiệm (theo nghĩa là vectơ kỳ vọng toán học và ma trận phương sai, bao gồm cả nghịch đảo) theo các hạn chế nhất định. Do thực tế là đối với mật độ xác suất chuẩn, kỳ vọng toán học và ma trận phân tán xác định hoàn toàn mật độ xác suất, chúng ta có thể nói rằng bộ lọc Kalman tính toán mật độ xác suất hậu nghiệm của vectơ trạng thái tại mỗi thời điểm. Điều này có nghĩa là nó mô tả đầy đủ vectơ trạng thái như một đại lượng vectơ ngẫu nhiên.

Các giá trị được tính toán của kỳ vọng toán học trong trường hợp này là ước tính tối ưu theo tiêu chí sai số bình phương trung bình gốc, xác định việc sử dụng rộng rãi của nó.

Có một số loại bộ lọc Kalman, khác nhau về các phép tính gần đúng và thủ thuật phải được sử dụng để giảm bộ lọc về dạng được mô tả và giảm kích thước của nó:

  • Bộ lọc Kalman mở rộng (EKF). Giảm các mô hình quan sát phi tuyến và quá trình định hình bằng cách sử dụng tuyến tính hóa thông qua khai triển chuỗi Taylor.
  • Bộ lọc Kalman không mùi (UKF). Được sử dụng trong các bài toán trong đó tuyến tính hóa đơn giản dẫn đến phá hủy các kết nối hữu ích giữa các thành phần của vectơ trạng thái. Trong trường hợp này, việc "tuyến tính hóa" dựa trên phép biến đổi không mùi.
  • Bộ lọc Kalman tập hợp (EnKF). Được sử dụng để giảm kích thước của một vấn đề.
  • Có thể thực hiện các tùy chọn với bộ lọc bổ sung phi tuyến, giúp giảm các quan sát phi Gaussian thành các quan sát bình thường.
  • Có thể có các tùy chọn với bộ lọc “làm trắng”, cho phép bạn làm việc với tiếng ồn “có màu”
  • vân vân.

Mô hình hệ thống động được sử dụng

Bộ lọc Kalman dựa trên hệ thống động tuyến tính lấy mẫu theo thời gian. Các hệ thống như vậy được mô hình hóa bằng chuỗi Markov bằng cách sử dụng các toán tử tuyến tính và các thuật ngữ có phân phối chuẩn. Trạng thái của hệ thống được mô tả bằng một vectơ có chiều hữu hạn - vectơ trạng thái. Tại mỗi bước thời gian, một toán tử tuyến tính tác động lên vectơ trạng thái và chuyển nó sang một vectơ trạng thái khác (sự thay đổi xác định trong trạng thái), một vectơ nhiễu chuẩn (các yếu tố ngẫu nhiên) được thêm vào và, trong trường hợp chung, một vectơ điều khiển mô hình hóa ảnh hưởng của hệ thống điều khiển. Bộ lọc Kalman có thể được xem tương tự như các mô hình Markov ẩn, với điểm khác biệt là các biến mô tả trạng thái của hệ thống là các phần tử của một tập vô hạn các số thực (ngược lại với một tập hữu hạn không gian trạng thái trong các mô hình Markov ẩn). Ngoài ra, các mô hình Markov ẩn có thể sử dụng phân phối tùy ý cho các giá trị vectơ trạng thái tiếp theo, không giống như bộ lọc Kalman sử dụng mô hình nhiễu phân phối chuẩn. Có một mối quan hệ chặt chẽ giữa bộ lọc Kalman và các phương trình mô hình Markov ẩn. Roweis và Chahramani (1999) đã đưa ra đánh giá về những mô hình này và các mô hình khác.

Khi sử dụng bộ lọc Kalman để thu được ước lượng vectơ trạng thái của một quá trình từ một loạt các phép đo nhiễu, cần trình bày mô hình của quá trình này theo cấu trúc của bộ lọc - dưới dạng phương trình ma trận của a loại nhất định. Cho mỗi nhịp đập k hoạt động của bộ lọc cần xác định các ma trận theo mô tả dưới đây: F k; ma trận quan sát H k; ma trận hiệp phương sai quá trình Q k; ma trận hiệp phương sai đo tiếng ồn R k; với sự có mặt của các hành động kiểm soát - một ma trận các hệ số của chúng B k .

Minh họa cách thức hoạt động của bộ lọc. Ma trận được đánh dấu bằng hình vuông. Các hình elip đánh dấu ma trận của phân phối chuẩn đa biến (bao gồm cả phương tiện và hiệp phương sai). Các vectơ không được khoanh tròn. Trong trường hợp đơn giản nhất, một số ma trận không thay đổi theo thời gian (không phụ thuộc vào chỉ số k), nhưng vẫn được bộ lọc sử dụng trong mỗi chu kỳ hoạt động.

Mô hình hệ thống/quy trình giả định rằng trạng thái thực tại thời điểm đó kđược lấy từ trạng thái thực sự vào lúc này k−1 theo phương trình:

,
  • F k- ma trận tiến hóa quy trình/hệ thống ảnh hưởng đến vectơ x k−1 (vectơ trạng thái tại thời điểm k−1 );
  • B k- ma trận điều khiển, được áp dụng cho vectơ hành động điều khiển bạn k ;
  • w k- quy trình ngẫu nhiên thông thường với kỳ vọng toán học bằng 0 và ma trận hiệp phương sai Q k, mô tả tính chất ngẫu nhiên của sự phát triển của hệ thống/quy trình:

trong khoảnh khắc k quan sát (đo lường) được thực hiện z k vectơ trạng thái thực x k, liên hệ với nhau bởi phương trình:

Ở đâu H k- ma trận đo kết nối vectơ trạng thái thực và vectơ đo được thực hiện, v k- nhiễu Gaussian trắng của các phép đo với kỳ vọng toán học bằng 0 và ma trận hiệp phương sai R k :

Trạng thái ban đầu và vectơ của các quá trình ngẫu nhiên ở mỗi chu kỳ xung nhịp ( x 0 , w 1 , …, w k , v 1 , …, v k) được coi là độc lập.

Nhiều hệ động lực thực không thể được mô tả chính xác bằng mô hình này. Trong thực tế, động lực không được tính đến trong mô hình có thể làm hỏng nghiêm trọng hiệu suất của bộ lọc, đặc biệt là khi làm việc với tín hiệu đầu vào ngẫu nhiên không xác định. Hơn nữa, động lực không được tính đến trong mô hình có thể làm cho bộ lọc không ổn định. Mặt khác, nhiễu trắng độc lập làm tín hiệu sẽ không làm cho thuật toán phân kỳ. Nhiệm vụ tách nhiễu đo lường khỏi động lực không được tính đến trong mô hình là phức tạp; nó được giải quyết bằng cách sử dụng lý thuyết về hệ thống điều khiển mạnh mẽ.

bộ lọc Kalman

Bộ lọc Kalman là một loại bộ lọc đệ quy. Để tính toán đánh giá trạng thái của hệ thống cho chu kỳ vận hành hiện tại cần đánh giá trạng thái (dưới dạng đánh giá trạng thái của hệ thống và ước tính sai số khi xác định trạng thái này) tại thời điểm chu kỳ hoạt động trước đó và các phép đo ở chu kỳ hiện tại. Thuộc tính này phân biệt nó với các bộ lọc gói yêu cầu kiến ​​thức về lịch sử của các phép đo và/hoặc ước tính trong chu kỳ hoạt động hiện tại. Dưới đây, bằng ký hiệu, chúng ta sẽ hiểu ước tính của vectơ thực tại thời điểm này N có tính đến các phép đo từ thời điểm công việc bắt đầu cho đến khi tôi bao gồm.

Trạng thái bộ lọc được chỉ định bởi hai biến:

Lặp lại bộ lọc Kalman được chia thành hai giai đoạn: ngoại suy và hiệu chỉnh. Trong quá trình ngoại suy, bộ lọc nhận được đánh giá sơ bộ về trạng thái của hệ thống (trong tài liệu tiếng Nga, nó thường được biểu thị , trong đó nó có nghĩa là "ngoại suy" và k- số chu kỳ đồng hồ mà nó được nhận) cho bước hiện tại dựa trên đánh giá cuối cùng về trạng thái từ bước trước đó (hoặc ước tính sơ bộ cho chu kỳ đồng hồ tiếp theo dựa trên đánh giá cuối cùng của bước hiện tại, tùy thuộc vào việc giải nghĩa). Ước tính sơ bộ này còn được gọi là ước tính tiên nghiệm của trạng thái vì nó không thu được bằng cách sử dụng các quan sát ở bước tương ứng. Trong giai đoạn điều chỉnh, phép ngoại suy tiên nghiệm được bổ sung các phép đo dòng điện liên quan để điều chỉnh ước tính. Ước tính được điều chỉnh còn được gọi là ước tính trạng thái sau hoặc đơn giản là ước tính vectơ trạng thái. Thông thường, hai giai đoạn này xen kẽ nhau: phép ngoại suy được thực hiện dựa trên kết quả hiệu chỉnh cho đến lần quan sát tiếp theo và việc hiệu chỉnh được thực hiện cùng với các quan sát có sẵn ở bước tiếp theo, v.v. Tuy nhiên, có thể xảy ra một diễn biến khác của các sự kiện, nếu vì lý do nào đó quan sát hóa ra không có sẵn, thì giai đoạn hiệu chỉnh có thể bị bỏ qua và ngoại suy từ ước tính chưa được điều chỉnh (phép ngoại suy tiên nghiệm). Tương tự như vậy, nếu các phép đo độc lập chỉ có sẵn trong các chu trình làm việc nhất định thì vẫn có thể hiệu chỉnh (thường sử dụng ma trận quan sát khác). H k ).

Giai đoạn ngoại suy

Giai đoạn điều chỉnh

Độ lệch nhận được ở bước k quan sát từ quan sát mong đợi từ phép ngoại suy:
Ma trận hiệp phương sai cho vectơ độ lệch (vectơ lỗi):
Ma trận độ lợi tối ưu Kalman, được hình thành trên cơ sở các ma trận hiệp phương sai của phép ngoại suy hiện có của vectơ trạng thái và các phép đo thu được (thông qua ma trận hiệp phương sai của vectơ độ lệch):
Hiệu chỉnh phép ngoại suy thu được trước đó của vectơ trạng thái - thu được ước tính của vectơ trạng thái hệ thống:
Tính toán ma trận hiệp phương sai để ước tính vectơ trạng thái hệ thống:

Biểu thức cho ma trận hiệp phương sai của ước lượng vectơ trạng thái hệ thống chỉ hợp lệ khi sử dụng vectơ hệ số tối ưu đã cho. Nói chung, biểu thức này có dạng phức tạp hơn.

Bất biến

Nếu mô hình hoàn toàn chính xác và các điều kiện ban đầu được chỉ định hoàn toàn chính xác, thì các giá trị sau sẽ được giữ nguyên sau bất kỳ số lần lặp nào của bộ lọc - chúng là bất biến:

Kỳ vọng toán học của các ước tính và phép ngoại suy của vectơ trạng thái hệ thống và ma trận lỗi là các vectơ rỗng:

kỳ vọng toán học ở đâu.

Các ma trận hiệp phương sai được tính toán của phép ngoại suy, ước tính trạng thái hệ thống và vectơ lỗi trùng với ma trận hiệp phương sai thực:

Ví dụ về xây dựng bộ lọc

Hãy tưởng tượng một chiếc xe đẩy đứng trên một đường ray dài vô tận trong điều kiện không có ma sát. Ban đầu nó đứng yên ở vị trí 0, nhưng dưới tác dụng của các yếu tố ngẫu nhiên nó chịu gia tốc ngẫu nhiên. Chúng tôi đo vị trí của xe đẩy mỗi ∆ t giây nhưng kết quả đo không chính xác. Chúng tôi muốn có được ước tính về vị trí của xe đẩy và tốc độ của nó. Hãy áp dụng bộ lọc Kalman cho bài toán này và xác định tất cả các ma trận cần thiết.

Trong bài toán này, ma trận F , H , RQ không phụ thuộc vào thời gian nên ta sẽ bỏ qua chỉ số của chúng. Ngoài ra, chúng ta không điều khiển xe đẩy nên ma trận điều khiển B vắng mặt.

Tọa độ và vận tốc của xe được mô tả bằng vectơ trong không gian trạng thái tuyến tính

tốc độ ở đâu (đạo hàm bậc nhất của tọa độ theo thời gian).

Chúng ta sẽ giả định rằng giữa ( k−1)th và k trong chu trình thứ, xe chuyển động với gia tốc không đổi một k, được phân phối theo luật chuẩn với kỳ vọng toán học bằng 0 và độ lệch chuẩn σ một. Theo cơ học Newton, chúng ta có thể viết

.

Ma trận hiệp phương sai của các hiệu ứng ngẫu nhiên

(σ Một- vô hướng).

Ở mỗi bước làm việc, vị trí của xe đẩy được đo. Giả sử rằng sai số đo vk có phân phối chuẩn với kỳ vọng toán học bằng 0 và độ lệch chuẩn σ z. Sau đó

và ma trận hiệp phương sai của nhiễu quan sát có dạng

.

Vị trí ban đầu của xe đẩy được biết chính xác

, .

Nếu vị trí và tốc độ của xe con chỉ được biết một cách gần đúng thì ma trận phương sai có thể được khởi tạo với số lượng đủ lớn. L, sao cho số vượt quá phương sai của phép đo tọa độ

, .

Trong trường hợp này, trong những chu kỳ hoạt động đầu tiên, bộ lọc sẽ sử dụng kết quả đo có trọng số lớn hơn thông tin tiên nghiệm có sẵn.

Công thức dẫn xuất

Ma trận hiệp phương sai của ước lượng vectơ trạng thái

Theo định nghĩa của ma trận hiệp phương sai P k|k

thay thế biểu thức để ước tính vectơ trạng thái

và viết biểu thức của vectơ lỗi

và vectơ đo lường

chúng tôi lấy ra vectơ lỗi đo lường v k

vì vectơ sai số đo v k không tương quan với các đối số khác, chúng ta có biểu thức

theo tính chất của hiệp phương sai vectơ, biểu thức này được chuyển về dạng

thay thế biểu thức cho ma trận hiệp phương sai ngoại suy vectơ trạng thái bằng P k|k−1 và xác định ma trận hiệp phương sai của nhiễu quan sát trên R k, chúng tôi nhận được

Biểu thức kết quả là hợp lệ cho ma trận hệ số tùy ý, nhưng nếu đó là ma trận hệ số tối ưu Kalman thì biểu thức này cho ma trận hiệp phương sai có thể được đơn giản hóa.

Ma trận tăng tối ưu

Bộ lọc Kalman giảm thiểu tổng bình phương của các kỳ vọng toán học của các lỗi ước lượng vectơ trạng thái.

Vector lỗi ước tính vector trạng thái

Nhiệm vụ là giảm thiểu tổng kỳ vọng toán học của bình phương các thành phần của một vectơ đã cho

,

tương đương với việc giảm thiểu dấu vết của ma trận hiệp phương sai của ước tính vectơ trạng thái P k|k. Chúng ta hãy thay thế các biểu thức hiện có vào biểu thức cho ma trận hiệp phương sai của ước tính vectơ trạng thái và hoàn thành nó thành một bình phương hoàn chỉnh:

Lưu ý rằng số hạng cuối cùng là ma trận hiệp phương sai của một số biến ngẫu nhiên, do đó dấu vết của nó không âm. Mức tối thiểu theo dõi đạt được khi số hạng cuối cùng được đặt thành 0:

Người ta lập luận rằng ma trận này là ma trận mong muốn và khi được sử dụng làm ma trận các hệ số trong bộ lọc Kalman, sẽ giảm thiểu tổng các sai số bình phương trung bình khi ước tính vectơ trạng thái.

Ma trận hiệp phương sai của ước lượng vectơ trạng thái sử dụng ma trận hệ số tối ưu

Biểu thức cho ma trận hiệp phương sai của ước lượng vectơ trạng thái P k|k khi sử dụng ma trận hệ số tối ưu sẽ có dạng:

Công thức này đơn giản hơn về mặt tính toán và do đó hầu như luôn được sử dụng trong thực tế, nhưng nó chỉ đúng khi sử dụng ma trận hệ số tối ưu. Nếu do độ chính xác tính toán thấp, phát sinh vấn đề về độ ổn định tính toán hoặc ma trận hệ số không phải là tối ưu được sử dụng cụ thể thì nên sử dụng công thức chung cho ma trận hiệp phương sai của ước lượng vectơ trạng thái.


Bộ lọc này được sử dụng trong nhiều lĩnh vực khác nhau - từ kỹ thuật vô tuyến đến kinh tế. Ở đây chúng ta sẽ thảo luận về ý chính, ý nghĩa, bản chất của bộ lọc này. Nó sẽ được trình bày bằng ngôn ngữ đơn giản nhất có thể.
Giả sử rằng chúng ta cần đo một số đại lượng của một vật thể nhất định. Trong kỹ thuật vô tuyến, họ thường xử lý việc đo điện áp ở đầu ra của một thiết bị nhất định (cảm biến, ăng-ten, v.v.). Trong ví dụ về máy điện tâm đồ (xem), chúng ta đang xử lý các phép đo điện thế sinh học trên cơ thể con người. Ví dụ, trong kinh tế, giá trị đo được có thể là tỷ giá hối đoái. Mỗi ngày tỷ giá hối đoái là khác nhau, tức là. mỗi ngày “số đo của anh ấy” cho chúng ta một giá trị khác nhau. Và nếu khái quát hóa, chúng ta có thể nói rằng hầu hết hoạt động của con người (nếu không phải tất cả) đều bắt nguồn từ những phép đo và so sánh liên tục về những đại lượng nhất định (xem cuốn sách).
Vì vậy, hãy giả sử rằng chúng ta liên tục đo lường một cái gì đó. Cũng hãy giả sử rằng các phép đo của chúng ta luôn có một số lỗi - điều này có thể hiểu được vì không có dụng cụ đo lý tưởng nào và mỗi dụng cụ đều tạo ra kết quả có một lỗi. Trong trường hợp đơn giản nhất, những gì được mô tả có thể được rút gọn thành biểu thức sau: z=x+y, trong đó x là giá trị thực mà chúng ta muốn đo và sẽ đo được nếu chúng ta có một thiết bị đo lý tưởng, y là số đo sai số do thiết bị đo gây ra và z là đại lượng chúng tôi đo được. Vì vậy, nhiệm vụ của bộ lọc Kalman là đoán (xác định) từ z mà chúng tôi đo được, giá trị thực của x là bao nhiêu khi chúng tôi nhận được z (chứa giá trị thực và sai số đo). Cần phải lọc (loại bỏ) giá trị thực của x khỏi z—để loại bỏ nhiễu làm méo y khỏi z. Nghĩa là, chỉ có một số tiền trong tay, chúng ta cần đoán xem số hạng nào đã cho số tiền này.
Dựa trên những điều trên, bây giờ chúng ta hãy trình bày mọi thứ như sau. Giả sử chỉ có hai số ngẫu nhiên. Chúng tôi chỉ được cung cấp số tiền của họ và chúng tôi được yêu cầu sử dụng số tiền này để xác định các điều khoản là gì. Ví dụ, chúng ta được cho số 12 và họ nói: 12 là tổng của các số x và y, câu hỏi là x và y bằng bao nhiêu. Để trả lời câu hỏi này, chúng ta tạo một phương trình: x+y=12. Chúng ta đã nhận được một phương trình có hai ẩn số, do đó, nói đúng ra, không thể tìm thấy hai số cho tổng này. Nhưng chúng ta vẫn có thể nói điều gì đó về những con số này. Chúng ta có thể nói rằng đây là các số 1 và 11, hoặc 2 và 10, hoặc 3 và 9, hoặc 4 và 8, v.v., hoặc 13 và -1, hoặc 14 và -2, hoặc 15 và - 3, v.v. Nghĩa là, chúng ta có thể sử dụng tổng (trong ví dụ 12 của chúng ta) để xác định nhiều tùy chọn có thể có tổng bằng chính xác 12. Một trong những tùy chọn này là cặp mà chúng ta đang tìm kiếm, hiện tại thực sự đã cho kết quả là 12. Nó cũng có giá trị. lưu ý rằng tất cả các biến thể của các cặp số có tổng số 12 tạo thành một đường thẳng, như trong Hình 1, được cho bởi phương trình x+y=12 (y=-x+12).

Hình 1

Vì vậy, cặp chúng ta đang tìm nằm ở đâu đó trên đường thẳng này. Tôi nhắc lại, không thể chọn từ tất cả các lựa chọn này một cặp thực sự tồn tại - mang lại số 12 mà không biết thêm bất kỳ manh mối nào. Tuy nhiên, trong tình huống mà bộ lọc Kalman được phát minh, những manh mối như vậy tồn tại. Có điều gì đó được biết trước về các con số ngẫu nhiên. Đặc biệt, cái gọi là biểu đồ phân bố cho từng cặp số đã được biết đến ở đó. Nó thường thu được sau khi quan sát đủ lâu về sự xuất hiện của các số ngẫu nhiên giống nhau. Nghĩa là, chẳng hạn, theo kinh nghiệm, người ta biết rằng trong 5% trường hợp cặp x=1, y=8 thường xuất hiện (chúng ta ký hiệu cặp này như sau: (1,8)), trong 2% trường hợp cặp này x=2, y=3 ( 2.3), trong 1% trường hợp một cặp (3.1), trong 0,024% trường hợp một cặp (11.1), v.v. Tôi nhắc lại, biểu đồ này được đưa ra dành cho tất cả các cặp đôi các số, kể cả những số có tổng bằng 12. Do đó, đối với mỗi cặp có tổng bằng 12, chúng ta có thể nói rằng, ví dụ: cặp (1, 11) xuất hiện 0,8% số lần, cặp ( 2, 10) – trong 1% trường hợp, cặp (3, 9) – trong 1,5% trường hợp, v.v. Do đó, chúng ta có thể sử dụng biểu đồ để xác định trong bao nhiêu phần trăm trường hợp tổng các số hạng của một cặp bằng 12. Ví dụ, giả sử trong 30% trường hợp tổng bằng 12. Và trong 70% còn lại, các cặp còn lại rơi ra - đó là (1,8), (2, 3), (3,1), v.v. – những số cộng với các số khác 12. Hơn nữa, ví dụ: giả sử cặp (7,5) xuất hiện trong 27% trường hợp, trong khi tất cả các cặp khác có tổng bằng 12 xuất hiện trong 0,024%+0,8% +1 %+1,5%+…=3% trường hợp. Vì vậy, từ biểu đồ, chúng tôi phát hiện ra rằng các số có tổng bằng 12 xuất hiện trong 30% trường hợp. Hơn nữa, chúng ta biết rằng nếu con số 12 được tung ra thì thông thường nhất (27% trên 30%) lý do cho điều này là cặp (7,5). Nghĩa là, nếu đã Nếu một số 12 được tung ra, chúng ta có thể nói rằng trong 90% trường hợp (27% của 30% - hoặc tương tự, 27 lần trong số 30 lần) lý do để tung được số 12 là một cặp (7,5) . Biết rằng lý do thường nhận được số tiền bằng 12 là cặp (7,5), thật hợp lý khi cho rằng, rất có thể, bây giờ nó đã giảm. Tất nhiên, thực tế vẫn không phải là bây giờ số 12 được hình thành bởi cặp cụ thể này, tuy nhiên, lần sau, nếu chúng ta gặp 12 và chúng ta lại giả sử cặp (7,5), thì trong khoảng 90%. trong số 100% trường hợp chúng tôi sẽ đúng. Nhưng nếu đoán cặp (2, 10) thì chúng ta chỉ đúng 1% trong 30% trường hợp, tức là bằng 3,33% số lần đoán đúng so với 90% khi đoán cặp (7,5). Vậy đó - đó là điểm của thuật toán lọc Kalman. Nghĩa là, bộ lọc Kalman không đảm bảo rằng nó sẽ không mắc lỗi khi xác định tổng theo tổng, nhưng nó đảm bảo rằng nó sẽ mắc lỗi với số lần tối thiểu (xác suất xảy ra lỗi sẽ là tối thiểu), vì nó sử dụng số liệu thống kê - biểu đồ về sự xuất hiện của các cặp số. Cũng cần nhấn mạnh rằng thuật toán lọc Kalman thường sử dụng cái gọi là mật độ phân bố xác suất (PDD). Tuy nhiên, cần phải hiểu rằng ý nghĩa ở đó cũng giống như ý nghĩa của biểu đồ. Hơn nữa, biểu đồ là một hàm được xây dựng trên cơ sở PDF và là giá trị gần đúng của nó (xem ví dụ).
Về nguyên tắc, chúng ta có thể mô tả biểu đồ này dưới dạng hàm của hai biến - nghĩa là ở dạng một bề mặt nhất định phía trên mặt phẳng xy. Bề mặt càng cao thì xác suất lấy được cặp tương ứng càng cao. Hình 2 cho thấy một bề mặt như vậy.


Hình 2

Như bạn có thể thấy phía trên đường thẳng x+y=12 (có các biến thể của các cặp cho tổng cộng là 12), các điểm trên bề mặt nằm ở các độ cao khác nhau và độ cao cao nhất là đối với biến thể có tọa độ (7,5). Và khi chúng ta gặp một số tiền bằng 12, trong 90% trường hợp, lý do xuất hiện số tiền này chính xác là cặp (7,5). Những thứ kia. Cặp này, có tổng bằng 12, có xác suất xuất hiện cao nhất, miễn là tổng bằng 12.
Vì vậy, ý tưởng đằng sau bộ lọc Kalman được mô tả ở đây. Trên cơ sở này, tất cả các loại sửa đổi của nó được xây dựng - lặp lại một bước, nhiều bước, v.v. Để nghiên cứu sâu hơn về bộ lọc Kalman, tôi giới thiệu cuốn sách: Van Trees G. Lý thuyết phát hiện, ước tính và điều chế.

tái bútĐối với những người quan tâm đến việc giải thích các khái niệm toán học, như người ta nói “trên ngón tay”, chúng tôi có thể giới thiệu cuốn sách này và đặc biệt là các chương trong phần “Toán học” của nó (bạn có thể mua chính cuốn sách hoặc các chương riêng lẻ từ nó. ).

1

Một nghiên cứu về việc sử dụng bộ lọc Kalman trong sự phát triển hiện đại của hệ thống định vị tích hợp đã được thực hiện. Một ví dụ về xây dựng mô hình toán học sử dụng bộ lọc Kalman mở rộng nhằm nâng cao độ chính xác trong việc xác định tọa độ máy bay không người lái được đưa ra và phân tích. Một bộ lọc một phần được xem xét. Một đánh giá ngắn gọn về các công trình khoa học sử dụng bộ lọc này để cải thiện độ tin cậy và khả năng chịu lỗi của hệ thống định vị được thực hiện. Bài viết này cho phép chúng tôi kết luận rằng việc sử dụng bộ lọc Kalman trong hệ thống định vị UAV đã được thực hiện trong nhiều sự phát triển hiện đại. Có rất nhiều biến thể và khía cạnh của việc sử dụng này, điều này cũng mang lại kết quả rõ ràng trong việc tăng độ chính xác, đặc biệt là trong trường hợp hệ thống định vị vệ tinh tiêu chuẩn bị hỏng. Đây là yếu tố chính ảnh hưởng của công nghệ này đến các lĩnh vực khoa học khác nhau liên quan đến việc phát triển hệ thống định vị chính xác và có khả năng chịu lỗi cho các loại máy bay khác nhau.

bộ lọc Kalman

dẫn đường

máy bay không người lái (UAV)

1. Makarenko G.K., Aleshechkin A.M. Nghiên cứu thuật toán lọc khi xác định tọa độ của vật thể bằng tín hiệu từ hệ thống định vị vô tuyến vệ tinh // Báo cáo TUSUR. – 2012. – Số 2 (26). – trang 15-18.

2. Bar-Shalom Y., Li X.R., Kirubarajan T. Ước tính với các ứng dụng

tới Theo dõi và Điều hướng // Thuật toán lý thuyết và Phần mềm. – 2001. – Tập. 3. – Tr. 10-20.

3. Bassem I.S. Điều hướng dựa trên tầm nhìn (VBN) của máy bay không người lái (UAV) // TRƯỜNG ĐẠI HỌC CALGARY. – 2012. – Tập. 1. – Tr. 100-127.

4. Conte G., Doherty P. Một hệ thống định vị UAV tích hợp dựa trên đối sánh hình ảnh trên không // Hội nghị hàng không vũ trụ. – 2008. –Tập. 1. – P. 3142-3151.

5. Guoqiang M., Drake S., Anderson B. Thiết kế bộ lọc Kalman mở rộng để bản địa hóa uav // Trong Thông tin, Quyết định và Kiểm soát. – 2007. – Tập. 7. – P. 224–229.

6. Tối ưu hóa quỹ đạo Ponda S.S để định vị mục tiêu bằng máy bay không người lái cỡ nhỏ // Viện Công nghệ Massachusetts. – 2008. – Tập. 1. – Trang 64-70.

7. Wang J., Garrat M., Lambert A. Tích hợp cảm biến gps/ins/vision để điều hướng các phương tiện bay không người lái // IAPRS&SIS. – 2008. – Tập. 37. – P. 963-969.

Một trong những nhiệm vụ cấp bách của công tác dẫn đường hiện đại cho máy bay không người lái (UAV) là nhiệm vụ nâng cao độ chính xác của việc xác định tọa độ. Vấn đề này được giải quyết bằng cách sử dụng nhiều tùy chọn khác nhau để tích hợp hệ thống định vị. Một trong những tùy chọn tích hợp hiện đại là sự kết hợp giữa điều hướng GPS/GLONASS với Bộ lọc Kalman mở rộng, đánh giá đệ quy độ chính xác bằng cách sử dụng các phép đo không đầy đủ và nhiễu. Hiện tại, có nhiều biến thể khác nhau của bộ lọc Kalman mở rộng đang tồn tại và đang được phát triển, bao gồm nhiều biến trạng thái. Trong công việc này, chúng tôi sẽ chỉ ra mức độ hiệu quả của việc sử dụng nó trong sự phát triển hiện đại. Hãy xem xét một trong những biểu diễn đặc trưng của bộ lọc như vậy.

Xây dựng mô hình toán học

Trong ví dụ này, chúng ta sẽ chỉ nói về chuyển động của UAV trong mặt phẳng nằm ngang, nếu không, chúng ta sẽ xem xét cái gọi là vấn đề định vị 2d. Trong trường hợp của chúng tôi, điều này là hợp lý bởi thực tế là trong nhiều tình huống thực tế gặp phải, UAV có thể duy trì ở độ cao gần như cũ. Giả định này được sử dụng rộng rãi để đơn giản hóa các mô phỏng động lực học máy bay. Mô hình động học của UAV được xác định bởi hệ phương trình sau:

trong đó () là tọa độ của UAV trong mặt phẳng nằm ngang là hàm số của thời gian, hướng của UAV, vận tốc góc của UAV và tốc độ mặt đất của UAV, các hàm số và sẽ được coi là không đổi. Chúng độc lập lẫn nhau, với hiệp phương sai đã biết và , bằng và tương ứng, và được sử dụng để lập mô hình các thay đổi về gia tốc của UAV do gió, thao tác của phi công, v.v. Các giá trị và được lấy từ vận tốc góc cực đại của UAV và các giá trị thực nghiệm về sự thay đổi vận tốc tuyến tính của UAV, - ký hiệu Kronecker.

Hệ phương trình này sẽ gần đúng do tính phi tuyến trong mô hình và sự hiện diện của nhiễu. Phương pháp gần đúng đơn giản nhất trong trường hợp này là phương pháp gần đúng Euler. Một mô hình riêng biệt của hệ thống động lực của UAV được trình bày dưới đây.

một vectơ trạng thái bộ lọc Kalman rời rạc cho phép người ta ước tính giá trị của vectơ trạng thái liên tục. ∆ - khoảng thời gian giữa các phép đo k và k+1. () và () là các chuỗi giá trị nhiễu Gaussian trắng có giá trị trung bình bằng 0. Ma trận hiệp phương sai cho chuỗi đầu tiên:

Tương tự, đối với dãy thứ hai:

Sau khi thực hiện các thay thế thích hợp trong các phương trình của hệ (2), chúng ta thu được:

Trình tự và độc lập lẫn nhau. Chúng cũng là các chuỗi nhiễu Gauss trắng có giá trị trung bình bằng 0 với ma trận hiệp phương sai và tương ứng. Ưu điểm của hình thức này là nó cho thấy sự thay đổi nhiễu rời rạc giữa mỗi lần đo. Kết quả là chúng ta thu được mô hình động rời rạc sau:

(3)

Phương trình cho:

= + , (4)

Trong đó, x và y là tọa độ của UAV tại thời điểm k và chuỗi Gaussian gồm các tham số ngẫu nhiên có giá trị trung bình bằng 0, được sử dụng để đặt lỗi. Chuỗi này được coi là độc lập với () và ().

Biểu thức (3) và (4) làm cơ sở để ước tính vị trí của UAV, trong đó tọa độ thứ k thu được bằng bộ lọc Kalman mở rộng. Việc mô hình hóa lỗi của hệ thống định vị liên quan đến loại bộ lọc này cho thấy tính hiệu quả đáng kể của nó.

Để rõ ràng hơn, hãy đưa ra một ví dụ nhỏ đơn giản. Để một số máy bay không người lái bay với gia tốc đồng đều, với gia tốc không đổi a.

Trong đó x là tọa độ của UAV tại thời điểm t và δ là một biến ngẫu nhiên nào đó.

Giả sử rằng chúng ta có cảm biến GPS nhận dữ liệu về vị trí của máy bay. Chúng ta hãy trình bày kết quả mô hình hóa quá trình này trong gói phần mềm MATLAB.

Cơm. 1. Lọc số đọc cảm biến bằng bộ lọc Kalman

Trong bộ lễ phục. Hình 1 cho thấy việc sử dụng bộ lọc Kalman có thể hiệu quả như thế nào.

Tuy nhiên, trong các tình huống thực tế, tín hiệu thường có động lực phi tuyến và nhiễu bất thường. Trong những trường hợp như vậy, bộ lọc Kalman mở rộng được sử dụng. Nếu phương sai nhiễu không quá lớn (nghĩa là xấp xỉ tuyến tính là đủ), việc sử dụng bộ lọc Kalman mở rộng sẽ cung cấp giải pháp cho vấn đề với độ chính xác cao. Tuy nhiên, trong trường hợp nhiễu không phải là Gaussian thì không thể sử dụng bộ lọc Kalman mở rộng. Trong trường hợp này, bộ lọc một phần thường được sử dụng, sử dụng các phương pháp tích phân số dựa trên phương pháp Monte Carlo với chuỗi Markov.

Bộ lọc một phần

Hãy tưởng tượng một trong những thuật toán phát triển ý tưởng của bộ lọc Kalman mở rộng - bộ lọc một phần. Lọc một phần là một kỹ thuật lọc dưới mức tối ưu hoạt động bằng cách thực hiện gộp Monte Carlo trên một tập hợp các hạt đại diện cho phân bố xác suất của quá trình. Ở đây, hạt là một phần tử được lấy từ phân phối trước của tham số được ước tính. Ý tưởng cơ bản của bộ lọc từng phần là một số lượng lớn các hạt có thể được sử dụng để biểu diễn ước tính phân bố. Số lượng hạt được sử dụng càng lớn thì tập hợp hạt sẽ thể hiện phân bố trước đó càng chính xác. Bộ lọc hạt được khởi tạo bằng cách đặt N hạt vào đó từ phân bố trước của các tham số mà chúng ta muốn ước tính. Thuật toán lọc bao gồm việc đưa các hạt này qua một hệ thống đặc biệt và sau đó cân chúng bằng cách sử dụng thông tin thu được từ việc đo các hạt này. Các hạt thu được và khối lượng liên quan của chúng thể hiện sự phân bố sau của quá trình ước tính. Chu kỳ được lặp lại cho mỗi phép đo mới và trọng lượng hạt được cập nhật để thể hiện sự phân bổ tiếp theo. Một trong những vấn đề chính với phương pháp lọc hạt truyền thống là phương pháp này thường dẫn đến kết quả là một số hạt có trọng lượng rất lớn, trái ngược với hầu hết các hạt khác có trọng lượng rất nhỏ. Điều này dẫn đến sự mất ổn định của quá trình lọc. Vấn đề này có thể được giải quyết bằng cách đưa ra tốc độ lấy mẫu trong đó N hạt mới được lấy từ một phân bố gồm các hạt cũ. Kết quả ước tính thu được bằng cách lấy mẫu giá trị trung bình của một tập hợp các hạt. Nếu chúng ta có nhiều mẫu độc lập thì giá trị trung bình mẫu sẽ là ước tính chính xác của giá trị trung bình, đưa ra phương sai cuối cùng.

Ngay cả khi bộ lọc hạt là tối ưu, thì khi số lượng hạt có xu hướng vô cùng, hiệu quả của thuật toán sẽ đạt đến quy tắc ước lượng Bayes. Vì vậy, nên có càng nhiều hạt càng tốt để có kết quả tốt nhất. Thật không may, điều này dẫn đến sự gia tăng mạnh mẽ về độ phức tạp của phép tính và do đó buộc phải thỏa hiệp giữa độ chính xác và tốc độ tính toán. Vì vậy, số lượng hạt cần được lựa chọn dựa trên yêu cầu của nhiệm vụ đánh giá độ chính xác. Một yếu tố quan trọng khác đối với hoạt động của bộ lọc hạt là giới hạn về tốc độ lấy mẫu. Như đã đề cập trước đó, tốc độ lấy mẫu là một tham số quan trọng để lọc hạt và nếu không có nó, thuật toán cuối cùng sẽ trở nên suy biến. Ý tưởng là nếu các trọng số được phân bổ quá không đồng đều và sắp đạt đến ngưỡng lấy mẫu thì các hạt có trọng lượng thấp sẽ bị loại bỏ và tập hợp còn lại tạo thành mật độ xác suất mới từ đó có thể lấy mẫu mới. Việc chọn ngưỡng tần số lấy mẫu là một công việc khá khó khăn, vì tần số quá cao khiến bộ lọc quá nhạy cảm với nhiễu, còn tần số quá thấp gây ra sai số lớn. Ngoài ra một yếu tố quan trọng là mật độ xác suất.

Nhìn chung, thuật toán lọc hạt cho thấy hiệu suất tính toán vị trí tốt đối với các mục tiêu đứng yên và trong trường hợp mục tiêu di chuyển tương đối chậm với động lực gia tốc chưa xác định. Nhìn chung, thuật toán lọc hạt ổn định hơn bộ lọc Kalman mở rộng và ít bị suy biến và hỏng hóc nghiêm trọng. Trong trường hợp phân bố phi tuyến tính, không Gaussian, thuật toán lọc này cho thấy độ chính xác rất tốt trong việc xác định vị trí của mục tiêu, trong khi thuật toán lọc Kalman mở rộng không thể sử dụng được trong những điều kiện như vậy. Nhược điểm của phương pháp này bao gồm độ phức tạp cao hơn so với bộ lọc Kalman mở rộng, cũng như thực tế là không phải lúc nào cũng rõ ràng về cách chọn tham số phù hợp cho thuật toán này.

Nghiên cứu đầy hứa hẹn trong lĩnh vực này

Có thể thấy việc sử dụng mô hình bộ lọc Kalman, tương tự như mô hình chúng tôi đã trình bày, trong đó nó được sử dụng để cải thiện hiệu suất của một hệ thống tích hợp (GPS + mô hình thị giác máy tính để khớp với cơ sở địa lý) và tình huống của sự cố của thiết bị định vị vệ tinh cũng được mô phỏng. Sử dụng bộ lọc Kalman, kết quả của hệ thống trong trường hợp xảy ra lỗi đã được cải thiện đáng kể (ví dụ: lỗi xác định độ cao đã giảm khoảng hai lần và lỗi xác định tọa độ dọc theo các trục khác nhau đã giảm gần 9 lần) . Việc sử dụng tương tự bộ lọc Kalman cũng được đưa ra.

Một vấn đề thú vị từ quan điểm của một tập hợp các phương thức được giải quyết trong . Nó cũng sử dụng bộ lọc Kalman 5 trạng thái, với một số khác biệt trong cách xây dựng mô hình. Kết quả thu được vượt quá kết quả của mô hình mà chúng tôi đã trình bày do sử dụng các phương tiện tích hợp bổ sung (sử dụng ảnh và ảnh nhiệt). Việc sử dụng bộ lọc Kalman trong trường hợp này cho phép chúng ta giảm sai số khi xác định tọa độ không gian của một điểm nhất định xuống giá trị 5,5 m.

Phần kết luận

Tóm lại, chúng tôi lưu ý rằng việc sử dụng bộ lọc Kalman trong hệ thống định vị UAV đã được thực hiện trong nhiều sự phát triển hiện đại. Có rất nhiều biến thể và khía cạnh của việc sử dụng này, cho đến việc sử dụng đồng thời một số bộ lọc tương tự với các yếu tố trạng thái khác nhau. Một trong những hướng hứa hẹn nhất để phát triển bộ lọc Kalman dường như là tạo ra một bộ lọc đã được sửa đổi, các lỗi trong đó sẽ được thể hiện bằng nhiễu màu, điều này sẽ khiến nó càng có giá trị hơn trong việc giải quyết các vấn đề thực tế. Một điều cũng rất được quan tâm trong lĩnh vực này là bộ lọc từng phần có thể lọc nhiễu không phải Gaussian. Sự đa dạng và kết quả hữu hình này trong việc cải thiện độ chính xác, đặc biệt trong trường hợp hệ thống định vị vệ tinh tiêu chuẩn bị hỏng, là những yếu tố chính tác động của công nghệ này đến các lĩnh vực khoa học khác nhau liên quan đến việc phát triển hệ thống định vị chính xác và có khả năng chịu lỗi cho các loại máy bay khác nhau. .

Người đánh giá:

Labunets V.G., Tiến sĩ Khoa học Kỹ thuật, Giáo sư, Giáo sư Khoa Cơ sở Lý thuyết Kỹ thuật Vô tuyến, Đại học Liên bang Ural được đặt theo tên của Tổng thống đầu tiên của Nga B.N. Yeltsin, Yekaterinburg;

Ivanov V.E., Tiến sĩ Khoa học Kỹ thuật, Giáo sư, Trưởng phòng. Khoa Công nghệ và Truyền thông của Đại học Liên bang Ural được đặt theo tên của Tổng thống đầu tiên của Nga B.N. Yeltsin, Yekaterinburg.

Liên kết thư mục

Gavrilov A.V. SỬ DỤNG BỘ LỌC KALMAN ĐỂ GIẢI QUYẾT VẤN ĐỀ Tinh chỉnh tọa độ UAV // Các vấn đề hiện đại của khoa học và giáo dục. – 2015. – Số 1-1.;
URL: http://science-education.ru/ru/article/view?id=19453 (ngày truy cập: 01/02/2020). Chúng tôi xin gửi đến các bạn sự chú ý của tạp chí do nhà xuất bản "Học viện Khoa học Tự nhiên" xuất bản

Bằng cách nào đó, tôi thực sự thích tất cả các loại thuật toán có cơ sở toán học rõ ràng và hợp lý) Nhưng thường mô tả của chúng trên Internet quá nhiều công thức và phép tính đến mức đơn giản là không thể hiểu được ý nghĩa chung của thuật toán. Nhưng hiểu được bản chất và nguyên lý hoạt động của một thiết bị/cơ chế/thuật toán quan trọng hơn nhiều so với việc ghi nhớ những công thức khổng lồ. Có thể tầm thường, việc ghi nhớ thậm chí hàng trăm công thức sẽ không giúp ích gì nếu bạn không biết cách áp dụng chúng như thế nào và ở đâu 😉 Thực ra, tất cả những điều này để làm gì.. Tôi quyết định mô tả một số thuật toán Tôi đã phải gặp trong thực tế. Tôi sẽ cố gắng không quá tải với các phép tính toán học để tài liệu dễ hiểu và dễ đọc.

Và hôm nay chúng ta sẽ nói về bộ lọc Kalman, hãy cùng tìm hiểu xem nó là gì, tại sao và được sử dụng như thế nào.

Hãy bắt đầu với một ví dụ nhỏ. Chúng ta hãy đối mặt với nhiệm vụ xác định tọa độ của một chiếc máy bay đang bay. Hơn nữa, một cách tự nhiên, tọa độ (hãy biểu thị nó) phải được xác định càng chính xác càng tốt.

Chúng tôi đã cài đặt trước một cảm biến trên máy bay để cung cấp cho chúng tôi dữ liệu vị trí cần thiết, nhưng, giống như mọi thứ trên thế giới này, cảm biến của chúng tôi không hoàn hảo. Do đó, thay vì giá trị chúng tôi nhận được:

lỗi cảm biến ở đâu, tức là một biến ngẫu nhiên. Do đó, từ số đọc không chính xác của thiết bị đo, chúng ta phải thu được giá trị tọa độ () càng gần với vị trí thực của máy bay càng tốt.

Nhiệm vụ đã được đặt ra, hãy chuyển sang giải quyết nó.

Hãy cho chúng tôi biết hành động điều khiển () nhờ đó máy bay bay (phi công đã cho chúng tôi biết anh ấy kéo đòn bẩy nào 😉). Sau đó, biết tọa độ ở bước thứ k, chúng ta có thể nhận được giá trị ở bước (k+1):

Có vẻ như đây là những gì chúng ta cần! Và không cần bộ lọc Kalman ở đây. Nhưng không phải mọi thứ đều đơn giản như vậy.. Trên thực tế, chúng ta không thể tính đến tất cả các yếu tố bên ngoài ảnh hưởng đến chuyến bay nên công thức có dạng sau:

lỗi do tác động từ bên ngoài, động cơ chưa hoàn hảo, v.v. ở đâu?

Vậy điều gì xảy ra? Ở bước (k+1), trước tiên, chúng ta có kết quả đọc cảm biến không chính xác và thứ hai là giá trị được tính toán không chính xác thu được từ giá trị ở bước trước.

Ý tưởng của bộ lọc Kalman là thu được ước tính chính xác về tọa độ mong muốn (đối với trường hợp của chúng tôi) từ hai giá trị không chính xác (lấy chúng với các hệ số trọng số khác nhau). Nói chung, giá trị đo được có thể là bất cứ thứ gì (nhiệt độ, tốc độ...). Đây là những gì xảy ra:

Thông qua các phép tính toán học, chúng ta có thể thu được công thức tính hệ số Kalman ở mỗi bước, nhưng, như đã thỏa thuận ở đầu bài viết, chúng ta sẽ không đi sâu hơn vào các phép tính, đặc biệt vì trong thực tế người ta đã xác định rằng hệ số Kalman luôn hướng tới một giá trị nhất định khi k tăng. Chúng ta có được sự đơn giản hóa đầu tiên của công thức:

Bây giờ hãy giả sử rằng không có mối liên hệ nào với phi công và chúng tôi không biết hành động điều khiển. Có vẻ như trong trường hợp này, chúng ta không thể sử dụng bộ lọc Kalman, nhưng thực tế không phải vậy 😉 Chúng ta chỉ đơn giản là “loại bỏ” những gì chúng ta không biết khỏi công thức, sau đó

Chúng tôi thu được công thức Kalman đơn giản nhất, tuy nhiên, mặc dù đã đơn giản hóa “khó khăn” như vậy nhưng vẫn hoàn thành nhiệm vụ của nó một cách hoàn hảo. Nếu bạn trình bày kết quả bằng đồ họa, bạn sẽ nhận được kết quả như thế này:

Nếu cảm biến của chúng tôi rất chính xác thì đương nhiên hệ số trọng số K sẽ gần bằng 1. Nếu tình huống ngược lại, tức là cảm biến của chúng ta không tốt lắm, thì K sẽ gần bằng 0.

Có lẽ chỉ vậy thôi, cứ như vậy chúng ta đã tìm ra được thuật toán lọc Kalman! Tôi hy vọng rằng bài viết hữu ích và dễ hiểu =)

Trên Internet, kể cả trên Habré, bạn có thể tìm thấy rất nhiều thông tin về bộ lọc Kalman. Nhưng thật khó để tìm ra một kết luận dễ hiểu cho chính các công thức đó. Nếu không có kết luận, toàn bộ khoa học này được coi là một loại pháp sư, các công thức trông giống như một tập hợp các biểu tượng vô danh, và quan trọng nhất là nhiều tuyên bố đơn giản nằm trên bề mặt của lý thuyết là ngoài tầm hiểu biết. Mục đích của bài viết này là nói về bộ lọc này bằng ngôn ngữ dễ tiếp cận nhất có thể.
Bộ lọc Kalman là một công cụ lọc dữ liệu mạnh mẽ. Nguyên tắc chính của nó là việc lọc sử dụng thông tin về tính chất vật lý của chính hiện tượng đó. Giả sử, nếu bạn lọc dữ liệu từ đồng hồ tốc độ của ô tô thì quán tính của ô tô sẽ cho bạn quyền coi tốc độ tăng quá nhanh là lỗi đo lường. Bộ lọc Kalman rất thú vị bởi vì, theo một nghĩa nào đó, nó là bộ lọc tốt nhất. Chúng ta sẽ thảo luận chi tiết hơn bên dưới về ý nghĩa chính xác của từ “tốt nhất”. Ở cuối bài viết, tôi sẽ chỉ ra rằng trong nhiều trường hợp, các công thức có thể được đơn giản hóa đến mức hầu như không còn gì sót lại.

Chương trình giáo dục

Trước khi làm quen với bộ lọc Kalman, tôi khuyên bạn nên nhớ lại một số định nghĩa và sự kiện đơn giản từ lý thuyết xác suất.

Giá trị ngẫu nhiên

Khi họ nói rằng một biến ngẫu nhiên được đưa ra, điều đó có nghĩa là giá trị này có thể nhận các giá trị ngẫu nhiên. Nó nhận các giá trị khác nhau với xác suất khác nhau. Ví dụ: khi bạn tung xúc xắc, một tập hợp các giá trị riêng biệt sẽ xuất hiện: . Ví dụ, khi chúng ta nói về tốc độ của một hạt chuyển động, thì rõ ràng là chúng ta phải xử lý một tập hợp các giá trị liên tục. Chúng tôi sẽ biểu thị các giá trị “bị loại bỏ” của một biến ngẫu nhiên thông qua , nhưng đôi khi chúng tôi sẽ sử dụng cùng một chữ cái mà chúng tôi biểu thị cho biến ngẫu nhiên: .
Trong trường hợp một tập hợp các giá trị liên tục, một biến ngẫu nhiên được đặc trưng bởi mật độ xác suất, mật độ này cho chúng ta biết rằng xác suất để một biến ngẫu nhiên “rơi ra” trong một vùng lân cận nhỏ có độ dài một điểm bằng . Như chúng ta có thể thấy trên hình, xác suất này bằng diện tích của hình chữ nhật được tô bóng dưới biểu đồ:

Khá thường xuyên trong cuộc sống, các biến ngẫu nhiên có phân phối Gaussian khi mật độ xác suất bằng .

Chúng ta thấy rằng hàm số có dạng một cái chuông với tâm là một điểm và có chiều rộng thứ tự đặc trưng.
Vì chúng ta đang nói về phân bố Gaussian nên sẽ thật đáng tiếc nếu không đề cập đến nó đến từ đâu. Giống như các con số đã được thiết lập vững chắc trong toán học và được tìm thấy ở những nơi không ngờ tới nhất, phân bố Gaussian đã có nguồn gốc sâu xa trong lý thuyết xác suất. Một tuyên bố đáng chú ý giải thích phần nào tính toàn năng của Gaussian là:
Giả sử có một biến ngẫu nhiên có phân phối tùy ý (trên thực tế, có một số hạn chế đối với tính tùy tiện này, nhưng chúng không hề nghiêm ngặt). Hãy cùng tiến hành thí nghiệm và tính tổng các giá trị bị loại bỏ của một biến ngẫu nhiên. Hãy làm nhiều thí nghiệm như vậy. Rõ ràng là mỗi lần chúng ta sẽ nhận được một giá trị khác nhau của số tiền. Nói cách khác, số tiền này bản thân nó là một biến ngẫu nhiên có quy luật phân phối riêng. Hóa ra là khi đủ lớn, luật phân phối của tổng này có xu hướng phân phối Gaussian (nhân tiện, chiều rộng đặc trưng của “cái chuông” tăng lên như ). Chúng ta đọc chi tiết hơn trên Wikipedia: định lý giới hạn trung tâm. Trong cuộc sống, rất thường xuyên có những đại lượng là tổng của một số lượng lớn các biến ngẫu nhiên độc lập được phân phối giống hệt nhau và do đó chúng có phân phối Gaussian.

Giá trị trung bình

Giá trị trung bình của một biến ngẫu nhiên là giá trị chúng ta sẽ nhận được trong giới hạn nếu chúng ta tiến hành nhiều thí nghiệm và tính giá trị trung bình số học của các giá trị bị loại bỏ. Giá trị trung bình được biểu thị bằng nhiều cách khác nhau: các nhà toán học thích biểu thị nó thông qua (kỳ vọng toán học), và các nhà toán học nước ngoài thích biểu thị nó thông qua (kỳ vọng). Các nhà vật lý thông qua hoặc. Chúng ta sẽ chỉ định nó theo cách nước ngoài: .
Ví dụ: đối với phân phối Gaussian, giá trị trung bình là .

phân tán

Trong trường hợp phân phối Gaussian, chúng ta thấy rõ rằng biến ngẫu nhiên thích rơi vào một vùng lân cận nhất định với giá trị trung bình của nó. Như có thể thấy từ biểu đồ, mức lan truyền đặc trưng của các giá trị là theo thứ tự . Làm cách nào chúng ta có thể ước tính mức chênh lệch giá trị này cho một biến ngẫu nhiên tùy ý nếu chúng ta biết phân phối của nó? Bạn có thể vẽ biểu đồ về mật độ xác suất của nó và ước tính chiều rộng đặc trưng bằng mắt. Nhưng chúng tôi thích đi theo con đường đại số hơn. Bạn có thể tìm thấy độ dài độ lệch trung bình (mô đun) từ giá trị trung bình: . Giá trị này sẽ là một ước tính tốt về sự phân bố đặc trưng của các giá trị. Nhưng tôi và bạn đều biết rất rõ rằng việc sử dụng module trong công thức là một vấn đề đau đầu nên công thức này ít khi được sử dụng để ước tính độ phân tán đặc tính.
Một cách đơn giản hơn (đơn giản về mặt tính toán) là tìm . Đại lượng này được gọi là độ phân tán và thường được ký hiệu là . Căn nguyên của phương sai được gọi là độ lệch chuẩn. Độ lệch chuẩn là một ước tính tốt về độ phân tán của một biến ngẫu nhiên.
Ví dụ, đối với phân bố Gaussian, chúng ta có thể tính toán rằng phương sai được xác định ở trên chính xác bằng , có nghĩa là độ lệch chuẩn bằng , điều này rất phù hợp với trực giác hình học của chúng ta.
Trên thực tế, có một trò lừa đảo nhỏ ẩn giấu ở đây. Thực tế là trong định nghĩa phân bố Gaussian, có một biểu thức dưới số mũ. Hai số này nằm trong mẫu số một cách chính xác để độ lệch chuẩn sẽ bằng hệ số. Nghĩa là, bản thân công thức phân phối Gaussian được viết dưới dạng được thiết kế riêng để chúng ta tính được độ lệch chuẩn của nó.

Biến ngẫu nhiên độc lập

Các biến ngẫu nhiên có thể phụ thuộc hoặc không. Hãy tưởng tượng ném một chiếc kim lên mặt phẳng và ghi lại tọa độ của cả hai đầu. Hai tọa độ này phụ thuộc; chúng liên hệ với nhau bởi điều kiện khoảng cách giữa chúng luôn bằng chiều dài của kim, mặc dù chúng là các biến ngẫu nhiên.
Các biến ngẫu nhiên là độc lập nếu kết quả của biến thứ nhất hoàn toàn độc lập với kết quả của biến thứ hai. Nếu các biến ngẫu nhiên là độc lập thì giá trị trung bình của tích của chúng bằng tích của các giá trị trung bình của chúng:

Bằng chứng

Ví dụ, có mắt xanh và tốt nghiệp với huy chương vàng là các biến ngẫu nhiên độc lập. Ví dụ: nếu người mắt xanh giành huy chương vàng, thì ví dụ này cho chúng ta biết rằng nếu các biến ngẫu nhiên được đưa ra bởi mật độ xác suất của chúng và , thì tính độc lập của các giá trị này được thể hiện ở chỗ mật độ xác suất ( giá trị đầu tiên bị loại bỏ và giá trị thứ hai) được tìm thấy theo công thức:

Từ đó có ngay lập tức rằng:

Như bạn có thể thấy, bằng chứng được thực hiện cho các biến ngẫu nhiên có phổ giá trị liên tục và được xác định bởi mật độ xác suất của chúng. Trong những trường hợp khác, ý tưởng chứng minh cũng tương tự.

bộ lọc Kalman

Xây dựng vấn đề

Hãy biểu thị giá trị mà chúng tôi sẽ đo và sau đó lọc. Đây có thể là vị trí, tốc độ, gia tốc, độ ẩm, mức độ mùi hôi thối, nhiệt độ, áp suất, v.v.
Hãy bắt đầu với một ví dụ đơn giản, nó sẽ dẫn chúng ta đến việc xây dựng bài toán tổng quát. Hãy tưởng tượng chúng ta có một chiếc ô tô điều khiển bằng sóng vô tuyến chỉ có thể tiến và lùi. Chúng tôi, khi biết trọng lượng của xe, hình dạng, mặt đường, v.v., đã tính toán xem cần điều khiển ảnh hưởng như thế nào đến tốc độ di chuyển.

Khi đó tọa độ của ô tô sẽ thay đổi theo quy luật:

Trong thực tế, chúng ta không thể tính đến những nhiễu loạn nhỏ tác động lên ô tô (gió, va chạm, sỏi trên đường) nên tốc độ thực của ô tô sẽ khác với tốc độ tính toán. Một biến ngẫu nhiên sẽ được thêm vào vế phải của phương trình đã viết:

Chúng tôi có một cảm biến GPS được lắp trên ô tô để cố gắng đo tọa độ thực của ô tô và tất nhiên không thể đo chính xác mà đo bị sai số, đây cũng là một biến ngẫu nhiên. Kết quả là chúng tôi nhận được dữ liệu sai từ cảm biến:

Nhiệm vụ là, khi biết số đọc cảm biến không chính xác, hãy tìm ra giá trị gần đúng cho tọa độ thực của ô tô.
Trong việc xây dựng bài toán tổng quát, bất cứ thứ gì cũng có thể chịu trách nhiệm về tọa độ (nhiệt độ, độ ẩm…), và ta sẽ ký hiệu thành viên chịu trách nhiệm điều khiển hệ thống từ bên ngoài như (trong ví dụ với chiếc máy). Các phương trình tọa độ và số đọc cảm biến sẽ như sau:

Hãy thảo luận chi tiết những gì chúng ta biết:

Điều đáng chú ý là tác vụ lọc không phải là tác vụ làm mịn. Chúng tôi không cố gắng làm mịn dữ liệu cảm biến, chúng tôi đang cố gắng đạt được giá trị gần nhất với tọa độ thực.

Thuật toán Kalman

Chúng ta sẽ tranh luận bằng quy nạp. Hãy tưởng tượng rằng ở bước thứ chúng ta đã tìm thấy một giá trị được lọc từ cảm biến gần đúng với tọa độ thực của hệ thống. Đừng quên rằng chúng ta biết phương trình điều khiển sự thay đổi tọa độ chưa biết:

Do đó, chưa nhận được giá trị từ cảm biến, chúng ta có thể giả định rằng ở bước hệ thống sẽ phát triển theo quy luật này và cảm biến sẽ hiển thị thứ gì đó gần với . Thật không may, chúng tôi chưa thể nói bất cứ điều gì chính xác hơn. Mặt khác, trong quá trình thực hiện, chúng ta sẽ có cảm biến đọc không chính xác trên tay.
Ý tưởng của Kalman như sau. Để có được kết quả gần đúng nhất với tọa độ thực, chúng ta phải chọn điểm trung gian giữa kết quả đọc của cảm biến không chính xác và dự đoán của chúng ta về những gì chúng ta mong đợi nó nhìn thấy. Chúng tôi sẽ đưa ra trọng số cho số đọc của cảm biến và trọng số sẽ giữ nguyên ở giá trị dự đoán:

Hệ số này được gọi là hệ số Kalman. Nó phụ thuộc vào bước lặp nên viết , sẽ đúng hơn, nhưng hiện tại, để không làm lộn xộn các công thức tính toán, chúng ta sẽ bỏ qua chỉ mục của nó.
Chúng ta phải chọn hệ số Kalman sao cho giá trị tọa độ tối ưu thu được gần nhất với giá trị thực. Ví dụ: nếu chúng tôi biết rằng cảm biến của chúng tôi rất chính xác thì chúng tôi sẽ tin tưởng vào khả năng đọc của nó hơn và cho giá trị có trọng số cao hơn (gần bằng một). Ngược lại, nếu cảm biến không chính xác chút nào thì chúng ta sẽ tập trung nhiều hơn vào giá trị dự đoán về mặt lý thuyết.
Nói chung, để tìm giá trị chính xác của hệ số Kalman, bạn chỉ cần giảm thiểu sai số:

Chúng ta sử dụng các phương trình (1) (các phương trình có nền màu xanh lam trong khung) để viết lại biểu thức tìm lỗi:

Bằng chứng

Bây giờ là lúc thảo luận về biểu thức giảm thiểu lỗi có nghĩa là gì? Xét cho cùng, lỗi, như chúng ta thấy, bản thân nó là một biến ngẫu nhiên và mỗi lần nhận các giá trị khác nhau. Thực sự không có cách tiếp cận nào phù hợp cho tất cả để xác định ý nghĩa của việc có sai sót tối thiểu. Cũng giống như trong trường hợp độ phân tán của một biến ngẫu nhiên, khi chúng ta cố gắng ước tính độ rộng đặc tính của độ phân tán của nó, ở đây chúng ta sẽ chọn tiêu chí đơn giản nhất để tính toán. Chúng tôi sẽ giảm thiểu giá trị trung bình của sai số bình phương:

Hãy viết biểu thức cuối cùng:

Bằng chứng

Từ thực tế là tất cả các biến ngẫu nhiên có trong biểu thức for đều độc lập, suy ra rằng tất cả các số hạng “chéo” đều bằng 0:

Chúng ta đã sử dụng thực tế là , thì công thức tính phương sai trông đơn giản hơn nhiều: .

Biểu thức này nhận giá trị nhỏ nhất khi (chúng ta đánh đồng đạo hàm bằng 0):

Ở đây chúng tôi đã viết biểu thức cho hệ số Kalman với chỉ số bước, do đó chúng tôi nhấn mạnh rằng nó phụ thuộc vào bước lặp.
Chúng tôi thay thế giá trị tối ưu thu được vào biểu thức cho , giá trị mà chúng tôi đã giảm thiểu. Chúng tôi nhận được;

Vấn đề của chúng tôi đã được giải quyết. Chúng ta đã thu được công thức lặp để tính hệ số Kalman.
Hãy tóm tắt kiến ​​​​thức thu được của chúng tôi trong một khung:

Ví dụ

Mã Matlab

Làm sạch tất cả; N=100% số mẫu a=gia tốc 0,1% sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); với t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi); z(t+1)=x(t+1)+normrnd(0,sigmaEta); kết thúc; Bộ lọc %kalman xOpt(1)=z(1); eOpt(1)=sigmaEta; cho t=1:(N-1) eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+ sigmaPsi^2)) K(t+1)=(eOpt(t+1))^2/sigmaEta^2 xOpt(t+1)=(xOpt(t)+a*t)*(1-K(t +1))+K(t+1)*z(t+1) kết thúc; cốt truyện(k,xOpt,k,z,k,x)

Phân tích

Nếu bạn theo dõi cách hệ số Kalman thay đổi theo các bước lặp, bạn có thể chỉ ra rằng nó luôn ổn định ở một giá trị nhất định. Ví dụ: khi sai số bình phương trung bình gốc của cảm biến và mô hình có tỷ lệ 10 trên 1, thì đồ thị của hệ số Kalman tùy thuộc vào bước lặp sẽ trông như sau:

Trong ví dụ sau, chúng ta sẽ thảo luận xem điều này có thể làm cho cuộc sống của chúng ta dễ dàng hơn nhiều như thế nào.

Ví dụ thứ hai

Trong thực tế, thường xảy ra trường hợp chúng ta không biết gì về mô hình vật lý của những gì chúng ta đang lọc. Ví dụ: bạn muốn lọc số đọc từ gia tốc kế yêu thích của mình. Bạn không biết trước bạn định quay gia tốc kế theo định luật nào. Thông tin nhiều nhất bạn có thể thu thập được là phương sai lỗi cảm biến. Trong tình huống khó khăn như vậy, mọi sự thiếu hiểu biết về mô hình chuyển động đều có thể bị dồn vào một biến ngẫu nhiên:

Nhưng, nói một cách thẳng thắn, một hệ thống như vậy không còn thỏa mãn các điều kiện mà chúng ta đặt ra cho biến ngẫu nhiên, bởi vì bây giờ tất cả các tính chất vật lý chưa biết của chuyển động đều bị ẩn giấu ở đó, và do đó chúng ta không thể nói rằng tại các thời điểm khác nhau, các sai số mô hình là độc lập với nhau và giá trị trung bình của chúng bằng 0. Trong trường hợp này, nhìn chung, lý thuyết bộ lọc Kalman không thể áp dụng được. Tuy nhiên, chúng ta sẽ không chú ý đến thực tế này mà sẽ áp dụng một cách ngu ngốc tất cả các công thức khổng lồ, chọn hệ số bằng mắt để dữ liệu được lọc trông đẹp mắt.
Nhưng bạn có thể đi một con đường khác, đơn giản hơn nhiều. Như chúng ta đã thấy ở trên, hệ số Kalman luôn ổn định về giá trị khi nó tăng lên. Do đó, thay vì chọn hệ số và tìm hệ số Kalman bằng các công thức phức tạp, chúng ta có thể coi hệ số này luôn là hằng số và chỉ chọn hằng số này. Giả định này hầu như sẽ không làm hỏng điều gì. Thứ nhất, chúng ta đã sử dụng trái phép lý thuyết Kalman, và thứ hai, hệ số Kalman nhanh chóng ổn định thành một hằng số. Cuối cùng, mọi thứ sẽ đơn giản hơn nhiều. Chúng ta hoàn toàn không cần bất kỳ công thức nào từ lý thuyết Kalman, chúng ta chỉ cần chọn một giá trị có thể chấp nhận được và chèn nó vào công thức lặp:

Biểu đồ sau đây hiển thị dữ liệu từ một cảm biến hư cấu được lọc theo hai cách khác nhau. Với điều kiện là chúng ta không biết gì về tính chất vật lý của hiện tượng này. Phương pháp đầu tiên là trung thực, với tất cả các công thức từ lý thuyết của Kalman. Và thứ hai được đơn giản hóa, không có công thức.

Như chúng ta có thể thấy, các phương pháp gần như không khác nhau. Sự khác biệt nhỏ chỉ được quan sát thấy ở thời điểm đầu, khi hệ số Kalman chưa ổn định.

Cuộc thảo luận

Như chúng ta đã thấy, ý tưởng chính của bộ lọc Kalman là tìm một hệ số sao cho giá trị được lọc

trung bình sẽ khác ít nhất so với giá trị thực của tọa độ. Chúng ta thấy rằng giá trị được lọc là hàm tuyến tính của số đọc cảm biến và giá trị được lọc trước đó. Và giá trị được lọc trước đó lần lượt là một hàm tuyến tính của số đọc cảm biến và giá trị được lọc trước đó. Và cứ như vậy cho đến khi dây xích được quay hoàn toàn. Nghĩa là, giá trị được lọc phụ thuộc vào mọi người kết quả đọc cảm biến trước đó một cách tuyến tính:

Vì vậy, bộ lọc Kalman được gọi là bộ lọc tuyến tính.
Có thể chứng minh rằng trong tất cả các bộ lọc tuyến tính, bộ lọc Kalman là tốt nhất. Tốt nhất theo nghĩa là sai số bình phương trung bình của bộ lọc là tối thiểu.

trường hợp đa chiều

Toàn bộ lý thuyết của bộ lọc Kalman có thể được khái quát hóa cho trường hợp đa chiều. Các công thức ở đó trông đáng sợ hơn một chút, nhưng ý tưởng rút ra chúng cũng giống như trong trường hợp một chiều. Bạn có thể nhìn thấy chúng trong bài viết tuyệt vời này: http://habrahabr.ru/post/140274/.
Và trong điều tuyệt vời này băng hình Một ví dụ về cách sử dụng chúng được đưa ra.