SLAM에서 비선형 최적화는 왜 하는지 알아보겠습니다.
개인적 의견이니 참고하고 봐주시기 바랍니다.
SLAM 문제가 기본적으로 비선형적이기 때문에 비선형 최적화를 한다고 생각합니다.
SLAM에서는 로봇이나 장비가 이동하면서 주변 환경의 지도를 동시에 생성하고 자신의 위치를 추정합니다. LiDAR 또는 카메라로 수집한 관측 값과 로봇의 이동에 대한 추정값을 바탕으로 환경과 위치를 계산하는데 이러한 계산이 비선형 계산이기 때문에 비선형 최적화를 진행합니다.
비선형 최적화를 사용하는 부분은 다음과 같습니다.
LiDAR는 각도와 거리 정보를 얻어 그것을 좌표로 바꿔줘야합니다. 이 과정에서 비선형적 계산이 들어가기 때문에 기본적으로 비선형성이 생기는 것입니다.
LiDAR의 포즈 추정은 자신의 위치에서 다음에 온 위치까지의 변환 행렬을 계산하여 구하는데 이 변환 관계가 선형이 아니기 때문에 비선형 최적화 방법을 사용합니다.
보통 ICP나 G-ICP 같은 registration 알고리즘을 사용합니다.
그래프 최적화
Loop closing 기법을 사용하여 그래프 최적화를 할 때도 비선형 최적화 기법을 사용합니다.
지금까지 누적된 transformation matrix를 최적화하는 것이기 때문에 비선형적일 수 밖에 없습니다. 여기에는 GTSAM을 주로 사용하는데 가우스 뉴턴 방식, 도그레그 방식, 리벤버그 마르크트 최적화 기법등 최적화 기법을 제공하는 라이브러리입니다.
센서 노이즈와 비선형 보정
LiDAR에 들어오는 노이즈 특성을 모델링하여 보정하지 않으면 SLAM의 결과에 큰 오차가 발생할 수도 있습니다. 이를 보정할 때도 비선형 보정이 들어가게 됩니다.
3d point와 camera pose의 관계
visual slam에서는 카메라가 움직이면서 여러 시점에서 3D 포인트들을 관찰하고, 이를 바탕으로 포인트들의 위치와 카메라의 위치를 동시에 추정합니다. 여러 시점에서 같은 3d 포인트를 관측하여 최적의 위치를 계산하는 방식은 비선형 관계로 모델링되고 이것을 주로 가우스-뉴턴 방식이나 리벤버그 마크트 알고리즘 같은 비선형 최적화 기법으로 해결합니다.
특징 추출및 매칭의 비선형 관계
영상 프레임 간의 특징점을 추출하고 매칭하는 과정에서 영상 내 특징점의 위치와 카메라의 움직임 간에 비선형 관계가 존재합니다.
더 많은 것들이 있을 수도 있습니다. 많은 것을 고려하고자 하면 할수록 비선형성이 증가될 것입니다.
저도 딥러닝으로 SLAM의 정확도를 높이고자 시도했을 때 이러한 비선형 최적화 과정들을 어떻게 해결해야 할지 고민이 많았었습니다. Grad-SLAM이나 X-SLAM처럼 그것을 해결하고 backpropagation이 가능하도록 만든 논문들이 있습니다. 이 부분에 관심이 있으시다면 읽어보면 좋을 것 같습니다.