본문 바로가기

카테고리 없음

2차원 공분산 행렬(covariance matrix)을 타원으로 표시하기

로봇의 위치(x, y)에 대한 공분산을 시각적으로 표시하기 위해 공분산 행렬을 타원으로 표시할 경우가 있습니다. 이 때 사용가능한 두 가지 방법에 대하여 정리합니다.

 

첫번째는 회전행렬로 좌표변환을 하여 타원의 장축과 단축, 회전각을 구하는 방법입니다.

(http://www.geom.unimelb.edu.au/nicole/surveynetworks/02a/notes09_01.html 참조

 

두번째는 공분산 행렬의 고유치 분해로부터 장축과 단축을 구하고 회전행렬를 구하는 방법입니다.

(Paul Michael Newman의 "C4B | Mobile Robotics"에서 Topic 10.1 Drawing Covariance Ellipses 참조)

 

자세한 내용은 다음 문서를 참조하시기 바랍니다.

DrawingCovarianceEllipses.pdf
0.17MB

 

아래는 구현한 소스코드 입니다.

DrawCovarianceEllipses.zip
0.12MB

 

공분산 행렬 C=[1500, 200; 200, 400]에 대하여 상기 두 방법으로 타원을 그려보겠습니다.

 

왼쪽 그림은 첫번째 방법으로 그린 타원이고, 오른쪽 그림은 두번째 방법으로 그린 타원입니다.서로 모양이 동일함을 볼 수 있습니다.

 

* 2011.8.29 수정내용

 - 김인수님의 지적에 따라 pdf 문서의 오류를 수정합니다.

 - 소스코드의 수식들을 pdf 문서의 전개에 따라 수정합니다.