EKF 시각화 및 디버깅


22

현재 EKF (Extended Kalman Filter)를 디버깅하고 조정하고 있습니다. 작업은 랜드 마크가 AR 마커 인 클래식 모바일 로봇 포즈 추적입니다.

때로는 일부 측정이 추정치에 어떤 영향을 미치는지 놀랍습니다. 관련된 숫자와 행렬을보고 계산할 때 업데이트 단계가 어떻게 실행되었는지, 정확히 무엇이, 왜 일어 났는지 알아낼 수 있지만 매우 지루합니다.

EKF 업데이트 단계에서 어떤 일이 일어나고 있는지 더 잘 느끼기 위해 누군가 기술, 트릭 또는 영리한 시각화를 사용하고 있는지 궁금합니다.

업데이트 # 1 (더 구체적으로 생각하고 내가 생각한 것을 대략적으로 보여줍니다)

내가 찾고있는 것은 측정의 각 구성 요소가 상태의 각 구성 요소에 미치는 영향을 느끼는 방식으로 하나의 업데이트 단계를 시각화하는 방법입니다.

저의 첫 번째 아이디어는 측정 값을 플롯하는 것이며 K 행렬에서 가져온 일부 벡터와 함께 예측입니다. K의 벡터는 혁신 벡터 (측정-측정 예측, 플롯되지 않음)가 상태의 각 구성 요소에 어떤 영향을 미치는지 나타냅니다.

현재 상태가 2D 포즈 (x, y, angle)이고 측정도 2D 포즈 인 EKF로 작업하고 있습니다.

업데이트 단계 도표

첨부 된 이미지 (전체 페이지로 보려면 새 페이지 / 탭에서 열기)에서 (스케일링 된) 벡터 K (1,1 : 2) (3x3 매트릭스에서 서브 매트릭스를 가져 오는 MATLAB 구문)는 첫 번째 방법을 이해해야합니다 EKF 상태의 구성 요소는 현재 혁신 벡터 K (2,1 : 2)에 따라 EKF의 두 번째 구성 요소가 어떻게 변경되는지 등으로 변경됩니다.이 예에서 혁신 벡터는 상대적으로 큰 x 구성 요소를 가지며 벡터 K (2,1 : 2)-상태의 두 번째 구성 요소 (y 좌표)가 가장 많이 변경됩니다.

이 그림에서 한 가지 문제는 혁신 벡터의 세 번째 성분 (각도)이 상태에 어떤 영향을 미치는지에 대한 느낌을주지 않는다는 것입니다. 국가의 첫 번째 구성 요소는 K (1 : 1 : 2)가 나타내는 것과 달리 약간 증가합니다. 혁신의 세 번째 구성 요소는이를 유발하지만 현재는 이것을 시각화 할 수 없습니다.

첫 번째 개선은 혁신의 세 번째 요소가 국가에 미치는 영향을 시각화하는 것입니다. 그런 다음 공분산 데이터를 추가하여 K 행렬이 어떻게 생성되는지 느낌을 얻는 것이 좋습니다.

업데이트 # 2 이제 그림의 상태 공간에 각 측정 구성 요소가 위치를 변경하는 방법을 보여주는 벡터가 있습니다. 이 그림에서 측정의 세 번째 구성 요소가 상태를 가장 많이 변경 함을 알 수 있습니다.

각 측정 구성 요소에 해당하는 벡터를 상태 공간에 추가했습니다.


Gazebo Data에서 EKF를 시뮬레이션 할 수 있습니다.
Naresh

@Ian 업데이트에 감사드립니다. 죄송합니다. * 8 ')
Mark Booth

답변:


4

측정 효과를 시각화하는 매우 유익한 방법은 (각각의) 측정 전후에 로봇 상태 (공분산 타원 포함)를 플롯하는 것입니다. 그런 다음 측정 의 개별 구성 요소 (베어링, AR 마커의 범위)를 가져 와서 개별적으로 적용하여 느낌을 얻으십시오.

이것을하기 위해:

에이,θ[0,2π]

아르 자형(θ)=에이코사인2θ+에이2θ

사전 가설, 측정 된 상태 및 사후 가설의 공분산을 추적하는 것은 일반적으로 EKF의 방정식이 올바르게 적용되는지 찾기에 충분합니다.

행운을 빕니다. 질문을 너무 자주 업데이트하지 마십시오. 대신 새로운 질문으로 돌아 오십시오.


0

종종 수행되는 것은 시간에 따른 상태 변수와 3 시그마 간격을 플로팅하는 것입니다. 이 간격이 줄어드는 지점은 관련 측정 소스에 주석을 달 수있는 업데이트입니다.

확인해야 할 구현 오류 (잘못된 방정식뿐만 아니라 수치 적으로 불안정한 방정식도 포함) 외에도 업데이트의 영향은 "예상 된"측정 값과 "측정 된"측정 값과 각각의 불확실성 간의 차이에 직접 영향을받습니다. 따라서 첫 번째 줄거리의 시간 진행 측면에서이 균형을 시각화하는 방법을 찾는 데 관심이있을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.