Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

kalman

칼만 필터 설계, 칼만 추정기

구문

[kest,L,P] = kalman(sys,Qn,Rn,Nn)
[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)
[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type)

설명

kalman 은 플랜트 및 공정의 상태공간 모델과 측정 잡음 공분산 데이터가 주어졌을 때 칼만 필터 또는 칼만 상태 추정기를 설계합니다. 칼만 추정기는 다음과 같은 연속 또는 이산 추정 문제에 대한 최적해를 제공합니다.

연속시간 추정

연속 플랜트가 다음과 같이 주어졌을 때

x˙=Ax+Bu+Gwy=Cx+Du+Hw+v

알려진 입력 u, 백색 공정 잡음 w, 백색 측정 잡음 v가 다음을 충족한다고 가정합니다.

E(w)=E(v)=0,E(wwT)=Q,E(vvT)=R,E(wvT)=N

이때 다음과 같은 정상 상태 오차 공분산을 최소화하는 상태 추정값 x^(t)를 생성합니다.
    P=limtE({xx^}{xx^}T)

최적해는 다음과 같은 방정식을 갖는 칼만 필터입니다.

dx^dt=Ax^+Bu+L(yCx^Du)[y^x^]=[CI]x^+[D0]u

필터 이득 L은 다음과 같은 대수 리카티 방정식을 풀면 결정됩니다.

L=(PCT+N¯)R¯1

여기서

R¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

이고 P는 해당 대수 리카티 방정식을 풉니다.

추정기는 알려진 입력 u와 측정값 y를 사용하여 출력 및 상태의 추정값 y^x^를 생성합니다. y^는 다음과 같은 실제 플랜트 출력을 추정한다는 것에 유의하십시오.

y=Cx+Du+Hw+v

이산시간 추정

이산 플랜트를 다음과 같이 지정합니다.

x[n+1]=Ax[n]+Bu[n]+Gw[n]y[n]=Cx[n]+Du[n]+Hw[n]+v[n]

잡음 공분산 데이터는 다음과 같습니다.

E(w[n]w[n]T)=Q,E(v[n]v[n]T)=R,E(w[n]v[n]T)=N

추정기는 다음과 같은 상태 방정식을 갖습니다.

x^[n+1|n]=Ax^[n|n1]+Bu[n]+L(y[n]Cx^[n|n1]Du[n]).

이득 행렬 L은 다음과 같은 이산 리카티 방정식이 풀면 도출됩니다.

L=(APCT+N¯)(CPCT+R¯)1

여기서 각각은 다음과 같습니다.

R¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

이산시간 칼만 추정기에는 두 가지 변형이 있습니다.

  • 현재 추정기는 y[n]까지의 모든 사용 가능한 측정값을 사용하여 출력 추정값 y^[n|n]과 상태 추정값 x^[n|n]을 생성합니다. 이 추정기는 다음과 같은 출력 방정식을 갖습니다.

    [y^[n|n]x^[n|n]]=[(IMy)CIMxC]x^[n|n1]+[(IMy)DMyMxDMx][u[n]y[n]].

    여기서 혁신 이득(innovation gain) Mx와 My는 다음과 같이 정의됩니다.

    Mx=PCT(CPCT+R¯)1,My=(CPCT+HQHT+HN)(CPCT+R¯)1.

    Mx는 새로운 측정값 y[n]을 사용하여 예측 x^[n|n1]을 업데이트합니다.

    x^[n|n]=x^[n|n1]+Mx(y[n]Cx^[n|n1]Du[n])

    H = 0인 경우 My=CMx이고 y^[n|n]=Cx^[n|n]+Du[n]입니다.

  • 지연 추정기는 측정값을 yv[n–1]까지만 사용하여 출력 추정값 y^[n|n1]과 상태 추정값 x^[n|n1]을 생성합니다. 이 추정기는 제어 루프 내부에서 구현하기가 더 쉬우며 다음과 같은 출력 방정식을 갖습니다.

    [y^[n|n1]x^[n|n1]]=[CI]x^[n|n1]+[D000][u[n]y[n]]

[kest,L,P] = kalman(sys,Qn,Rn,Nn)은 플랜트 모델 sys와 잡음 공분산 데이터 Qn, Rn, Nn(설명에서 설명하는 행렬 Q, R, N)이 주어졌을 때 칼만 추정기의 상태공간 모델 kest를 만듭니다. sys는 행렬 A,[BG],C,[DH]를 갖는 상태공간 모델이어야 합니다.

결과로 생성되는 추정기 kest는 입력 [u;y]와 출력 [y^;x^](또는 그에 대응하는 이산시간 값)을 갖습니다. N = 0인 경우 마지막 입력 인수 Nn을 생략할 수 있습니다.

함수 kalman은 연속 문제와 이산 문제를 모두 처리하며 sys가 연속인 경우 연속 추정기를 생성하고 그렇지 않은 경우 이산 추정기를 생성합니다. 연속시간에서, kalman은 칼만 이득 L과 정상 상태 오차 공분산 행렬 P도 반환합니다. P는 해당 리카티 방정식을 풉니다.

[kest,L,P] = kalman(sys,Qn,Rn,Nn,sensors,known)은 다음과 같은 경우에 보다 일반적인 상황을 처리합니다.

  • sys의 출력 중 일부가 측정되지 않은 경우.

  • 외란 입력 w가 sys의 마지막 입력이 아닌 경우.

인덱스 벡터 sensorsknownsys에서 어떤 출력 y를 측정할 예정이고 어떤 입력 u가 알려졌는지를(결정적인지를) 지정합니다. sys의 다른 모든 입력은 확률적이라고 가정합니다.

[kest,L,P,M,Z] = kalman(sys,Qn,Rn,...,type)은 이산시간 플랜트 sys에 대한 추정기 유형을 지정합니다. type 인수는 'current'(디폴트 값) 또는 'delayed'입니다. 이산시간 플랜트의 경우, kalman은 추정기와 혁신 이득 L 및 M, 그리고 다음과 같은 정상 상태 오차 공분산을 반환합니다.

P=limnE(e[n|n1]e[n|n1]T),e[n|n1]=x[n]x[n|n1]Z=limnE(e[n|n]e[n|n]T),e[n|n]=x[n]x[n|n]

예제

kalman 함수를 사용하는 예제는 LQG Design for the x-Axis칼만 필터링을 참조하십시오.

제한 사항

플랜트 및 잡음 데이터는 다음을 충족해야 합니다.

  • (C,A)가 검출 가능함

  • R¯>0Q¯N¯R¯1N¯T0

  • (AN¯R¯1C,Q¯N¯R¯1N¯T)의 허수축에(또는 이산시간에서는 단위원에) 제어 불가능한 모드가 없음. 여기서 기호 표기는 다음과 같습니다.

    Q¯=GQGTR¯=R+HN+NTHT+HQHTN¯=G(QHT+N)

참고 문헌

[1] Franklin, G.F., J.D. Powell, and M.L. Workman, Digital Control of Dynamic Systems, Second Edition, Addison-Wesley, 1990.

[2] Lewis, F., Optimal Estimation, John Wiley & Sons, Inc, 1986.

[3] Deshpande, A.S., "Bridging a Gap in Applied Kalman Filtering: Estimating Outputs When Measurements Are Correlated with the Process Noise." IEEE Control Systems Magazine, Vol. 37, Number 3, 2017, pp. 87–93.

R2006a 이전에 개발됨