
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
EASY_THREAD("Local Mapping");
Profiler 구성
thread
- ORB SLAM의 pipeline에서 큰 block들에 대해 thread를 나누었다
- main thread : TRACKING 부분
- Local Mapping : LOCAL MAPPING 부분
- Loop Closing : LOOP CLOSING 부분
- Full BA : FULL BA 부분
easy block
- 내부의 작은 block들에 대해 (각각의 역할을 하는 함수마다) block 생성
분석

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

- tracking 과정에서 다음 frame을 기다리는 부분으로 인해 끊어져보였었다
- initialization은 앞 부분에서만 진행된다
- Frame.cc의 ExtractORB() 부분
평균 : 23.898ms