루프 클로저로 인한 누적 오류를 수정
하고,spin
함수)state_->backend_queue
에서 입력 데이터를 가져옴mesh(1), deformation graph, agent(2)
가 포함되어 있는 것으로 파악updateFactorGraph
를 호출하여 로봇의 경로(2)
, 루프 클로저
등의 정보를 디포메이션 그래프
에 반영updateFromLcdQueue
를 통해 새로운 루프 클로저를 확인하고 처리copyMeshDelta
를 호출하여 메쉬의 변경 사항을 반영optimize
를 호출하여 디포메이션 그래프를 최적화하고, DSG의 각 레이어를 업데이트updateFactorGraph
함수)mesh, 로봇의 경로, 루프 클로저 정보
를 factor graph에 추가로봇의 연속된 포즈 간의 관계를 나타내는
오도메트리 팩터(odometry factors)로봇 포즈와 랜드마크 위치 간의 관계
를 나타내는 카메라 관측 팩터(visual factors)팩터(제약 조건)와 노드
를 디포메이션 그래프에 추가하여 최적화에 필요한 정보를 갱신합니다.processIncrementalMeshGraph
와 processIncrementalPoseGraph
를 호출하여 mesh/pose에 대한 새로운 노드와 엣지
를 디포메이션 그래프에 추가새로운 루프 클로저가 있는지 확인
하고, 있다면 addLoopClosure
를 통해 디포메이션 그래프에 추가디포메이션 그래프
와 DSG
에 이를 반영하여 누적된 오류를 수정
state_->backend_lcd_queue
에서 루프 클로저 결과를 가져옴addLoopClosure
를 호출하여 루프 클로저를 디포메이션 그래프에 엣지로 추가copyMeshDelta
를 통해 프론트엔드에서 전달된 메쉬 업데이트를 백엔드의 DSG 메쉬에 반영updateDsgMesh
를 호출하여 디포메이션 그래프의 최적화 결과를 메쉬에 적용optimize
함수)addPlacesToDeformationGraph
를 통해 장소 노드
들을 디포메이션 그래프
에 추가optimize
함수를 호출하여 최적화를 수행updateDsgMesh
를 호출하여 메쉬를 변형callUpdateFunctions
를 통해 DSG의 각 레이어를 업데이트하는 함수들을 호출합니다.callUpdateFunctions
함수)UpdateInfo
객체를 생성layer_functors_
에 등록된 각 레이어의 업데이트 함수를 호출합니다.장소 노드들의 위치를 업데이트
하고, 인접한 노드들을 병합하여 그래프의 간소화를 수행
한 줄 요약
쉽게 설명하자면:
어떻게 연결하나?
엣지 가중치란?
왜 필요할까?