칼만 필터 적용 예. 과학과 교육의 현대 문제

메커니즘과 장치를 제어하기 위한 기술 프로세스의 자동화 과정에서 다양한 물리량의 측정을 처리해야 합니다. 이것은 액체나 기체의 압력과 유속, 속도, 온도 등이 될 수 있습니다. 물리량의 측정은 아날로그 센서를 사용하여 수행됩니다. 아날로그 신호는 각각의 대표 매개변수가 시간의 함수와 가능한 값의 연속 세트로 설명되는 데이터 신호입니다. 값 공간의 연속성으로 인해 신호에 도입된 간섭은 원하는 신호와 구별할 수 없습니다. 따라서 필요한 물리량의 잘못된 값이 제어 장치의 아날로그 입력으로 전송됩니다. 따라서 센서에서 오는 신호를 필터링해야 합니다.

효율적인 필터링 알고리즘 중 하나는 칼만 필터입니다. 칼만 필터는 일련의 불완전하고 잡음이 있는 측정을 사용하여 동적 시스템의 상태 벡터를 추정하는 재귀 필터입니다. Kalman 필터는 시스템의 동적 모델(예: 운동의 물리적 법칙), 제어 동작 및 여러 순차적 측정을 사용하여 최적의 상태 추정치를 형성합니다. 알고리즘은 예측과 수정이라는 두 가지 반복 단계로 구성됩니다. 첫 번째 단계에서 다음 순간의 상태 예측이 계산됩니다(측정의 부정확성을 고려). 두 번째 단계에서 센서의 새로운 정보는 예측된 값을 수정합니다(이 정보의 부정확성과 노이즈도 고려).

예측 단계에서 다음이 발생합니다.

  1. 시스템 상태 예측:

현재 시간의 시스템 상태 예측은 어디에 있습니까? - 상태 간 전환 매트릭스(시스템의 동적 모델) - 이전 시점의 시스템 상태 예측 - 제어 조치의 적용 매트릭스; - 시간의 이전 순간에 행동을 제어합니다.

  1. 오차 공분산 예측:

오류의 예측은 어디에 있습니까? - 이전 순간의 오류; - 프로세스 노이즈 공분산.

조정 단계에서 다음이 발생합니다.

  1. 칼만 이득 계산:

칼만 이득은 어디에 있습니까? - 측정과 상태의 관계를 보여주는 측정 매트릭스 - 측정 노이즈 공분산.

현재 시간의 측정은 어디에 있습니까?

  1. 공분산 오류 ​​업데이트:

여기서 단위 행렬입니다.

시스템 상태가 하나의 변수로 설명되면 = 1이고 행렬은 일반 방정식으로 변질됩니다.

칼만 필터의 효과를 명확하게 보여주기 위해 Arduino Uno 마이크로컨트롤러에 연결된 AVR PIC KY-037 볼륨 센서로 실험을 진행했습니다. 그림 1은 필터가 없는(라인 1) 센서 판독값의 그래프를 보여줍니다. 센서 출력의 혼란스러운 변동은 노이즈가 있음을 나타냅니다.

그림 1. 필터가 없는 센서 판독값 그래프

필터를 적용하려면 시스템 및 치수의 역학을 결정하는 변수의 값을 정의해야 합니다. 시스템에 제어 조치가 없기 때문에 1과 0을 동일하게 취합시다. 필터의 평활화 속성을 결정하려면 변수 값을 계산하고 매개변수 값을 선택해야 합니다.

우리는 프로그램에서 변수를 계산할 것입니다 마이크로 소프트 엑셀 2010. 이를 위해 센서 판독값의 샘플에 대한 표준 편차를 계산할 필요가 있습니다. = 0.62. 필요한 여과 수준에 따라 선택되며 = 0.001입니다. 그림 2에서 두 번째 라인은 필터가 적용된 센서 판독값의 그래프를 보여줍니다.

그림 2. 칼만 필터를 사용한 센서 판독값 그래프

그래프에서 필터가 간섭 필터링 작업에 대처했다는 결론을 내릴 수 있습니다. 정상 상태에서는 필터링을 통과한 센서 판독값의 변동이 미미하기 때문입니다.

그러나 칼만 필터에는 치명적인 단점이 있습니다. 센서에서 측정된 값이 빠르게 변경될 수 있는 경우 필터링된 센서 판독값이 측정된 값만큼 빠르게 변경되지 않습니다. 그림 3은 측정값의 점프에 대한 칼만 필터의 응답을 보여줍니다.

그림 3. 측정값의 점프에 대한 칼만 필터의 반응

측정값의 점프에 대한 필터의 응답은 무시할 수 있는 것으로 나타났습니다. 측정값이 크게 변하고 이전 값으로 돌아가지 않으면 필터링된 센서 판독값은 상당한 시간이 지난 후에야 측정값의 실제 값과 일치하게 되며 이는 높은 값을 요구하는 자동 제어 시스템에서는 허용되지 않습니다. 성능.

수행된 실험에서 칼만 필터는 저속 시스템에서 센서 판독값을 필터링하는 데 사용하는 것이 좋습니다.

서지:

  1. GOST 17657-79. 데이터 전송. 용어 및 정의. - 모스크바: 표준 출판사, 2005. - 2 p.
  2. 칼만 필터 // Wikipedia. ... 업데이트 날짜: 2017년 4월 26일. URL: http://ru.wikipedia.org/?oldid=85061599(액세스 날짜: 2017년 5월 21일).

Habré를 포함한 인터넷에서 칼만 필터에 대한 많은 정보를 찾을 수 있습니다. 그러나 공식 자체에서 쉽게 소화 가능한 파생물을 찾기가 어렵습니다. 결론이 없으면 이 모든 과학은 일종의 샤머니즘으로 인식되고 공식은 얼굴 없는 기호 집합처럼 보이며 가장 중요한 것은 이론의 표면에 있는 많은 단순한 진술이 이해할 수 없다는 것입니다. 이 기사의 목적은 가능한 한 접근 가능한 언어로 이 필터에 대해 이야기하는 것입니다.
칼만 필터는 강력한 데이터 필터링 도구입니다. 주요 원리는 필터링할 때 현상 자체의 물리학에 대한 정보가 사용된다는 것입니다. 예를 들어, 자동차의 속도계에서 데이터를 필터링하는 경우 자동차의 관성은 측정 오류로 속도의 너무 빠른 점프를 감지할 수 있는 권리를 제공합니다. 칼만 필터는 어떤 의미에서 최고의 필터이기 때문에 흥미롭습니다. "최고"라는 단어가 정확히 무엇을 의미하는지 아래에서 더 자세히 논의할 것입니다. 기사의 끝에서 나는 많은 경우에 공식이 거의 남아 있지 않을 정도로 단순화 될 수 있음을 보여줄 것입니다.

교육 프로그램

칼만 필터에 대해 알아보기 전에 확률 이론에서 몇 가지 간단한 정의와 사실을 상기할 것을 제안합니다.

임의 값

랜덤 변수가 주어졌다고 말할 때, 그들은 이 양이 랜덤 값을 가질 수 있다는 것을 의미합니다. 다른 확률로 다른 값을 취합니다. 예를 들어 주사위를 굴릴 때 이산 값 세트가 탈락합니다. 예를 들어, 떠도는 입자의 속도에 관해서는 분명히 연속적인 값 집합을 처리해야 합니다. 무작위 변수의 "중단된" 값을 다음과 같이 표시하지만 때로는 무작위 변수를 표시하는 데 사용하는 동일한 문자를 사용합니다.
연속적인 값 집합의 경우 확률 밀도는 확률 밀도로 특징지어지며, 이는 확률 변수가 길이가 있는 점의 작은 이웃에서 "떨어질" 확률이 같다는 것을 나타냅니다. 그림에서 볼 수 있듯이 이 확률은 그래프 아래 음영 처리된 사각형의 면적과 같습니다.

인생에서 확률 밀도가 같을 때 확률 변수는 가우시안인 경우가 많습니다.

우리는 함수가 한 점을 중심으로 하고 특징적인 주문 너비를 가진 종 모양을 가지고 있음을 알 수 있습니다.
우리가 가우스 분포에 대해 이야기하고 있기 때문에 그것이 어디에서 왔는지 언급하지 않는 것은 죄가 될 것입니다. 숫자가 수학에서 확고하게 자리 잡고 가장 예상치 못한 곳에서 발생하는 것처럼 가우스 분포는 확률 이론에 깊은 뿌리를 두고 있습니다. 가우스 편재를 부분적으로 설명하는 한 가지 주목할 만한 진술은 다음과 같습니다.
임의의 분포를 갖는 임의의 변수가 있다고 가정합니다(사실, 이 임의성에 대한 몇 가지 제한이 있지만 전혀 엄격하지 않습니다). 실험을 수행하고 확률 변수의 "탈락된" 값의 합을 계산해 보겠습니다. 이런 실험을 많이 해보자. 매번 다른 금액의 금액을 받게 될 것이 분명합니다. 다시 말해, 이 합계는 그 자체로 특정 분포 법칙이 있는 랜덤 변수입니다. 이 합계의 분포 법칙이 충분히 크면 가우스 분포를 따르는 경향이 있음이 밝혀졌습니다(그런데 "종"의 특성 폭이 커짐). Wikipedia: 중심 극한 정리에서 더 많은 것을 읽으십시오. 인생에서 매우 자주 균등하게 분포된 많은 독립 확률 변수로 구성된 양이 있으므로 가우시안에 따라 분포됩니다.

평균

확률 변수의 평균값은 우리가 많은 실험을 수행하고 떨어뜨린 값의 산술 평균을 계산할 때 극한에서 얻는 것입니다. 평균은 다양한 방식으로 표시됩니다. 수학자들은 (기대)로 표시하는 것을 좋아하고 외국 수학자들은 (기대)로 표시하는 것을 좋아합니다. 물리학자는 또는를 통해 있습니다. 우리는 외국 방식으로 지정할 것입니다:.
예를 들어, 가우스 분포의 경우 평균은 다음과 같습니다.

분산

가우스 분포의 경우 확률 변수가 평균 값 근처에서 떨어지는 것을 선호한다는 것을 분명히 알 수 있습니다. 그래프에서 알 수 있듯이 차수 값의 특성 산포. 분포를 안다면 임의의 확률 변수에 대한 값의 분포를 어떻게 추정할 수 있습니까? 확률 밀도 그래프를 그리고 눈으로 특성 폭을 추정할 수 있습니다. 그러나 우리는 대수적 경로를 따르는 것을 선호합니다. 평균에서 편차(모듈러스)의 평균 길이를 찾을 수 있습니다. 이 값은 값의 특성 분산을 잘 추정할 수 있습니다. 그러나 당신과 나는 공식에서 모듈을 사용하는 것이 한 가지 골칫거리라는 것을 잘 알고 있으므로 이 공식은 특성 산포를 추정하는 데 거의 사용되지 않습니다.
더 쉬운 방법(계산 측면에서 간단함)은 찾는 것입니다. 이 값을 분산이라고 하며 종종 이라고 합니다. 분산의 근을 표준 편차라고 합니다. 표준 편차는 확률 변수의 확산에 대한 좋은 추정치입니다.
예를 들어, 가우스 분포의 경우 위에서 정의한 분산이 정확히 동일하다고 계산할 수 있습니다. 이는 표준 편차가 동일하다는 것을 의미하며 이는 기하학적 직관과 매우 잘 일치합니다.
사실 여기에는 작은 사기가 숨어 있습니다. 사실 가우스 분포의 정의에서 지수 아래는 표현식입니다. 분모의 이 둘은 정확히 표준 편차가 계수와 같도록 하는 것입니다. 즉, 가우스 분포 공식 자체가 표준편차를 고려하도록 특별히 예리한 형태로 작성된다.

독립 확률 변수

확률 변수는 종속적이며 그렇지 않습니다. 평면에 바늘을 던지고 양쪽 끝의 좌표를 기록한다고 상상해보십시오. 이 두 좌표는 종속적이며 임의의 값이지만 둘 사이의 거리가 항상 바늘의 길이와 동일하다는 조건으로 관련됩니다.
확률 변수 중 첫 번째 결과가 두 번째 결과와 완전히 독립적인 경우 확률 변수는 독립입니다. 확률 변수가 독립적인 경우 해당 제품의 평균 값은 해당 평균 값의 제품과 같습니다.

증거

예를 들어 파란 눈을 가지고 있고 금메달을 딴 고등학교 졸업은 독립 확률 변수입니다. 파란 눈, 예를 들어 금메달리스트, 파란 눈 메달리스트.이 예는 확률 밀도에 의해 무작위 변수가 주어지면 이러한 값의 독립성이 확률 밀도( 첫 번째 값이 누락되고 두 번째)는 다음 공식으로 찾습니다.

바로 다음과 같습니다.

보시다시피, 증명은 값의 연속 스펙트럼을 갖고 확률 밀도로 제공되는 확률 변수에 대해 수행됩니다. 다른 경우에도 증명의 개념은 비슷합니다.

칼만 필터

문제의 공식화

측정할 값으로 표시한 다음 필터링해 보겠습니다. 이것은 좌표, 속도, 가속도, 습도, 악취, 온도, 압력 등이 될 수 있습니다.
일반적인 문제를 공식화하는 데 도움이 되는 간단한 예부터 시작하겠습니다. 앞뒤로만 갈 수 있는 무선 조종 자동차가 있다고 상상해 보십시오. 자동차의 무게, 모양, 노면 등을 알고 제어 조이스틱이 이동 속도에 어떤 영향을 미치는지 계산했습니다.

그러면 법에 따라 자동차 좌표가 변경됩니다.

실생활에서 우리는 계산에서 자동차에 작용하는 작은 섭동(바람, 요철, 도로의 자갈)을 고려할 수 없으므로 자동차의 실제 속도는 계산된 속도와 다릅니다. 작성된 방정식의 오른쪽에 확률 변수가 추가됩니다.

우리는 타자기에 GPS 센서를 설치했는데, 자동차의 실제 좌표를 측정하려고 하는데, 물론 정확하게 측정할 수는 없지만 오차를 가지고 측정하는데, 이것도 확률변수입니다. 결과적으로 센서에서 잘못된 데이터를 수신합니다.

과제는 잘못된 센서 판독값을 알고 있으면 자동차의 실제 좌표에 대한 좋은 근사값을 찾는 것입니다.
일반 작업의 공식화에서 좌표(온도, 습도 ...)에 대한 책임은 무엇이든 될 수 있으며 외부에서 시스템을 제어하는 ​​용어는 (기계의 경우)로 표시됩니다. 좌표 및 센서 판독값에 대한 방정식은 다음과 같습니다.

우리가 알고 있는 것을 자세히 논의해 봅시다.

필터링 작업이 앤티앨리어싱 작업이 아니라는 점은 주목할 가치가 있습니다. 우리는 센서의 데이터를 부드럽게 하려고 하는 것이 아니라 실제 좌표에 가장 가까운 값을 얻으려고 합니다.

칼만 알고리즘

우리는 귀납법으로 논쟁할 것입니다. 세 번째 단계에서 시스템의 실제 좌표를 잘 근사하는 센서에서 필터링된 값을 이미 찾았다고 상상해 보십시오. 알려지지 않은 좌표의 변화를 제어하는 ​​방정식을 알고 있음을 잊지 마십시오.

따라서 아직 센서로부터 값을 받지 못했다면 시스템이 이 법칙에 따라 진화하고 있으며 센서가 가까운 것을 보여줄 것이라고 가정할 수 있습니다. 불행히도, 우리는 지금까지 더 정확한 것을 말할 수 없습니다. 반면에, 우리는 손에 부정확한 센서 판독값을 갖게 될 것입니다.
Kalman의 아이디어는 다음과 같습니다. 실제 좌표에 대한 최상의 근사값을 얻으려면 부정확한 센서를 읽는 것과 센서에서 예상한 것을 예측하는 것 사이에서 중간 지점을 선택해야 합니다. 센서 판독값에 가중치를 부여하고 가중치는 예측된 값으로 유지됩니다.

계수를 칼만 계수라고 합니다. 반복 단계에 따라 다르므로 작성하는 것이 더 정확하겠지만, 지금은 계산식을 복잡하게 하지 않기 위해 해당 인덱스를 생략합니다.
결과 최적 좌표 값이 실제 값에 가장 가깝도록 칼만 계수를 선택해야 합니다. 예를 들어, 센서가 매우 정확하다는 것을 알고 있다면 판독값을 더 신뢰하고 값에 더 많은 가중치를 부여합니다(1에 가까움). 반대로 센서가 완전히 부정확하다면 이론적으로 예측된 ​​값에 더 집중할 것입니다.
일반적으로 칼만 계수의 정확한 값을 찾으려면 오류를 최소화하면 됩니다.

방정식 (1)(파란색 배경이 있는 상자에 있는 것)을 사용하여 오류에 대한 표현식을 다시 작성합니다.

증거

이제 최소화 오류라는 표현이 무엇을 의미하는지 논의할 때입니다. 결국, 우리가 볼 수 있듯이 오류는 그 자체가 임의의 변수이며 매번 다른 값을 취합니다. 사실, 오류가 최소화된다는 것이 무엇을 의미하는지 정의하는 일률적인 접근 방식은 없습니다. 확률 변수의 분산의 경우와 마찬가지로 스프레드의 특성 너비를 추정하려고 할 때 여기에서 가장 간단한 계산 기준을 선택합니다. 제곱 오차의 평균을 최소화합니다.

마지막 표현식을 작성해 보겠습니다.

증거

for 표현식에 포함된 모든 확률 변수가 독립적이라는 사실에서 모든 "교차" 항은 0과 같습니다.

분산 공식이 훨씬 간단해 보인다는 사실을 사용했습니다.

이 표현식은 다음과 같은 경우 최소값을 취합니다(미분을 0으로 간주):

여기에서 우리는 이미 단계 인덱스를 사용하여 칼만 계수에 대한 표현식을 작성하므로 반복 단계에 의존한다는 점을 강조합니다.
우리는 우리가 최소화한 식에 얻어진 최적값을 대입합니다. 우리는 받습니다.

우리의 임무는 완수되었습니다. 칼만 계수를 계산하는 반복 공식이 있습니다.
획득한 지식을 한 프레임으로 요약해 보겠습니다.

예시

매트랩 코드

모두 지우기 N = 100% 샘플 수 a = 0.1% 가속도 sigmaPsi = 1 sigmaEta = 50; k = 1: N x = k x (1) = 0 z(1) = x(1) + normrnd(0, sigmaEta); t = 1의 경우: (N-1) x (t + 1) = x(t) + a * t + normrnd(0, sigmaPsi); z(t + 1) = x(t + 1) + 표준(0, sigmaEta); 끝; % 칼만 필터 xOpt(1) = z(1); eOpt(1) = sigmaEta; 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, xOpt, k, z, k, x)

분석

칼만 계수가 반복 단계에 따라 어떻게 변하는지 추적하면 항상 일정한 값으로 안정화됨을 알 수 있습니다. 예를 들어, 센서와 모델의 rms 오류가 10:1로 관련되어 있을 때 반복 단계에 따른 칼만 계수의 플롯은 다음과 같습니다.

다음 예에서 우리는 이것이 어떻게 우리의 삶을 훨씬 더 쉽게 만들 수 있는지 논의할 것입니다.

두 번째 예

실제로, 우리는에 대해 전혀 알지 못하는 경우가 종종 발생합니다. 물리적 모델우리가 필터링하는 것. 예를 들어, 좋아하는 가속도계의 판독값을 필터링하려고 합니다. 가속도계를 돌리려는 법칙이 무엇인지 미리 알 수 없습니다. 가장 많은 정보를 얻을 수 있는 것은 센서 오류의 변동입니다. 이러한 어려운 상황에서 모션 모델에 대한 모든 무지는 랜덤 변수로 몰릴 수 있습니다.

그러나 솔직히 말해서 그러한 시스템은 더 이상 확률 변수에 부과한 조건을 충족하지 않습니다. 왜냐하면 이제 우리에게 알려지지 않은 모든 운동 물리학이 거기에 숨겨져 있으므로 서로 다른 시간에 모델 오류가 각각에 대해 독립적이라고 말할 수 없기 때문입니다. 기타 및 그들의 평균 값은 0입니다. 이 경우 대체로 칼만 필터 이론이 적용되지 않습니다. 그러나 우리는이 사실에주의를 기울이지 않고 어리석게도 모든 수식을 적용하여 계수를 눈으로 선택하여 필터링 된 데이터가 귀엽게 보이도록합니다.
그러나 훨씬 더 간단한 다른 길을 택할 수 있습니다. 위에서 보았듯이 칼만 계수는 항상 증가하는 값을 향해 안정화됩니다. 따라서 계수를 선택하고 복잡한 공식을 사용하여 칼만 계수를 찾는 대신 이 계수를 항상 일정하다고 간주하고 이 상수만 선택할 수 있습니다. 이 가정은 거의 아무것도 망치지 않습니다. 첫째, 우리는 이미 칼만 이론을 불법적으로 사용하고 있고, 둘째, 칼만 계수가 상수로 빠르게 안정화됩니다. 결과적으로 모든 것이 매우 단순화됩니다. 일반적으로 Kalman 이론의 공식은 필요하지 않으며 허용 가능한 값을 찾아 반복 공식에 삽입하기만 하면 됩니다.

다음 그래프는 두 개의 필터링된 다른 방법들가상 센서의 데이터. 우리가 현상의 물리학에 대해 아무것도 모른다는 전제하에. 첫 번째 방법은 칼만 이론의 모든 공식을 사용하여 정직합니다. 그리고 두 번째는 공식 없이 단순화되었습니다.

보시다시피 방법은 거의 동일합니다. 칼만 계수가 아직 안정화되지 않은 초기에만 작은 차이가 관찰됩니다.

논의

우리가 보았듯이 칼만 필터의 주요 아이디어는 필터링된 값이 다음과 같은 계수를 찾는 것입니다.

평균적으로 좌표의 실제 값과 가장 다를 것입니다. 필터링된 값은 센서 판독값과 이전 필터링된 값의 선형 함수임을 알 수 있습니다. 그리고 이전 필터링된 값은 차례로 센서 판독값과 이전 필터링된 값의 선형 함수입니다. 체인이 완전히 펼쳐질 때까지 계속됩니다. 즉, 필터링된 값은 다음에 따라 달라집니다. 모든선형으로 이전 센서 판독값:

따라서 칼만 필터를 선형 필터라고 합니다.
칼만 필터가 모든 선형 필터 중 최고임을 증명할 수 있습니다. 필터 오차의 평균 제곱이 최소라는 점에서 가장 좋습니다.

다차원 케이스

칼만 필터의 전체 이론은 다차원 경우로 일반화될 수 있습니다. 공식은 조금 더 무섭게 보이지만 파생의 아이디어는 1차원 경우와 동일합니다. 이 훌륭한 기사에서 볼 수 있습니다. http://habrahabr.ru/post/140274/.
그리고 이 멋진 동영상사용 방법의 예가 분석됩니다.

칼만 필터는 아마도 많은 과학 및 기술 분야에서 사용되는 가장 인기 있는 필터링 알고리즘일 것입니다. 단순성과 효율성으로 인해 GPS 수신기, 센서 판독 프로세서, 제어 시스템 구현 등에서 찾을 수 있습니다.

인터넷에는 칼만 필터에 대한 글과 책이 많이 있지만(대부분 영어로 되어 있음) 이러한 글들은 진입 문턱이 상당히 크고, 사실 매우 명확하고 투명한 알고리즘임에도 불구하고 모호한 곳이 많다. 나는 당신에게 그에 대해 이야기하려고 노력할 것입니다. 간단한 언어, 복잡성이 점진적으로 증가합니다.

무엇을 위한 것입니까?

모든 측정 장치에는 약간의 오류가 있으며 많은 외부 및 내부 영향의 영향을 받을 수 있으므로 해당 장치의 정보가 시끄럽습니다. 데이터에 노이즈가 많을수록 그러한 정보를 처리하기가 더 어렵습니다.

필터는 노이즈와 불필요한 정보를 제거하는 데이터 처리 알고리즘입니다. 칼만 필터에서는 시스템의 특성, 변수의 관계에 대한 선험적 정보를 설정하고 이를 기반으로 보다 정확한 추정을 할 수 있지만 가장 단순한 경우에도(선험적 정보를 입력하지 않고 ) 우수한 결과를 제공합니다.

고려하다 가장 간단한 예- 탱크의 연료 레벨을 제어해야 한다고 가정합니다. 이를 위해 용량 성 센서가 탱크에 설치되어 유지 관리가 매우 쉽지만 채워지는 연료에 대한 의존성과 같은 몇 가지 단점이 있습니다 (연료의 유전 상수는 많은 요인에 따라 다릅니다. 온도), 탱크의 "범프니스"가 큰 영향을 미칩니다. 결과적으로 그 정보는 적절한 진폭을 가진 전형적인 "톱"을 나타냅니다. 이러한 유형의 센서는 종종 무거운 광산 장비에 설치됩니다(탱크의 부피와 혼동하지 마십시오).

칼만 필터

조금 벗어나서 알고리즘 자체에 대해 알아 봅시다. 칼만 필터는 시스템의 동적 모델(예: 운동의 물리적 법칙), 알려진 제어 동작 및 여러 연속 측정을 사용하여 최적의 상태 추정치를 형성합니다. 알고리즘은 예측과 수정의 두 가지 반복 단계로 구성됩니다. 처음에는 다음 순간의 상태 예측이 계산됩니다(측정의 부정확성을 고려). 두 번째로 센서의 새로운 정보는 예측 값을 수정합니다(이 정보의 부정확성과 잡음도 고려).

방정식은 선형 대수학을 모르는 경우 행렬 형식으로 표시됩니다. 괜찮습니다. 변수가 하나인 경우에는 행렬이 없는 단순화된 버전이 있을 것입니다. 변수가 하나인 경우 행렬은 스칼라 값으로 변질됩니다.

먼저 표기법을 이해합시다. 아래 첨자는 시간의 순간을 나타냅니다. k - 현재, (k-1) - 이전, 위 첨자의 빼기 기호는 다음을 의미합니다. 예측중간 가치.

변수에 대한 설명은 다음 이미지에 나와 있습니다.

이 모든 신비한 전환 행렬이 의미하는 바를 길고 지루하게 설명하는 것은 가능하지만 실제 예를 사용하여 알고리즘을 적용하려고 시도하는 것이 더 좋습니다. 그래야 추상적 값이 실제 의미를 얻을 수 있습니다.

행동으로 해보자

시스템 상태가 하나의 변수(탱크에 있는 연료의 양)로 표현되기 때문에 연료 레벨 센서가 있는 예로 돌아가 보겠습니다. 행렬은 일반적인 방정식으로 변질됩니다.
프로세스 모델 정의
필터를 적용하려면 시스템의 역학과 치수 F, B 및 H를 결정하는 변수의 행렬/값을 결정해야 합니다.

에프- 연료의 경우 시스템의 역학을 설명하는 변수 - 이것은 샘플링 시간(알고리즘 단계 사이의 시간) 동안 유휴 상태에서 연료 소비를 결정하는 계수일 수 있습니다. 그러나 연료 소비 외에도 연료 보급도 있습니다 ... 따라서 단순성을 위해이 변수를 1로 사용합니다 (즉, 예측 값이 이전 상태와 같을 것임을 나타냄).

- 제어 조치의 적용을 결정하는 변수. 엔진 속도나 가속 페달을 밟는 정도에 대한 추가 정보가 있는 경우 이 매개변수는 샘플링 시간 동안 연료 소비가 어떻게 변할지 결정합니다. 우리 모델에는 제어 작업이 없기 때문에(관련 정보가 없음) B = 0을 사용합니다.

시간- 측정값과 시스템 상태 사이의 관계를 결정하는 행렬, 지금은 설명 없이 이 변수도 1로 간주합니다.

스무딩 속성 정의
아르 자형- 측정 오류는 측정 장비를 테스트하고 측정 오류를 결정하여 결정할 수 있습니다.

- 프로세스 노이즈의 결정은 항상 가능한 것은 아니지만 프로세스의 분산을 결정해야 하기 때문에 더 어려운 작업입니다. 어떤 경우든 이 매개변수를 선택하여 필요한 여과 수준을 제공할 수 있습니다.

코드로 구현
나머지 이해 불가능성을 없애기 위해 C #에서 (행렬 및 제어 작업 없이) 단순화된 알고리즘을 구현해 보겠습니다.

클래스 KalmanFilterSimple1D
{
public double X0 (get; private set;) // 예측 상태
public double P0 (get; private set;) // 예측 공분산

Public double F (get; private set;) // 이전 실수 값에 대한 실제 값의 인수
public double Q (get; private set;) // 측정 노이즈
public double H (get; private set;) // 실제 값에 대한 측정 값의 인수
public double R (get; private set;) // 환경 노이즈

공개 이중 상태(get, private set;)
공개 이중 공분산(get; private set;)

공개 KalmanFilterSimple1D(이중 q, 이중 r, 이중 f = 1, 이중 h = 1)
{
Q = q;
R = r;
에프 = 에프;
H = h;
}

Public void SetState(이중 상태, 이중 공분산)
{
상태 = 상태;
공분산 = 공분산;
}

공개 무효 수정(이중 데이터)
{
// 시간 업데이트 - 예측
X0 = F * 상태;
P0 = F * 공분산 * F + Q;

// 측정 업데이트 - 수정
var K = H * P0 / (H * P0 * H + R);
상태 = X0 + K * (데이터 - H * X0);
공분산 = (1 - K * H) * F;
}
}

// 애플리케이션 ...

변수 연료 데이터 = GetData();
var 필터링됨 = 새 목록();

Var kalman = 새로운 KalmanFilterSimple1D(f: 1, h: 1, q: 2, r: 15); // F, H, Q 및 R 설정
kalman.SetState(연료 데이터, 0.1); // State와 Covariance의 초기값 설정
foreach(fuelData의 var d)
{
칼만.정확(d); // 알고리즘 적용

Filtered.Add(kalman.State); // 현재 상태를 저장
}

이러한 매개변수로 필터링한 결과가 그림에 표시됩니다(평활도를 조정하려면 Q 및 R 매개변수를 변경할 수 있음).

가장 흥미로운 점은 기사의 범위를 벗어나는 것입니다. 여러 변수에 칼만 필터를 적용하고, 이들 간의 관계를 설정하고, 관찰할 수 없는 변수에 대한 값을 자동으로 표시합니다. 시간이 되는대로 주제를 이어가도록 노력하겠습니다.

질문이나 설명이 있는 경우 설명이 매우 지루하고 복잡하지 않기를 바랍니다. 의견을 환영합니다.)


이 필터는 무선 엔지니어링에서 경제학에 이르기까지 다양한 분야에서 사용됩니다. 여기서 우리는 주요 아이디어, 의미, 본질에 대해 논의 할 것입니다 이 필터... 가장 간단한 방법으로 제시될 것입니다.
어떤 물체의 양을 측정할 필요가 있다고 가정합니다. 무선 공학에서는 대부분 특정 장치(센서, 안테나 등)의 출력에서 ​​전압 측정을 처리합니다. 심전도가 있는 예(참조)에서 우리는 인체의 생체 전위 측정을 다루고 있습니다. 예를 들어 경제학에서 측정된 값은 환율이 될 수 있습니다. 매일 환율이 다릅니다. 매일 "그의 측정"은 우리에게 다른 가치를 제공합니다. 그리고 일반화한다면, 우리는 개인의 활동의 대부분(전부는 아닐지라도)이 특정 양의 비교(책 참조)와 같은 일정한 측정으로 정확하게 축소된다고 말할 수 있습니다.
따라서 우리가 지속적으로 무언가를 측정하고 있다고 가정해 보겠습니다. 또한 측정에는 항상 약간의 오류가 있다고 가정해 보겠습니다. 이상적인 측정 도구가 없고 각각 오류가 있는 결과를 생성하기 때문에 이것은 이해할 수 있습니다. 가장 간단한 경우에 설명된 내용은 다음 식으로 축소될 수 있습니다. z = x + y, 여기서 x는 측정하려는 실제 값이며 이상적인 측정 장치가 있는 경우 측정할 값이고 y는 측정 장치에 의해 도입된 측정 오류 및 z - 우리가 측정한 값. 따라서 칼만 필터의 임무는 측정된 z로부터 추측(결정)하는 것입니다. 그러나 우리가 z를 수신했을 때 x의 진정한 값은 무엇이었습니까(여기서 진정한 값과 측정 오류는 "앉아" 있음). z에서 x의 실제 값을 필터링(제거)해야 합니다. z에서 왜곡 노이즈 y를 제거합니다. 즉, 수중에 금액만 있으면 이 금액을 제공한 용어를 추측해야 합니다.
위의 내용에 비추어 이제 다음과 같이 모든 것을 공식화합니다. 두 개의 난수가 있다고 가정합니다. 우리는 그들의 합계만 제공받았고 이 합계로 항이 무엇인지 결정해야 합니다. 예를 들어, 우리에게 숫자 12가 주어졌을 때 그들은 말합니다: 12는 숫자 x와 y의 합이고, 질문은 x와 y는 무엇과 같습니다. 이 질문에 답하기 위해 x + y = 12 방정식을 작성합니다. 우리는 두 개의 미지수가 있는 하나의 방정식을 얻었으므로 엄밀히 말해서 이 합계를 제공하는 두 개의 숫자를 찾는 것은 불가능합니다. 그러나 우리는 여전히 이 수치에 대해 말할 수 있습니다. 우리는 그것이 숫자 1과 11, 또는 2와 10, 또는 3과 9, 또는 4와 8 등이라고 말할 수 있습니다. 또한 13과 -1, 또는 14와 -2, 또는 15와 - 3 등 즉, 합계(예제 12에서)로 집합을 결정할 수 있습니다. 가능한 옵션이 옵션 중 하나는 우리가 찾고 있는 쌍이며 실제로 지금은 12를 제공합니다. .1 , 방정식 x + y = 12(y = -x + 12)로 제공됩니다.

그림 1

