본문 바로가기

Curated

[Curated] SLAM 엔지니어 역량 점검 체크리스트 질문

본 포스트는 필자가 생각하는 SLAM 엔지니어 역량 점검 체크리스트입니다. 좋은 질문을 찾을 때마다 지속적으로 내용을 업데이트하려고 합니다. 더 좋은 질문이나 답변 내용이 있으면 댓글로 알려주시면 감사하겠습니다.

 

A. Frontend - VO, VIO

  1. ORB-SLAM2에서 Initialization 프로세스에 대해서 설명하시오.
  2. ORB-SLAM2의 Intialization 과정에서 사용된 방법이 2가지가 있는데 2가지가 어떤 차이점이 있는가?
    • 더보기
      (Fundamental Matrix \& Homography를 사용하여 초기화하는 이유)
  3. DSO, ORB-SLAM2 모두 키프레임 기반으로 SLAM을 수행하는데 키프레임 방식을 사용하는 이유는 무엇인가? 
  4. DSO에서 Intialization 과정이 어떻게 되는가?
  5. ORB-SLAM2에서 추가적으로 성능을 개선할 수 있는 방법에 대해서 설명해본다면?
  6. ORB feature에 대해서 설명하시오.
  7. Visual SLAM에서 멀리에 위치한 Feature들이 전체적인 성능에 영향을 준다고 생각하는가?
  8. 멀리 있는 Feature들이 왜 안 좋은지에 대해서 이론적으로 설명할 수 있는가?
  9. 카메라와 LiDAR 센서의 장단점과 각각 상호보완할 수 있는 방법에 대해 설명하면?
  10. indirect vs direct 방식의 장단점을 얘기해줄 수 있는지?
  11. Hough Transform을 알고 있는지?

 

B. Frontend - LO, LIO

  1. LiDAR PointCloud는 개수가 매우 많은데 이를 효율적으로 탐색하는 자료구조를 알고 있는지?
  2. LiDAR SLAM에서 64채널 LiDAR가 아닌 16채널이나 다른 LiDAR를 사용한다면 어떤 문제점이 있을것으로 예상되는지?

 

C. Backend

  1. Loop Closing 프로세스는 정확히 어떻게 발생하는 것인지?
  2. Loop Detection은 모든 키프레임들을 전부 검사한 후 판단하는 것인지?

 

D. Multiple view geometry

  1. Essential matrix $\mathbf{E}$, Fundamental matrix $\mathbf{F}$란 무엇인가?
  2. $\mathbf{F}$ 행렬는 역행렬을 구할 수 있는가?
  3. $\mathbf{x}'^{\intercal}\mathbf{F}\mathbf{x}=0$에서 $\mathbf{F}\mathbf{x}$가 의미하는 것은 무엇인가?
  4. Essential Matrix Decomposition에 대해 설명하시오.
  5. Essential Matrix를 분해하면 해가 몇 개가 나오는지 알고 있는가?
  6. 8-Points Algorithm 같은 것을 보면 Ax=0과 같은 시스템의 문제를 푸는데 실제로 어떻게 푸는지 알고 있는가?
  7. Homography는 무엇인가?
  8. 스테레오 카메라 캘리브레이션에 대해서 설명해보시오.
  9. intrinsic, extrinsic 캘리브레이션에 대해 각각 설명해보시오
  10. 캘리브레이션 중 나오는 $\mathbf{R},\mathbf{t}$의 기준좌표계는 어디인가?
  11. $\mathbf{R},\mathbf{t}$와 Fundamental Matrix 사이의 관계는 어떻게 되는가?
  12. 카메라 픽셀 좌표계 변환 공식 (Pinhole Camera Model)을 설명하시오.
  13. 월드 카메라 좌표계 변환 행렬 (Transformation Matrix)을 설명하시오.
  14. PnP 알고리즘에 대해 설명하시오.
  15. 시간동기화를 더 잘 맞출 수 있는 방법에 대해 고민해 본 적이 있는가?
  16. Visual SLAM에서 멀리에 위치한 Feature들이 전체적인 성능에 영향을 준다고 생각하는가?
  17. 멀리 있는 Feature들이 왜 안좋은지에 대해서 이론적으로 설명할 수 있는가?

 

