MugichokoさんのRGB-D SLAM実装、Intel Euclidで動くかな?(その1)コンパイル
面白そうなSLAMの実装が公開されています。ぱっと見、openFrameworksに移植してみたくなる感じです。
mugichoko.hatenablog.com
Windowsを開発環境にされているようですが、OpenGLさえ動けばどの環境でも大丈夫そうです。MakefileやCMakeはまだ用意されていないとのことですが、とりあえずビルドしてみましょう。
Intel Euclidでビルド
filesystemの扱いがWindowsとgccで違うので、ちょっとだけソースの編集をします。
まずは、include先の修正
> nano SLAM/Utilities/TUMRGBDUtilities.h
//#include <filesystem> #include <experimental/filesystem>
つぎに、namespaceの修正
> nano SLAM/Utilities/TUMRGBDUtilities.cpp
//path_c = std::tr2::sys::path(cFramePath).parent_path().string(); //path_d = std::tr2::sys::path(dFramePath).parent_path().string(); path_c = std::experimental::filesystem::path(cFramePath).parent_path().string(); path_d = std::experimental::filesystem::path(dFramePath).parent_path().string();
とりあえずこれでコンパイルは通るようになりました。
g++ Main.cpp App.cpp GLCore/*.cpp GLExt/*.cpp SLAM/*.cpp SLAM/Frame/*.cpp SLAM/ICP/*.cpp SLAM/Utilities/*.cpp -I. -lstdc++fs -std=c++11 `pkg-config --cflags opencv` `pkg-config --libs opencv` `pkg-config --static --libs gl` `pkg-config --static --libs glew` -lglfw
実行してみましょう。
./a.out
Failed to open: D:/Dataset/MY_RGBD/desktop/rgb.txtFailed to open: D:/Dataset/MY_RGBD/desktop/depth.txtFailed to open: D:/Dataset/MY_RGBD/desktop/groundtruth.txtVendor: Intel Open Source Technology Center
Renderer: Mesa DRI Intel(R) HD Graphics (Cherrytrail)
Version: 3.0 Mesa 12.0.6
GLSL: 1.30Failed to read frames.
Creating a shader program...
Loaded "../shaders/SLAM/BilateralFilter.comp".
Error: Failed to compile "compute" shader:
�"���
設定ファイルに書かれたパスが存在しないのはともかくとして、openGLのバージョンがうまく設定されていないようです。Intel EuclidはかろうじてOpenGL4.3が動くはずなので、設定してやればきっと大丈夫、、、と信じたい。
> MESA_GL_VERSION_OVERRIDE=4.3 ./a.out
Failed to open: D:/Dataset/MY_RGBD/desktop/rgb.txtFailed to open: D:/Dataset/MY_RGBD/desktop/depth.txtFailed to open: D:/Dataset/MY_RGBD/desktop/groundtruth.txtVendor: Intel Open Source Technology Center
Renderer: Mesa DRI Intel(R) HD Graphics (Cherrytrail)
Version: 4.3 (Core Profile) Mesa 12.0.6
GLSL: 4.30Segmentation fault
今日はもう疲れたので、また今度に続く。
調べた結果、Appのコンストラクタで落ちていて、openGLの初期化に失敗しているようです。これは、Intel Euclidのハードウェアスペックの問題のように見えますので、環境を変えてやってみましょう。
2018/03/28
CMakeLists.txt on jetson tx2
cmake_minimum_required(VERSION 3.0.0) set(PROJECT_NAME "Cross-Platform-RGB-D-SLAM") file(GLOB SOURCES *.cpp) file(GLOB GLCORE_SOURCES GLCore/*.cpp) file(GLOB GLEXT_SOURCES GLExt/*.cpp) file(GLOB SLAM_SOURCES SLAM/*.cpp) file(GLOB SLAM_FRAME_SOURCES SLAM/Frame/*.cpp) file(GLOB SLAM_ICP_SOURCES SLAM/ICP/*.cpp) file(GLOB SLAM_UTILITIES_SOURCES SLAM/Utilities/*.cpp) include_directories(./) add_executable(${PROJECT_NAME} ${SOURCES} ${GLCORE_SOURCES} ${GLEXT_SOURCES} ${SLAM_SOURCES} ${SLAM_FRAME_SOURCES} ${SLAM_ICP_SOURCES} ${SLAM_UTILITIES_SOURCES}) target_compile_features(${PROJECT_NAME} PRIVATE cxx_range_for) target_link_libraries(${PROJECT_NAME} stdc++fs) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "../") # link libraries find_packakgConfig REQUIRED) find_package(OpenGL) find_package(GLEW REQUIRED) find_package(glfw3) find_package(OpenCV) target_link_libraries(${PROJECT_NAME} ${OPENGL_gl_LIBRARY}) target_link_libraries(${PROJECT_NAME} ${GLEW_LIBRARIES}) target_link_libraries(${PROJECT_NAME} glfw) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) # OpenMP settings find_package(OpenMP) if (OPENMP_FOUND) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() # from here http://zashikiro.hateblo.jp/entry/2014/05/17/001314 message(STATUS "*** dump start cmake variables ***") get_cmake_property(_variableNames VARIABLES) foreach(_variableName ${_variableNames}) message(STATUS "${_variableName}=${${_variableName}}") endforeach() message(STATUS "*** dump end ***")
- libglew-dev:arm64/xenial 1.13.0-2 uptodate
- glfw3_VERSION=3.2.1
- OpenCV_VERSION=2.4.13.1
libglm-dev:all/xenial 0.9.7.2-1 uptodate