ORB SLAM2 easy_profiler

happy_quokka·2023년 12월 5일
0

SLAM_Projcet

목록 보기
2/4

easy profiler 설치

https://github.com/yse/easy_profiler

  • Thirdparty에 설치
  • sample/main.cpp 파일에 사용 예제가 있다

easy profiler 사용법

  • profiler gui 실행 후 .prof 파일을 사용한다
$ cd ORB_SLAM2/Thirdparty/easy_profiler/install/Release/bin/
$ ./profiler_gui 

EASY_BLOCK

  • 원하는 부분을 BLOCK으로 감싸서 확인
  • 끝날 때 EASY_END_BLOCK 를 사용한다

#include "easy/profiler.h"

EASY_BLOCK("ExtractORB block", profiler::colors::Blue);
{확인하고 싶은 내용}
EASY_END_BLOCK

EASY_FUNCTION

  • 확인하고 싶은 함수에 넣어서 사용
 EASY_FUNCTION(profiler::colors::Gold);

EASY_THREAD

  • thread를 나누어서
EASY_THREAD("Local Mapping");

Profiler 구성

thread

  • ORB SLAM의 pipeline에서 큰 block들에 대해 thread를 나누었다
  1. main thread : TRACKING 부분
  2. Local Mapping : LOCAL MAPPING 부분
  3. Loop Closing : LOOP CLOSING 부분
  4. Full BA : FULL BA 부분

easy block

  • 내부의 작은 block들에 대해 (각각의 역할을 하는 함수마다) block 생성

분석

  • Full BA의 경우 thread를 생성, 해제하는 과정을 반복하기 때문에 여러 개로 나타난다
  • Local Mapping, Loop Closure 부분에서 빈 곳
    • 차가 정지해있는 경우 keyframe이 생성되지 않기 때문에 아무일도 하지 않는다
    • 반대로 차가 회전하는 경우에는 keyframe이 많이 생성되기 때문에 촘촘하게 나타난다

  • tracking 과정에서 다음 frame을 기다리는 부분으로 인해 끊어져보였었다
  • initialization은 앞 부분에서만 진행된다

extractORB

  • Frame.cc의 ExtractORB() 부분

평균 : 23.898ms

0개의 댓글