따라서 우리가 찾고 있는 쌍은 이 직선의 어딘가에 있습니다. 반복합니다. 이 모든 옵션에서 실제로 있었던 쌍을 선택하는 것은 불가능합니다. 즉, 추가 단서 없이 숫자 12를 제공했습니다. 하지만, 칼만 필터가 발명된 상황에서 이러한 힌트가 있습니다.... 난수에 대해 미리 알려진 것이 있습니다. 특히, 각 숫자 쌍에 대한 소위 분포 히스토그램이 알려져 있습니다. 이것은 일반적으로 이러한 매우 난수의 발생을 상당히 오랫동안 관찰한 후에 얻습니다. 즉, 예를 들어 5%의 경우 x = 1, y = 8 쌍이 일반적으로 빠지는 것으로 알려져 있습니다(이 쌍을 (1,8)로 표시), 경우의 2%에서 쌍 x = 2, y = 3( 2,3), 1%의 경우 쌍(3.1), 0.024%의 경우 쌍(11.1) 등 다시, 이 히스토그램은 모든 커플을 위한총 12를 형성하는 숫자를 포함하여 숫자. 따라서 총 12를 제공하는 각 쌍에 대해 예를 들어 한 쌍 (1, 11)이 0.8%의 경우에 빠진다고 말할 수 있습니다. 2, 10) - 1%의 경우, 한 쌍(3, 9) - 1.5%의 경우 등 따라서 히스토그램을 사용하여 한 쌍의 항의 합이 12인 경우의 백분율을 결정할 수 있습니다. 예를 들어 경우의 30%에서 합이 12라고 가정합니다. 나머지 70%에서는 나머지 쌍이 다음과 같습니다. out - (1,8), (2,3), (3,1) 등입니다. - 합이 12가 아닌 다른 숫자. 그리고 예를 들어, 한 쌍(7.5)이 27%의 경우에 빠지고, 12를 더하는 다른 모든 쌍은 0.024% + 0.8% + 1%에서 빠집니다. + 1.5% +… = 케이스의 3%. 그래서 히스토그램에 따르면 총 12를 나타내는 숫자가 30%의 경우에 빠지는 것을 발견했습니다. 동시에 12개가 떨어지면 가장 자주(30%의 27%) 그 이유가 쌍(7.5)이라는 것을 알고 있습니다. 즉, 만약 이미 12개가 나왔을 때 90%(30% 중 27% - 또는 30개 중 27번과 동일)에서 12가 버려지는 이유는 쌍(7.5)이라고 말할 수 있습니다. 합이 12가 되는 가장 흔한 이유가 쌍(7.5)이라는 것을 알고 있기 때문에 지금은 떨어졌을 가능성이 가장 높다고 가정하는 것이 논리적입니다. 물론, 실제로 현재 숫자 12가 이 특정 쌍에 의해 형성된다는 사실은 여전히 ​​사실이 아닙니다. 그러나 다음에 12를 발견하고 다시 쌍(7.5)을 가정하고 경우의 90% 어딘가에서 100% 우리가 옳을 것입니다. 그러나 쌍 (2, 10)을 가정하면 30%의 시간 중 1%만 옳을 것입니다. 이는 쌍(7.5)을 가정할 경우 90%에 비해 3.33%의 정확한 추측입니다. 그게 다야 - 이것이 칼만 필터 알고리즘의 요점입니다. 즉, Kalman 필터는 summand를 결정할 때 실수하지 않는다는 것을 보장하지 않지만 통계를 사용하기 때문에 최소한의 실수(오류 확률이 최소화됨)를 보장합니다. 누락된 숫자 쌍의 히스토그램. 또한 칼만 필터링 알고리즘에서 소위 확률 분포 밀도(Probability Distribution Density, PDF)가 자주 사용된다는 점을 강조해야 합니다. 단, 히스토그램과 같은 의미임을 이해하셔야 합니다. 또한 히스토그램은 PDF를 기반으로 구축된 함수이며 그 근사값입니다(예: 참조).
원칙적으로 우리는 이 히스토그램을 두 변수의 함수로 나타낼 수 있습니다. 즉, xy 평면 위의 표면으로 나타낼 수 있습니다. 표면이 높을수록 해당 쌍의 가능성이 더 높습니다. 그림 2는 이러한 표면을 보여줍니다.


그림 2

위에서 볼 수 있듯이 직선 x + y = 12(총 12개를 제공하는 쌍의 변형)는 서로 다른 높이에 있으며 좌표(7.5)가 있는 변형의 경우 가장 높은 높이에 있습니다. 그리고 우리가 12와 같은 합을 만났을 때 90%의 경우에 이 합이 나타나는 이유는 정확히 쌍(7.5)입니다. 저것들. 합계가 12인 경우 발생 확률이 가장 높은 것은 총 12개를 제공하는 이 쌍입니다.
따라서 칼만 필터의 이면에 있는 아이디어가 여기에 설명되어 있습니다. 한 단계, 다단계 반복 등 모든 종류의 수정이 이루어집니다. 칼만 필터에 대한 더 깊은 연구를 위해서는 Van Tries G. Theory of detection, estimation, and modulation 책을 추천합니다.

추신."손가락 위"라고 하는 수학 개념을 설명하는 데 관심이 있는 사람들을 위해 이 책, 특히 "수학" 섹션의 장을 조언할 수 있습니다(책 자체 또는 개별 장을 구입할 수 있습니다. 그것).

칼만 필터

칼만 필터는 레이더 및 비전 시스템에서 거시 경제 모델의 매개변수 추정에 이르기까지 엔지니어링 및 계량 경제학 응용 프로그램에서 널리 사용됩니다. 칼만 여과는 제어 이론의 중요한 부분이며 제어 시스템 생성에 큰 역할을 합니다. 선형 2차 제어기와 함께 칼만 필터를 사용하면 선형 2차 가우스 제어 문제를 해결할 수 있습니다. 칼만 필터와 선형-2차 제어기는 제어 이론에서 가장 근본적인 문제에 대한 가능한 솔루션입니다.

대부분의 애플리케이션에서 물체의 상태를 정의하는 매개변수의 수는 측정에 사용할 수 있는 관찰된 매개변수의 수보다 많습니다. 사용 가능한 여러 측정에 대해 개체 모델을 사용하여 칼만 필터를 사용하면 내부 상태의 추정치를 얻을 수 있습니다.

칼만 필터는 선험적으로 알려진 역학 시스템의 상태 벡터를 재귀적으로 재평가하기 위한 것입니다. 즉, 시스템의 현재 상태를 계산하려면 현재 측정값과 필터의 이전 상태를 알아야 합니다. 그 자체. 따라서 다른 많은 재귀 필터와 마찬가지로 칼만 필터는 주파수 표현이 아닌 시간적으로 구현됩니다.

필터 기능의 실례는 위치에 대한 부정확한 시계열 측정 결과를 기반으로 개체의 위치와 속도에 대한 정확하고 지속적으로 업데이트된 추정치를 얻는 것입니다. 예를 들어 레이더에는 목표물을 추적하고 위치, 속도 및 가속도를 결정하는 작업이 있지만 측정 결과는 점진적으로 나타나며 매우 시끄럽습니다. 칼만 필터는 대상 역학의 확률론적 모델을 사용합니다. 대상 역학은 대상의 가능한 움직임 유형을 지정하므로 노이즈의 영향을 줄이고 현재, 미래 또는 과거 순간에 대상의 위치를 ​​잘 추정할 수 있습니다. .

소개

칼만 필터는 시스템 상태 벡터(특정 시점의 시스템 상태를 설명하는 매개변수 집합)의 개념과 통계적 설명으로 작동합니다. 일반적으로 특정 상태 벡터의 역학은 각 순간에 해당 구성 요소 분포의 확률 밀도로 설명됩니다. 시스템의 관찰된 관찰에 대한 특정 수학적 모델과 상태 벡터 매개변수의 선험적 변화 모델(즉, 마르코프 형성 과정)이 있는 경우 사후에 대한 방정식을 작성할 수 있습니다. 언제든지 상태 벡터의 확률 밀도. 이 미분 방정식을 Stratonovich 방정식이라고 합니다. 일반적인 형태의 Stratonovich 방정식은 풀리지 않습니다. 분석 솔루션여러 제한 사항(가정)이 있는 경우에만 얻을 수 있습니다.

  • 임의의 시점에서 상태 벡터의 선험적 가우스 밀도 및 사후 확률 밀도(초기 포함)
  • 가우스 성형 노이즈
  • 관측 노이즈의 가우스
  • 관찰 노이즈의 백색도
  • 관찰 모델의 선형성
  • 성형 공정 모델의 선형성(이는 Markov 공정이어야 함)

