2023.12.05 DAY55
어제 하던 profile을 이어서 진행했다. 코드를 보면서 ORB-SLAM의 전체 구조를 파악했다. 코드가 잘 구성되어 있는 것 같지만 양이 많고 연결되어 있는 부분이 많아서 파악하는데 오래걸렸다ㅠㅠ 오늘은 traking 부분을 파악했다. 중간에 실행을 mono로 해야하는데 stereo로 실행해서 오류가 났다... 이걸 찾느라 한시간은 내내 뭐가 문제인지 확인했다ㅠㅠ 크게 잘못된게 아니라 다행이었지만..허무했다. 잘 보고 실행해야지ㅠㅠ
SLAM project
tracking (Tracking.cc)
- 아래의 3단계 모두 Track() 함수 안에 구성
- Pose Prediction or Relocalization
- Track Local Map
- New KeyFrame Decision
local mapping (LocalMapping.cc)
- Run()함수 안에 구성되어 있다
- KeyFrame Insertion : ProcessNewKeyFrame()
- Recent MapPoint Cuuling : MapPointCulling()
- New Point Creation : CreateNewMapPoints()
- Local BA : LocalBundleAdjustment()
- Local KeyFrames Culling : KeyFrameCulling()
loop closing (LoopClosing.cc)
- Run()함수 안에 구성되어 있다
- Query Database : DetectLoop()
- Compute SE3 : ComputeSim3()
- Loop Fusion : CorrectLoop() 내부에 존재
- Optimize Essential Graph : OptimizeEssentialGraph()
📝 배운 내용
cmake, make, ninja의 차이
cmake는 make가 crossplatform에서 될 수 있도록 만든 것
build 단계
- configure
- inclue, src, compiler, build option 등을 실행 전 확인하는 단계
cmake ..
단계
- generate
- 실행 command를 생성하여 makefile, build.ninja 파일을 생성하는계
- build
cmake -build
를 하면 generate랑 build를 한번에 한다
make와 ninja 차이
- make
- makefile로 빌드
- j 지정 안하는 경우 CPU 1개 사용
make -j
: 모든 CPU 사용
- ninja
- build.ninja로 빌드
- j 지정 안하는 경우 모든 CPU 사용
- make보다 효율적인 경우가 많다
sudo make install
빌드된 후 bin, include, lib를 /usr/local/bin 또는 include 또는 lib에 복사