E. Optimization

  1. 비선형함수의 최적화 방법을 설명하시오.
  2. Jacobian이란 무엇인가?
  3. SLAM에서 Error function 최적화 과정을 설명하시오.
  4. Gauss-Newton과 Levenberg-Marquardt 방법의 차이점이 무엇인가?
  5. Huber function이 어떤식으로 outlier의 역할을 완화해줄 수 있는가?
  6. g2o를 사용하는 graph-based slam 알고리즘들이 결국에는 최적화를 수행하는데 최적화 공식을 자세히보면 확률과도 밀접하게 연관되어 있다. 이에 대해서 설명할 수 있는가?
  7. Hessian을 풀 때 ($\mathbf{H}\Delta\mathbf{x} = -\mathbf{b}$) 가장 문제가 되는 부분은 어디인가?
  8. $\mathbf{H}^{-1}$를 구하는 대신 다른 방법으로 구할 수 가 있는데 다른 방법들을 알고 있는지?
  9. Cholesky Decomposition를 언제 사용할 수 있는가?
  10. Fix-lag Optimization하는 경우 Marginalization을 수행하는데 이를 하는 이유가 무엇인가?
  11. Newton Method가 문제를 풀기 위해 가정하는 것은?
  12. Graph-based Optimization vs Filter-based Optimization의 가장 큰 차이점을 말해주 수 있는가?
  13. Graph-based Optimization에 대해서 설명할 수 있는가?
  14. Iterative하게 풀기 위해서는 초기에 가지고 있어야 하는 것들이 어떤 것들이 있는가?
  15. GN에서 $\Delta \mathbf{x}$ 는 어떻게 구하는지?

 

F. Probability theory

  1. Recursive bayes filter를 설명하시오.
  2. Kalman filter의 전체적인 프로세스에 대해 설명하시오. 
  3. Information matrix란 무엇인가?
  4. Information matrix 초기값은 어떻게 선정하는가?
  5. Information matrix가 identity라는 의미는 어떤 의미인가?
  6. Covariance는 무엇인가?
  7. $\mathbf{A}$ 행렬을 통해 covariance는 어떻게 구하는가?
  8. Covariance와 eigenvector와는 어떤 관련이 있는가?
  9. Covariance는 어떻게 만드는가?
  10. Covariance를 구하는 과정을 프로그래밍한다면 어떻게 할 것인지?  
  11. Covariance와 Information matrix의 차이점이 무엇인지 알고 있는지?
  12. Information Matrix는 어떤 정보들을 encoding하고자 하는 것인지? (Info mat이 어떤 의미인지?)

 

G. Spatial representation

  1. 회전행렬 $\mathbf{R}$의 DOF는 몇인가?
  2. 변환행렬 $\mathbf{T}=\begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0} & 1 \end{bmatrix}$에서 마지막 행이 $[\mathbf{0} \ 1]$인 이유에 대해 설명하시오.
  3. 오일러 각도의 짐벌락 현상에 대해 설명하시오.
  4. 쿼터니언이 회전 연산자로 작용하기 위해서 필요한 조건에 대해 설명하시오.

 

H. Linear algebra

  1. 함수가 선형적이다 라는 말의 의미는 무엇인가?
  2. $\mathbf{Ax}=0$에서 $\mathbf{x}$를 어떻게 구하는가?
  3. $\mathbf{A}$의 nullspace를 어떻게 찾는지 알고 있는가?
  4. PCA의 알고리즘의 흐름도를 설명하시오.
  5. PCA에서 $\mathbf{A}$ 행렬에는 어떤 값들이 들어가는가?
  6. 해당 $\mathbf{A}$ 행렬을 어떻게 eigendecomposition하는가?
  7. SVD랑 eigendecomposition 간의 상관관계를 알고 있는가?

 

 

I. Lie theory

  1. SE3 based Optimization을 하는 이유를 설명하시오.
  2. Lie algebra se3(=twist)를 이용해서 업데이트를 하는 것의 장점은 무엇인가?
  3. manifold는 무엇인가?
  4. se3로 변환해서 업데이트를 하는 이유는 무엇인가?
  5. trangential space로 가는 이유는 무엇인가?
  6. Lie algebra-based optimization이 제약조건으로부터 자유롭다는 말은 어떤 의미인가?

 

J. Programming

  1. 시간복잡도와 공간복잡도의 개념을 설명하시오.
  2. 실시간으로 동작하는 자율주행시스템에서 시간복잡도와 공간복잡도가 어떤 의미가 있는가?
  3. 자율주행시스템에서 공간복잡도는 어떤 의미가 있는가?
  4. PointCloud로 인해 메모리가 부족한 경우 어떻게 시스템을 구성할 것인지?
  5. 메모리 대신 하드디스크에 데이터를 저장할 경우 어떻게 효율적으로 데이터를 관리할 것인가?