GradICPOdometryProvider
는 두 점 클라우드(Pointclouds) 사이의 상대적인 변환(강체 변환(회전 및 이동)
)을 계산하는 방법으로, GradICP 알고리즘:
Levenberg-Marquardt(gradLM) 최적화:
초기화 메서드 (__init__
):
numiters
: 최적화 반복 횟수damp
: 초기 댐핑 계수dist_thresh
: 거리 임계값lambda_max
, B
, B2
, nu
: gradLM 알고리즘의 매개변수변환 계산 메서드 (provide
):
maps_pointclouds
: 기준이 되는 점 클라우드frames_pointclouds
: 정렬해야 하는 점 클라우드src_pc
)를 타겟 점 클라우드(tgt_pc
)와 맞추는(정렬하는) 것입니다. point_to_plane_gradICP
함수는 점 대 평면(Point-to-Plane) 오류 메트릭을 사용하여 두 점 클라우드 사이의 강체 변환을 계산하는 알고리즘gradLM
방법을 사용하여 반복적으로 최적의 변환 행렬을 찾음 gradLM
방법은 Levenberg-Marquardt(LM) 알고리즘의 개선된 버전으로, 보다 안정적이고 빠른 수렴을 위해 설계잔차는 현재 변환된 소스 점 클라우드와 타겟 점 클라우드 사이의 차이를 나타내요. 잔차가 작을수록 두 점 클라우드가 잘 맞춰진다는 의미에요.
초기화:
src_pc
는 이동시켜야 하는 점 클라우드이고, tgt_pc
는 기준이 되는 점 클라우드에요.tgt_normals
는 타겟 점 클라우드의 각 점에서 표면이 어떻게 생겼는지(법선 벡터)를 나타내요.initial_transform
은 처음에 적용할 변환 행렬이에요. 주어지지 않으면 기본값인 단위 행렬(아무 변환도 없는 상태)로 시작해요.반복(iteration) 과정:
numiters
)만큼 반복해서 최적의 변환을 찾아요.transform
)을 사용하여 소스 점 클라우드를 변환해요.가우스-뉴턴 방법을 사용한 선형 시스템 형성 및 잔차 계산:
gauss_newton_solve
함수는 A
)과 잔차 벡터(b
), 그리고 chamfer_indices
)를 반환선형 시스템 해결 및 변환 계산:
residual_transform
)을 계산그라디언트 업데이트:
gradLM
방법에 따라 그라디언트를 사용하여 댐핑 계수(damp
)를 업데이트errdiff
)를 사용하여 새로운 댐핑 계수를 계산하고, 이를 통해 잔차 변환을 조정