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)를 사용하여 새로운 댐핑 계수를 계산하고, 이를 통해 잔차 변환을 조정