희소 프레임(Sparse Keyframe)이란?
- 희소 프레임(Sparse Keyframe)은 로봇의 경로나 그래프에서 모든 포즈 정보가 아닌, 중요한 위치나 상태만을 선택적으로 저장하는 개념
- 이는 경로 최적화와 메쉬 연결을 효율적으로 수행하는 데 필수적이며, 메모리 절감과 계산 성능 향상을 동시에 달성
희소 프레임의 주요 특징
- 필요한 정보만 저장:
- 모든 시간대의 포즈를 저장하는 대신, 주로 중요한 노드(포인트)나 경로의 변화가 있는 지점의 포즈만 저장합니다. 예를 들어 로봇의 방향이나 위치가 크게 변할 때만 기록할 수 있습니다.
-
간격 조절(Sparsification):
- 인접한 두 포즈가 유사한 경우, 나중 포즈는 저장하지 않고 이전 포즈와 합쳐 희소화(sparsify)합니다. 이렇게 하면 노드 간격을 조정하여 더 효율적인 그래프를 만듭니다.
-
루프 클로저와 메쉬 최적화:
- 루프 클로저(Loop Closure)와 같은 이벤트가 발생했을 때, 희소 프레임은 중요한 지점을 기준으로 경로를 다시 최적화합니다. 이때 메쉬와 연결된 포인트들이 희소 프레임에 포함됩니다.
코드에서 희소 프레임의 역할
SparseKeyframe init_sparse_frame;
init_sparse_frame.initialize(key_symb, init_node.robot_id, init_node.key);
sparse_frames_.insert({key_symb, init_sparse_frame});
위 코드에서 SparseKeyframe
은 로봇의 특정 위치와 관련된 정보를 저장하고 초기화합니다. 이 프레임은 아래와 같은 정보들을 포함합니다:
- 포즈 정보: 해당 위치에서 로봇의 자세와 위치(
Pose3
)를 저장합니다.
- 노드 ID 및 로봇 ID: 해당 노드와 로봇의 식별 정보를 포함합니다.
- 시간 정보: 해당 노드가 기록된 타임스탬프를 관리합니다.
- 연결 정보: 이 프레임이 다른 노드나 메쉬와 어떻게 연결되어 있는지를 나타냅니다.