ORB SLAM Custom data, debugging

2022. 7. 15. 19:52· 건축 컴퓨터 비전/ORB-SLAM3

custom data 를 실행하기 위해 소스코드를 수정하고 있다.

 

파일 경로가 문제가 일어나고 잇는데, 원인을 파악하기 위해 Linux 환경에서 gdb를 이용한 디버깅을 진행하고 있다.

 

1. orb slam3의 cmakelists.txt 위에 debug 모드로 컴파일 할 것을 명령해야 한다.

 

cmake_minimum_required(VERSION 2.8)
project(ORB_SLAM3)

IF(NOT CMAKE_BUILD_TYPE)
  SET(CMAKE_BUILD_TYPE Debug)  # >> Release를 Debug로 바꿔주었다.
ENDIF()

MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall   -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
set(CMAKE_BUILD_TYPE Debug)   # >---마지막에 추가한 줄

 

이렇게 마지막에 추가해준다. 

이렇게 디버그 flag를 명시해주고 build해주어야 gdb에서 debugging symbol을 찾을 수 있다.

 

cmake를 수정했으니, ORB_SLAM3/build로 이동해서 

cmake ..  를 통해서 cmake 파일 수정사항을 makefile에 적용시켜주고,

make $(nproc)  나 거기에 조금 더 높은 숫자로 빌드를 해준다.

빌드한 결과물을 설치하는 과정은 필요가 없다(sudo make install).

이러면 변경사항들이 적용된 실행파일들로 빌드 결과물을 생성한다.

 

2. gdb를 설치해준다.

3. ORB_SLAM3/Examples/Monocular/..에 있는 예시 파일들을 디버깅 하려는데, 인수가 4개가 된다. 보통 gdb with argument 인 경우에는 

gdb ./Monocular/ABKO_webcam --args ../Vocabulary/ORBvoc.txt ./Monocular/ABKO_webcam.yaml ../DataSets/ABKO_webcam ./Monocular/data1_timestamps.txt

다

이런식으로 명령어를 쳐서

gdb executable_file --argument argument1 argume다nt2 argument3 ... 이런 식으로 작성한다. 그런데, gdb에서 Vocabulary/ORBvoc.txt not in executable format 이라는 오류를 띄웠다. 

원인을 파악하기 보다는 다른 방법이 매우 많아보여서 그것들 중에 하나를 시도했다.

 

지금 생각해보니

gdb --args executable_file arg1 arg2 arg3 이런 순서로 적어줘야 했다.

 

아무튼 나의 두번째 방법은 gdb executable_file 로 먼저 실행해주고, 

(gdb)run arg1 arg2 arg3 로 실행했다.

 

그런데, 대부분의 변수들이 optimized out이라는 표시로 값을 잃어버린 상태였다. 빌드하는 과정에서 컴파일러가 최적화해버려서 디버깅할 때 알수 없게 되어버린 것인데, gcc 컴파일러의 경우, -O0, -O1, -O2, -O3, -Og 처럼 optimization level을 나눠놓았다.

 숫자가 올라갈수록 최적화를 심하게 하여 사람들은 디버깅을 할 때에 -O0 또는 디버깅에 영향을 주지않는 optimization level인 -Og 를 사용한다. g++에서도 사용 가능할까??

 

gdb with argument 출처

https://stackoverflow.com/questions/6121094/how-do-i-run-a-program-with-commandline-arguments-using-gdb-within-a-bash-script

 

How do I run a program with commandline arguments using GDB within a Bash script?

When running a program on GDB, usually, the arguments for the program are given at the run command. Is there a way to run the program using GDB and as well as give arguments within a shell script? ...

stackoverflow.com

gdb <optimized out>출력 오류 문제 해결

https://m.blog.naver.com/chhh92/220803418372

 

linux kernel 디버깅 중 변수 값이 <optimized out>로 출력되는 문제 해결

커널 디버깅하다가, 어떤 값이 들어있나 변수를 출력하던 중 <optimized out>이 출력되었다. 이게 출...

blog.naver.com

 

하지만 여전히 custom data 를 이용한 orb_slam3는 오류가 나고 있다.

can't open/read file: check file path/integrity, cv2.Imread 라는 오류를 내고 있다.

 

 

https://velog.io/@hyesukim1/%EC%98%A4%EB%A5%98cant-openread-file-check-file-pathintegrity-cv2.Imread-%EB%AA%BB%EC%9D%BD%EC%96%B4%EC%98%AC%EB%95%8C

 

[오류]can't open/read file: check file path/integrity, cv2.Imread 못읽어올때

cv2.imread가 파일 경로 안에 있는 '문서'라는 한글을 읽어오지 못하고 에러를 내보냄 WARN:0@1.828 global D:\\a\\opencv-python\\opencv-python\\opencv\\modules\\imgcodecs\\src\\loadsave

velog.io

 

'건축 컴퓨터 비전 > ORB-SLAM3' 카테고리의 다른 글

slam 실행 전 libpango_display.so: cannot open shared object file: No such file or directory  (0) 2022.08.05
c++ gdb 디버깅중 vector size가 음수인 문제(c++ gdb vector size minus)  (0) 2022.07.17
ORB-SLAM3 카메라 캘리브레이션2  (0) 2022.07.08
ORB-SLAM3 카메라 캘리브레이션  (0) 2022.07.06
ORB-SLAM3 설치(20.04)  (0) 2022.06.16
'건축 컴퓨터 비전/ORB-SLAM3' 카테고리의 다른 글
  • slam 실행 전 libpango_display.so: cannot open shared object file: No such file or directory
  • c++ gdb 디버깅중 vector size가 음수인 문제(c++ gdb vector size minus)
  • ORB-SLAM3 카메라 캘리브레이션2
  • ORB-SLAM3 카메라 캘리브레이션
시도하고 시도
시도하고 시도
시도하고 시도
시도하고 시도하는 파이썬
시도하고 시도
전체
오늘
어제
  • 분류 전체보기 (97)
    • 건축 컴퓨터 비전 (24)
      • 3D Reconstruction (4)
      • ORB-SLAM3 (6)
      • Computer Vision (3)
      • 리눅스 troubleshoot (2)
      • 리눅스 지식쌓기 (6)
      • DSO-SLAM (1)
    • 파이썬 공부 (10)
      • 기초 (6)
    • 음식 (1)
      • 구리 맛집 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • window
  • python 들여쓰기
  • 홀수만 남을 때
  • python 초보
  • python none
  • 파이썬 구구단
  • 친절한 음식점
  • orb-slam3
  • MinGW
  • 중고서점 가격
  • 자동들여쓰기
  • 구리 애월식당
  • uxui
  • UX/UI
  • 피그마 입문
  • 리스트 이동
  • C++
  • UIUX
  • python 들여쓰기 길게
  • UI/UX

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
시도하고 시도
ORB SLAM Custom data, debugging
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.