고전적인 칼만 필터는 이러한 제약 하에서 사후 확률 밀도의 첫 번째 및 두 번째 모멘트를 계산하기 위한 방정식입니다(수학적 기대치의 벡터와 분산 행렬의 의미에서). 정규확률밀도의 경우 수학적 기대치와 분산행렬이 확률밀도를 완전하게 정의한다는 점에서 칼만 필터는 매 순간 상태벡터의 사후확률밀도를 계산한다고 말할 수 있다. 이는 상태 벡터를 임의의 벡터 수량으로 완전히 설명한다는 것을 의미합니다.

이 경우 수학적 기대치의 계산된 값은 그것의 광범위한 사용을 결정하는 평균 제곱 오차의 기준에 따른 최적의 추정치입니다.

Kalman 필터에는 여러 종류가 있으며, 설명된 형식으로 필터를 줄이고 차원을 줄이는 데 사용해야 하는 근사치와 트릭이 다릅니다.

  • 확장 칼만 필터(EKF). Taylor 시리즈 확장을 통한 선형화를 사용한 비선형 관측 모델 및 성형 프로세스의 축소.
  • 무향 칼만 필터(UKF). 단순한 선형화가 상태 벡터의 구성 요소 간의 유용한 연결을 파괴하는 문제에 사용됩니다. 이 경우 "선형화"는 무향 변환을 기반으로 합니다.
  • 앙상블 칼만 필터(EnKF). 문제의 차원을 줄이는 데 사용됩니다.
  • 비선형 추가 필터가 있는 변형이 가능하여 가우스가 아닌 관측값을 정상으로 만들 수 있습니다.
  • "화이트닝" 필터가 있는 변형이 가능하여 "색상" 노이즈로 작업할 수 있습니다.
  • 등.

사용된 동적 시스템 모델

칼만 필터는 시간 이산화 선형 동적 시스템을 기반으로 합니다. 이러한 시스템은 선형 연산자와 정규 분포 항을 사용하는 Markov 체인에 의해 모델링됩니다. 시스템의 상태는 유한 차원의 벡터인 상태 벡터로 설명됩니다. 각 시간 단계에서 선형 연산자는 상태 벡터에 작용하여 이를 다른 상태 벡터(결정론적 상태 변경)로 변환하고, 특정 일반 잡음 벡터(임의 요인)가 추가되며, 일반적으로 동작을 시뮬레이션하는 제어 벡터 제어 시스템의. 칼만 필터는 시스템 상태를 설명하는 변수가 무한 집합의 요소라는 차이점이 있는 은닉 마르코프 모델의 유사체로 볼 수 있습니다. 실수(은닉 마르코프 모델의 유한한 상태 공간 집합과 반대). 또한 숨겨진 Markov 모델은 정규 분포 노이즈 모델을 사용하는 Kalman 필터와 달리 상태 벡터의 후속 값에 대해 임의의 분포를 사용할 수 있습니다. 칼만 필터의 방정식과 은닉 마르코프 모델 사이에는 강한 관계가 있습니다. 이러한 모델과 다른 모델은 Roweis와 Chahramani(1999)에 의해 검토되었습니다.

일련의 잡음이 있는 측정에서 프로세스 상태 벡터의 추정치를 얻기 위해 칼만 필터를 사용할 때 모델을 제시해야 합니다. 이 과정필터의 구조에 따라 - 특정 유형의 행렬 방정식 형태. 모든 비트에 대해 케이필터 작업의 경우 아래 설명에 따라 행렬을 결정해야 합니다. 프로세스 진화 에프 케이; 관찰 행렬 시간 케이; 공정 공분산 행렬 케이; 측정 노이즈 공분산 행렬 아르 자형 케이; 제어 조치가있는 경우 - 계수의 행렬 케이 .

필터 작동 방식을 보여주는 그림. 행렬은 사각형으로 표시됩니다. 타원은 다변량 정규 분포(평균 및 공분산 포함)의 행렬을 표시합니다. 벡터는 설명되어 있지 않습니다. 가장 간단한 경우, 일부 행렬은 시간이 지남에 따라 변경되지 않습니다(인덱스에 의존하지 않음). 케이), 그러나 여전히 모든 클록 주기에서 필터에 의해 사용됩니다.

시스템/프로세스 모델은 현재 상태가 실제 상태라고 가정합니다. 케이현재의 실제 상태에서 얻어진다. 케이방정식에 따라 −1:

,
  • 에프 케이- 벡터에 영향을 미치는 프로세스/시스템의 진화 매트릭스 엑스 케이−1(현재 상태 벡터 케이−1 );
  • 케이- 제어 동작의 벡터에 적용되는 제어 매트릭스 케이 ;
  • 케이- 수학적 기대치가 0이고 공분산 행렬이 있는 일반 랜덤 프로세스 케이, 시스템/프로세스 진화의 무작위적 특성을 설명합니다.

순간에 케이관찰(측정) 케이참 상태 벡터 엑스 케이, 다음 방정식과 관련이 있습니다.

어디 시간 케이- 실제 상태 벡터와 측정 벡터를 연결하는 측정 행렬, V 케이- 수학적 기대치가 0이고 공분산 행렬이 있는 측정의 백색 가우스 잡음 아르 자형 케이 :

각 클록 주기에서 임의 프로세스의 초기 상태 및 벡터( 엑스 0 , 1 , …, 케이 , V 1 , …, V 케이) 독립된 것으로 간주됩니다.

많은 실제 동적 시스템은 이 모델로 정확하게 설명할 수 없습니다. 실제로, 모델에서 설명되지 않은 역학은 특히 입력에서 알 수 없는 확률적 신호로 작업할 때 필터의 성능을 심각하게 손상시킬 수 있습니다. 게다가, 모델에서 설명되지 않은 역학은 필터를 불안정하게 만들 수 있습니다. 반면에 신호로서의 독립적인 백색 잡음은 알고리즘 발산으로 이어지지 않습니다. 모델에서 설명되지 않은 역학에서 측정 노이즈를 분리하는 문제는 어렵습니다. 이 문제는 강력한 제어 시스템 이론을 사용하여 해결됩니다.

칼만 필터

칼만 필터는 일종의 재귀 필터입니다. 현재 작업 주기에 대한 시스템 상태의 추정치를 계산하려면 상태 추정치가 필요합니다(시스템 상태 추정치 및 이 상태 결정 시 오류 추정치의 형태로). 작업의 이전 주기 및 현재 주기의 측정. 이 속성은 현재 클록 주기의 측정 및/또는 추정 기록에 대한 지식이 필요한 패킷 필터와 구별됩니다. 다음에서 표기법은 현재의 실제 벡터의 추정치를 의미합니다. N작업 시작 순간부터 순간까지 측정을 고려 포함한.

필터 상태는 두 개의 변수로 설정됩니다.

