ORB SLAM2 빌드 & 실행

happy_quokka·2023년 12월 2일
0

SLAM_Projcet

목록 보기
1/4

1. 환경 준비

eigen 설치

$ cd Thirdparty
$ mkdir eigen
$ cd eigen
$ git clone https://gitlab.com/libeigen/eigen.git
$ mkdir build
$ mkdir install
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../eigen/
$ make -j5
$ sudo make install

Pangolin 설치

$ cd Thirdparty
$ mkdir Pangolin
$ cd Pangolin
$ git clone https://github.com/stevenlovegrove/Pangolin.git
$ mkdir build
$ mkdir install
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../Pangolin/
$ make -j5
$ sudo make install

OpenCV 설치

$ cd Thirdparty
$ mkdir OpenCV
$ cd OpenCV
$ git clone https://github.com/opencv/opencv.git
$ mkdir buildcd
$ mkdir install
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../opencv
$ make -j5
$ sudo make install

근데 결국 이렇게 안하고...

  • buildDeps.py 사용해서 빌드
  • 그 후 ORB_SLAM2 폴더에서 ./build.sh 실행 -> 에러남(수정사항에 적었다)

수정사항

  • make에서 라이브러리 버전 추가 입력
  • find_package(Eigen3 3.3.4 REQUIRED NO_MODULE) :NO_MODULE 추가
  • stdint-gcc.h 파일을 찾지 못한 경우, 대신 cstdint 헤더 파일을 사용할 수 있습니다. cstdint 헤더 파일은 C++11부터 표준 라이브러리에 포함된 헤더 파일로, 정수 자료형과 관련된 상수와 함수를 제공합니다. #include <cstdint> 로 변경하여 오류를 해결해 보세요. -> 변경 완료
  • 'CV_LOAD_IMAGE_UNCHANGED'를 'cv::IMREAD_UNCHANGED'로 대체해야 합니다. OpenCV에서는 이전 버전에서 사용되던 'CV_LOAD_IMAGE_UNCHANGED' 대신 'cv::IMREAD_UNCHANGED'를 사용합니다. 코드에서 해당 부분을 수정하여 오류를 해결해 보세요.
  • 'usleep' 함수를 대체해야 합니다. 'usleep' 함수는 C++11에서 제거되었습니다. 대신 'std::this_thread::sleep_for' 함수를 사용하여 대기 시간을 구현할 수 있습니다. 코드에서 'usleep'를 'std::this_thread::sleep_for'로 변경해 보세요.
    • system.h에 #include <unistd.h>
  • DBoW2와 g2o의 CMakeLists.txt에서 opencv와 eigen3를 find_package하는 부분에서 경로를 변경해주었다

  • 성공..?!?!

  • 실패...opencv 버전을 4.5.3으로 했었는데 버전 문제가 있는 것 같아서 3.4.0으로 재설치
  • 종속성이 깨져서 apt-get update를 하는데 E: Sub-process /usr/bin/dpkg returned an error code (1)이런 에러가 발생했다

질문

  • 라이브러리를 cmake할 때 경로를 지정해주면 왜 에러가 나는가
    • opencv의 경우 /usr/local/어딘가에 eigen3가 없다고 에러가 난다
  • 최상단의 cmakelist 경로를 참고하는 방법은? ${CMAKE_SOURCE_DIR}는 현재 위치의 경로 가져온다

2. 실행

dataset

$ ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml ./dataset/sequences/00
  • 맨뒤의 00은 데이터의 number를 입력하면 된다
  • KITTI00-02.yaml도 원하는 파일로 사용하면 된다!

0개의 댓글