이 게시글은 장형기 님의 SLAM 기술면접 질문 100선에 대한 답을 제 나름대로 한 것입니다.
SLAM의 연산량을 줄이는 방법은 크게 보면 2가지라고 생각합니다.
입력 데이터를 줄이는 방법과 알고리즘에서 연상량을 줄이는 방법입니다.
그럼 차례차례 보겠습니다.
DownSampling 기법
이미지 해상도 다운샘플링
카메라 입력 영상을 원본보다 낮은 해상도로 스케일링해 사용합니다.
ex) 1980x1080 이미지를 640x360으로 줄여 처리하면, 특징 추출 매칭 시 연산량이 크게 감소함
단점: 해상도가 너무 낮으면 정밀도와 특징 식별 능력이 떨어질 수 있으므로, 업무에 맞는 적절한 수준을 선택해야 합니다.
포인트 클라우드 다운 샘플링
LiDAR나 RGB-D 센서에서 획득한 포인트 클라우드를 Voxel grid나 랜덤 샘플링을 통해 희소화합니다.
ex) 1cm 격자의 Voxel 그리드로 다운샘플링하면, 인접 포인트들을 하나로 통합해 전체 점 개수를 줄이므로, Registration이나 맵핑 알고리즘의 연산량을 감소시킵니다.
Keyframe 기법
keyframe 선정 및 유지: 모든 프레임을 처리하지 않고, 위치 자세 변화가 충분히 클 때만 keyframe으로 설정합니다.
이것은 모든 frame을 계산하지 않고 중요한 frame을 선별하면서 연산량을 줄일 수 있습니다.
Submap 생성
전체 맵을 여러 구역으로 쪼개서 각각 관리합니다. 이를 통해 메모리 효율성을 높이고 전체를 계산할 때 큰 덩어리를 통합하기 때문에 더욱 쉽게 계산할 수 있습니다.
뭐 생각나는건 이 정도입니다. 보통 down sampling처리, keyframe 방식과 submap 생성하는 것을 주로 처리합니다. 요즘 implicit neural field로 mapping을 하면서 submap을 하기 힘들어지기도 하는데 key frame과 down sampling은 거의 필수적으로 사용하는 것 같습니다.