칼만 필터 반복은 외삽과 수정의 두 단계로 나뉩니다. 외삽하는 동안 필터는 시스템 상태에 대한 예비 평가를 받습니다(러시아어 문헌에서는 종종 "외삽"을 의미하는 것으로 표시됨). 케이이전 단계의 상태에 대한 최종 평가에 따라 현재 단계에 대해 수신된 주기의 수입니다(또는 현재 단계의 최종 평가에 따라 다음 주기에 대한 예비 평가, 해석). 이 예비 추정은 해당 단계의 관찰이 그것을 얻는 데 사용되지 않기 때문에 선험적 상태 추정이라고도 합니다. 수정 단계에서는 추정치를 수정하기 위해 해당 전류 측정으로 선험적 외삽이 보완됩니다. 조정된 추정치는 사후 상태 추정 또는 간단히 상태 벡터 추정이라고도 합니다. 일반적으로 다음 두 단계가 번갈아 수행됩니다. 다음 관찰까지 수정 결과에 따라 외삽이 이루어지고 다음 단계에서 사용 가능한 관찰과 함께 수정이 이루어집니다. 등은 건너뛰고 미조정 추정치(선험적 외삽). 마찬가지로, 특정 시간 단계에서만 독립적인 측정을 사용할 수 있는 경우 수정이 여전히 가능합니다(일반적으로 다른 관찰 매트릭스 사용 시간 케이 ).

외삽 단계

수정 단계

받은 단계의 편차 케이수행된 외삽에서 예상되는 관찰의 관찰:
편차 벡터(오차 벡터)에 대한 공분산 행렬:
상태 벡터의 사용 가능한 외삽의 공분산 행렬과 얻은 측정값(편차 벡터의 공분산 행렬 사용)을 기반으로 형성된 칼만 최적 이득 행렬:
상태 벡터의 이전에 얻은 외삽 수정 - 시스템의 상태 벡터 추정값 얻기:
시스템 상태 벡터 추정의 공분산 행렬 계산:

시스템 상태 벡터 추정치의 공분산 행렬에 대한 표현식은 계수의 감소된 최적 벡터가 사용되는 경우에만 유효합니다. 일반적으로 이 표현은 더 복잡한 형태를 가지고 있습니다.

불변

모델이 절대적으로 정확하고 초기 조건이 절대적으로 정확하게 지정된 경우 필터 작업을 여러 번 반복한 후에 다음 값이 저장됩니다. 이는 불변입니다.

시스템 상태 벡터의 추정 및 외삽에 대한 수학적 기대치, 오류 행렬은 0 벡터입니다.

수학적 기대치는 어디에 있습니까?

외삽 공분산의 계산된 행렬, 시스템 상태 추정치 및 오류 벡터는 공분산의 실제 행렬과 일치합니다.

필터 구축의 예

마찰이 없는 상태에서 무한히 긴 레일 위에 서 있는 트롤리를 상상해 보십시오. 처음에는 위치 0에 있지만 임의 요인의 영향으로 임의 가속이 작용합니다. ∆마다 트롤리의 위치를 ​​측정합니다. 초이지만 측정값이 정확하지 않습니다. 우리는 트롤리의 위치와 속도에 대한 추정치를 얻고 싶습니다. 이 문제에 칼만 필터를 적용하고 필요한 모든 행렬을 정의합시다.

이 문제에서 행렬 에프 , 시간 , 아르 자형그리고 시간에 의존하지 않고 인덱스를 생략합니다. 또한, 우리는 광산 수레를 제어하지 않으므로 제어 행렬은 다음과 같습니다. 없어진.

트롤리의 좌표와 속도는 선형 상태 공간에서 벡터로 설명됩니다.

여기서 은 속도(시간에 대한 좌표의 1차 도함수)입니다.

우리는 ( 케이-1) 일 및 케이-th 틱은 트롤리가 일정한 가속도로 움직입니다. 케이수학적 기대치와 표준 편차가 0인 일반 법칙에 따라 분포 σ... 뉴턴 역학에 따르면 다음과 같이 쓸 수 있습니다.

.

임의 작업의 공분산 행렬

(σ 스칼라)입니다.

각 작업 주기에서 트롤리의 위치가 측정됩니다. 측정 오류가 있다고 가정합니다. v k수학적 기대치와 표준 편차가 0인 정규 분포를 가집니다. σ z... 그 다음에

관측 잡음의 공분산 행렬은 다음과 같은 형식을 갖습니다.

.

트롤리의 초기 위치를 정확히 알고 있습니다.

, .

트롤리의 위치와 속도를 대략적으로만 알면 분산 행렬을 충분히 큰 수로 초기화할 수 있습니다. 숫자가 좌표 측정의 분산을 초과하도록

, .

이 경우 첫 번째 클록 주기에서 필터는 사용 가능한 선험 정보보다 더 큰 가중치를 가진 측정 결과를 사용합니다.

공식의 유도

상태 벡터 추정 공분산 행렬

공분산 행렬의 정의에 의해 케이|케이

상태 벡터를 평가하는 표현식으로 대체

오류 벡터에 대한 표현식을 기록하십시오.

및 측정 벡터

측정 오차의 벡터를 빼내다 V 케이

측정 오차의 벡터 이후 V 케이다른 인수와 상관 관계가 없으면 표현식을 얻습니다.

벡터 공분산의 속성에 따라 이 식은 다음 형식으로 변환됩니다.

상태 벡터의 외삽 공분산 행렬에 대한 표현식을 다음과 같이 대체합니다. 케이|케이−1 및 관측 잡음의 공분산 행렬의 결정 아르 자형 케이, 우리는 얻는다

결과 식은 임의의 계수 행렬에 대해 유효하지만 Kalman에 따라 최적인 계수 행렬이 그대로 작용하면 공분산 행렬에 대한 이 식이 단순화될 수 있습니다.

최적 이득 매트릭스

칼만 필터는 상태 벡터 추정값의 예상 오차 제곱의 합을 최소화합니다.

상태 벡터 추정 오차 벡터

작업은 주어진 벡터 구성 요소의 제곱에 대한 수학적 기대치의 합을 최소화하는 것입니다.

,

이는 상태 벡터 추정치의 공분산 행렬의 자취를 최소화하는 것과 같습니다. 케이|케이... 상태 벡터 추정값의 공분산 행렬에 대한 표현식으로 기존 표현식을 대체하고 이를 완전 제곱으로 보완합니다.

마지막 항은 일부 확률 변수의 공분산 행렬이므로 그 추적은 음수가 아닙니다. 마지막 항이 0이 되면 추적의 최소값에 도달합니다.

이 행렬은 원하는 행렬이며 칼만 필터에서 계수 행렬로 사용될 때 상태 벡터 추정값의 오차 평균 제곱의 합을 최소화한다고 주장합니다.

최적 계수 행렬을 사용한 상태 벡터 추정의 공분산 행렬

상태 벡터 추정값의 공분산 행렬에 대한 표현식 케이|케이최적의 계수 행렬을 사용할 때 다음과 같은 형식을 취합니다.

이 공식은 계산적으로 더 간단하므로 실제로 거의 항상 사용되지만 최적의 계수 행렬을 사용할 때만 정확합니다. 낮은 계산 정확도로 인해 계산 안정성에 문제가 발생하거나 최적 이외의 계수 행렬을 사용하는 경우 상태 벡터 추정의 공분산 행렬에 대한 일반 공식을 사용해야 합니다.



관련 기사: