본문 바로가기

카테고리 없음

ICP(Iterative Closest Point)와 레이저 센서로 2D 지도구축

ICP(Iterative Closest Point)는 컴퓨터 그래픽스에서 주로 사용되어왔습니다. 어떠한 모델에 대한 측정 데이터가 있을 때, 이 측정 데이터를 모델에 매칭하기 위해 스케일 변환, 회전, 이동을 계산하는 방법에 관한 것입니다.

 

로봇에서는 레이저 스캐너로 측정한 데이터로 장애물 지도를 구축할 때, 이미 구축된 지도(모델)와 새로 측정한 데이터를 최소 오차로 매칭하기 위해 ICP를 수행합니다. ICP 수행 결과로 계산한 회전, 이동을 새로 측정한 데이터에 반영한 후 구축된 지도에 업데이트 하게되면 지도가 변형되는 현상을 많이 줄일 수 있을 것입니다.

 

ICP 알고리즘에 대한 자세한 내용은 다음 문서를 참고하십시오. 여기서는 ICP 알고리즘으로 모델과 데이터 간의 에러를 최소화 하기위한 로봇의 델타 x, y, theta를 계산하여 로봇의 위치에 반영합니다.

ICP.pdf
0.09MB

 

다음은 ICP가 구현된 VC++ 2008 프로젝트 파일입니다.

icp_test.zip
0.15MB

 

상기 프로젝트를 컴파일 하여 실행하기 위해서는 이동로봇을 시뮬레이션 하는 시뮬레이터를 먼저 실행하여야 합니다. 이동로봇 시뮬레이터는 다음 링크를 참조하시기 바랍니다.

 

xxx  - Mobile Robot Simulation 프로그램

 

아래 동영상을 보시면 오른쪽과 왼쪽 윈도우가 나눠져 있는데, 왼쪽 윈도우가 Mobile Robot Simulation 프로그램이고 오른쪽 윈도우가 ICP_test 프로그램입니다. 왼쪽 시뮬레이터에서 마우스로 로봇을 움직이거나 회전하면 오른쪽 프로그램에서 ICP로 이동과 회전을 계산합니다. 여기서는 지도를 계속 업데이트 하지는 않고, ICP_test 프로그램이 시작될 때 처음 한 번 읽어온 레이저 스캐너 데이터를 모델로 보고 이후 들어오는 데이터를 모델과 매칭시킵니다.