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 출처
gdb <optimized out>출력 오류 문제 해결
https://m.blog.naver.com/chhh92/220803418372
하지만 여전히 custom data 를 이용한 orb_slam3는 오류가 나고 있다.
can't open/read file: check file path/integrity, cv2.Imread 라는 오류를 내고 있다.
'건축 컴퓨터 비전 > 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 |