Tightly-coupled vs Loosely-coupled 방식

모바일로 글을 보신다면 ‘데스크탑 버전으로 보기’를 누르시면 좀 더 보기 쉽습니다

예상 면접 질문

  1. Tightly-coupled 방식과 Loosely-coupled 방식의 차이가 무엇일까요?
  2. Tightly-coupled 방식은 언제 유리하고, loosely-coupled 방식은 언제 유리할까요?
  3. VIO를 설계할 때 어떤 방식이 있을까요?
  4. 센서 퓨전을 하는 방식에는 어떤 방식이 있을까요?

 


우선 Tightly-coupled 방식과 Loosely-coupled 방식은 모두 2개 이상의 센서 데이터를 받을 때 정보를 혼합하여 단일 상태치를 추정하기 위한 방법이다.

특히, 이종 센서간의 정보를 혼합할 때 사용하기 좋다 (e.g. Camera+IMU, LiDAR+IMU, Camera+LiDAR+IMU+GPS+Wheel)

‘두 방법 중 어떤 방법이 더 좋다!’ 라고 단언할 수는 없으며, 실제로 둘 다 돌려보고 더 잘되는 방식을 써야한다.

아래 각각의 방식의 특징을 설명한다.

 


Tightly-coupled (강결합) 방식

  • 각각의 센서들에서 나온 관측치들을 한꺼번에 하나의 cost function을 통해 optimal state를 추정하는 방법
    • e.g. Tightly-coupled VIO : 카메라 센서 관측치에 대해서는 reprojection error를 계산, IMU 센서에 대해서는 kinematic residual을 계산, 이후 이 값들을 합한 값이 최저치가 되는 motion을 추정.
  • Loosely-coupled 방식보다 더 정확하다는 인식이 있다.
  • Loosely-coupled 방식보다 계산량이 더 많다는 인식이 있다.
  • Graph-based optimisation으로도 풀 수 있고, Filter-based approach로도 풀 수 있다.
  • Graph에 다양한 센서들의 관측치가 포함된다.
    • (위 이미지의 factor graph 참조. 카메라로 인한 variable과 IMU로 인한 variable이 둘 다 들어간다)
    • 단일 센서로 추정할 때 보다 더 많은 variable과 constraint가 생긴다.
      • 이로 인해 얻는 장점: Filter 방식보다 동일 계산량 대비 더 정확한 결과를 얻을 수 있다 (이는 Graph-optimisation의 특징이기도 하다)
      • 이로 인해 얻는 단점: Filter 방식보다 절대적인 계산량이 훨씬 높기 때문에 고성능 CPU를 요구한다.
  • Extended Kalman filter (EKF) 또는 Unscented Kalman filter (UKF)와 같은 filter 알고리즘의 인풋으로 다양한 센서의 관측치를 포함한다.
    • 이로 인해 얻는 장점: Graph-optimisation 방식에 비해 절대적인 계산량이 적기 때문에 저전력 CPU를 사용할 수 있다.
    • 이로 인해 얻는 단점: EKF 방식은 선형화 오차로 graph-optimisation 방식에 비해 조금 부정확하다
    • 이로 인해 얻는 단점2: EKF 방식은 관측치의 수가 많아질수록 연산량이 늘어나기 때문에 적은 수의 관측치만 이용할 수 있는데, 이는 상태추정을 불안정하게 만든다 (i.e. robustness가 떨어진다).

 


Loosely-coupled (약결합) 방식

  • 센서들마다 각각 state를 추정하고, 여러개의 state 정보를 합성해서 optimal state를 추정하는 것.
    • e.g. Loosely-coupled VIO = 카메라로 추정한 pose와 IMU로 추정한 pose를 EKF로 추정
    • 이로 인해 얻는 장점: 센서마다 state 추정 모듈을 쉽게 만들수 있다.
    • 이로 인해 얻는 장점2: 센서 시스템을 쉽게 변경할 수 있다 (i.e. 새 센서를 추가하기 쉽다 + 기존의 센서를 제거하기 쉽다)
      • 하나의 코어 센서퓨전 프레임워크를 만들고, 다양한 센서 구성을 가진 시스템 (e.g. 자율주행 소프트웨어 -> 소형자동차,중형세단,버스 탑재)를 만들 때 유용하다
    • 이로 인해 얻는 장점3: 특정 센서에 대해 가중치를 더 쉽게 줄 수 있다.
      • 어떤 센서가 잘 작동하지 않을 때 가중치를 낮추고, 다른 잘 작동하는 센서의 가중치를 높혀서 끊기지 않고 좋은 상태추정을 이어갈 수 있다 (i.e. robustness가 올라간다!)
    • 이로 인해 얻는 장점4: EKF를 사용할 때 많은 양의 관측치를 사용하지 않음으로 퓨전 프레임워크가 굉장히 가벼워진다
    • 장점 정리: 엔지니어링 측면에서 자유도가 굉장히 높다!
    • 이로 인해 얻는 단점: 특정 센서를 믿을 수 없을 때 어떻게 처리해야하는지 직접 설계해야한다.
      • e.g. 갑자기 하얀 벽이 나타났을 때 카메라는 pose 추정을 할 수 없다. IMU는 pose 추정을 잘 한다. 두 pose 값의 가중치를 동적으로 바꿔야할까? 동적으로 바꾼다면 어떻게?
      • e.g. 저가형 IMU를 사용하기 때문에 종종 IMU의 값이 튄다. IMU 값이 튈 때는 가중치를 낮추고 싶은데, 어떻게 값이 튀는걸 감지할 수 있을까? 센서의 오작동으로 튀는 값과, 실제로 충격을 받아서 생기는 튀는 값을 어떻게 구분해야할까?
      • 이러한 edge 케이스들은 굉장히 많을텐데 어떻게 설계할 것인가?