changh95 / blog_comments

0 stars 0 forks source link

20210607-solvers/ #9

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Graph-based SLAM 입문 + Solver 프레임워크 소개 (Ceres-solver, g2o, GTSAM, SE-Sync) | cv-learn

Ceres-solver, g2o, GTSAM, SE-Sync 라이브러리를 소개합니다.

https://changh95.github.io/20210607-solvers/

leeh8911 commented 3 years ago

Backend가 loopclosing을 하는 부분이라고 생각하면 될까요?

changh95 commented 3 years ago

@leeh8911 보통 frontend에서 loop가 생겼는지 확인하고, backend에서 loop closure (i.e. graph optimisation)을 수행합니다!

leeh8911 commented 3 years ago

@changh95 오오 감사합니다. 열심히 보고 공부하겠습니다 ㅎㅎ

ies0411 commented 3 years ago

안녕하세요~좋은 글 감사합니다. 궁금한게 있는데, 그렇다면 로봇이 과거 왔던 지점으로 가지 않으면 백엔드에서는 아무일(?)도 하지 않는다고 생각하면 될까요? 프론트엔드에서 동일 지점이라고 인식할때만 백엔드가 실행된다고 이해하면 맞을까요?

changh95 commented 3 years ago

@authorSOO 안녕하세요, 백엔드는 보통 다음과 같은 상황에서 작동합니다.

  1. Loop closure detection이 성공하였을 때 (i.e. 동일 지점으로 돌아온 것을 인식하였을 때), 백엔드를 통한 그래프 최적화
  2. Loop closure detection이 성공하였을 때 Pose만 최적화 (i.e. Pose graph optimisation)
  3. 최근 N개의 키프레임들을 표현하는 그래프 최적화 (i.e. local bundle adjustment)

3번의 경우, loop closure detection 없이 키프레임이 생성될 때 마다 작동하며 많은 SLAM 프레임워크에서 실시간으로 쌓이는 drift를 최소화하기 위해 사용합니다. 2007년 PTAM 논문, 2015년 ORB-SLAM 등에도 적용되어있느니 참조하시면 좋을 것 같습니다 :smile_cat: