.h
파일은 ICP (Iterative Closest Point) 알고리즘을 통해 포인트 클라우드와 TSDF 맵을 정렬(또는 맞추는)하는 클래스를 정의ICP::Config
구조체refine_roll_pitch
: 롤과 피치를 정밀하게 조정할지 여부.mini_batch_size
: 각 정렬 단계에서 사용할 점의 수.min_match_ratio
: 일치하는 점의 최소 비율.subsample_keep_ratio
: ICP 매칭에 사용할 점의 비율.inital_translation_weighting
: 초기 추정에서의 변환에 대한 가중치.inital_rotation_weighting
: 초기 추정에서의 회전에 대한 가중치.num_threads
: 사용할 스레드의 수.ICP
클래스역할: 포인트 클라우드와 TSDF 맵을 정렬하여 변환을 계산
주요 메소드:
ICP(const Config& config)
:
size_t runICP
:
runThread
:
runICP
함수에서 호출되어 각 스레드에서 변환을 계산matchPoints
:
TSDF 맵에서 일치하는 점을 찾고,
포인트 클라우드와 TSDF 맵 간의 매칭을 생성
stepICP
:
getRotationFromMatchedPoints
:
getTransformFromMatchedPoints
:
addNormalizedPointInfo
:
ICP::getTransformFromMatchedPoints
함수이 함수는 두 점군 간의 변환을 계산합니다. 두 점군의 매칭된 점들(src와 tgt)이 주어지면, 이 점들 사이의 회전(R)과 이동(t)을 계산하여 최적의 변환(Transformation)을 찾습니다.
수학적 배경:
ICP::addNormalizedPointInfo
함수정보 벡터(info_vector)
를 누적하는 역할변환행렬(회전과 이동)을 계산하는 데 필요한 가중치를 제공
정보 벡터(info_vector)
를 수집ICP::matchPoints
함수ICP::stepICP
함수이 함수는 ICP 알고리즘의 한 단계를 수행
이전 단계에서 계산된 변환을 바탕으로 점군을 TSDF 맵에 맞추고, 그 결과를 기반으로 새로운 변환을 계산
수학적 배경:
ICP::runThread
함수ICP::runICP
함수