Techt3o commited on
Commit
739258a
·
verified ·
1 Parent(s): 20ae9ff

4f12b484f180574c6eb9e28ac739e76d44c165853db056d7b668b65be58331d0

Browse files
Files changed (50) hide show
  1. third-party/DPVO/LICENSE +21 -0
  2. third-party/DPVO/Pangolin/.clang-format +2 -0
  3. third-party/DPVO/Pangolin/CMakeLists.txt +186 -0
  4. third-party/DPVO/Pangolin/cmake/AndroidUtils.cmake +245 -0
  5. third-party/DPVO/Pangolin/cmake/CreateMethodCallFile.cmake +11 -0
  6. third-party/DPVO/Pangolin/cmake/EmbedBinaryFiles.cmake +37 -0
  7. third-party/DPVO/Pangolin/cmake/EmscriptenUtils.cmake +37 -0
  8. third-party/DPVO/Pangolin/cmake/FindDC1394.cmake +32 -0
  9. third-party/DPVO/Pangolin/cmake/FindDepthSense.cmake +43 -0
  10. third-party/DPVO/Pangolin/cmake/FindFFMPEG.cmake +97 -0
  11. third-party/DPVO/Pangolin/cmake/FindGLEW.cmake +53 -0
  12. third-party/DPVO/Pangolin/cmake/FindGLUES.cmake +38 -0
  13. third-party/DPVO/Pangolin/cmake/FindLibraw.cmake +41 -0
  14. third-party/DPVO/Pangolin/cmake/FindLz4.cmake +26 -0
  15. third-party/DPVO/Pangolin/cmake/FindMediaFoundation.cmake +20 -0
  16. third-party/DPVO/Pangolin/cmake/FindOculus.cmake +63 -0
  17. third-party/DPVO/Pangolin/cmake/FindOpenEXR.cmake +33 -0
  18. third-party/DPVO/Pangolin/cmake/FindOpenNI.cmake +58 -0
  19. third-party/DPVO/Pangolin/cmake/FindOpenNI2.cmake +59 -0
  20. third-party/DPVO/Pangolin/cmake/FindPleora.cmake +143 -0
  21. third-party/DPVO/Pangolin/cmake/FindRealSense.cmake +33 -0
  22. third-party/DPVO/Pangolin/cmake/FindRealSense2.cmake +33 -0
  23. third-party/DPVO/Pangolin/cmake/FindTeliCam.cmake +58 -0
  24. third-party/DPVO/Pangolin/cmake/FindTooN.cmake +28 -0
  25. third-party/DPVO/Pangolin/cmake/FindXrandr.cmake +32 -0
  26. third-party/DPVO/Pangolin/cmake/Findlibusb1.cmake +43 -0
  27. third-party/DPVO/Pangolin/cmake/Findpthread.cmake +42 -0
  28. third-party/DPVO/Pangolin/cmake/Finduvc.cmake +39 -0
  29. third-party/DPVO/Pangolin/cmake/Findzstd.cmake +35 -0
  30. third-party/DPVO/Pangolin/cmake/MakePythonWheel.cmake +104 -0
  31. third-party/DPVO/Pangolin/cmake/PangolinConfig.cmake.in +18 -0
  32. third-party/DPVO/Pangolin/cmake/PangolinConfigVersion.cmake.in +17 -0
  33. third-party/DPVO/Pangolin/cmake/PangolinFactory.cmake +56 -0
  34. third-party/DPVO/Pangolin/cmake/SetPlatformVars.cmake +56 -0
  35. third-party/DPVO/Pangolin/cmake/cmake_uninstall.cmake.in +21 -0
  36. third-party/DPVO/Pangolin/cmake/wheel-dist-info/METADATA +12 -0
  37. third-party/DPVO/Pangolin/cmake/wheel-dist-info/WHEEL +5 -0
  38. third-party/DPVO/Pangolin/cmake/wheel-dist-info/top_level.txt +1 -0
  39. third-party/DPVO/evaluate_icl_nuim.py +141 -0
  40. third-party/DPVO/evaluate_kitti.py +168 -0
  41. third-party/DPVO/evaluate_tartan.py +198 -0
  42. third-party/DPVO/evaluate_tum.py +166 -0
  43. third-party/DPVO/logs/dpv_slam/euroc.txt +25 -0
  44. third-party/DPVO/logs/dpv_slam/tartan.txt +36 -0
  45. third-party/DPVO/logs/dpv_slam/tum_rgbd.txt +21 -0
  46. third-party/DPVO/logs/euroc.txt +27 -0
  47. third-party/DPVO/logs/euroc_fast.txt +27 -0
  48. third-party/DPVO/logs/icl_nuim.txt +21 -0
  49. third-party/DPVO/logs/tartan.txt +37 -0
  50. third-party/DPVO/logs/tum_rgbd.txt +23 -0
third-party/DPVO/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Princeton Vision & Learning Lab
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
third-party/DPVO/Pangolin/.clang-format ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ DisableFormat: true
2
+ SortIncludes: false
third-party/DPVO/Pangolin/CMakeLists.txt ADDED
@@ -0,0 +1,186 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cmake_minimum_required(VERSION 3.10)
2
+
3
+ project("Pangolin")
4
+ set(PANGOLIN_VERSION_MAJOR 0)
5
+ set(PANGOLIN_VERSION_MINOR 8)
6
+ set(PANGOLIN_VERSION ${PANGOLIN_VERSION_MAJOR}.${PANGOLIN_VERSION_MINOR})
7
+
8
+ if(NOT CMAKE_CXX_STANDARD)
9
+ set(CMAKE_CXX_STANDARD 17)
10
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
11
+ endif()
12
+
13
+ add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
14
+
15
+ # Prevent in source builds
16
+ if(EXISTS "${PROJECT_BINARY_DIR}/CMakeLists.txt")
17
+ message(FATAL_ERROR "Source build detected: please use a subdir. You may remove 'CMakeCache.txt' and 'CMakeFiles'.")
18
+ endif()
19
+
20
+ # Make our own cmake imports accessible
21
+ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
22
+
23
+ include(SetPlatformVars)
24
+ include(PangolinFactory)
25
+
26
+ option( BUILD_TOOLS "Build Tools" ON )
27
+ option( BUILD_EXAMPLES "Build Examples" ON )
28
+ option( BUILD_ASAN "Enable AddressSanitizer for Debug builds" OFF )
29
+
30
+ # Default build type (Override with cmake .. -DCMAKE_BUILD_TYPE=...)
31
+ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
32
+ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE)
33
+ message(STATUS "Setting build type to '${CMAKE_BUILD_TYPE}' as none was specified.")
34
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
35
+ endif()
36
+
37
+ if(_WIN_)
38
+ option( BUILD_SHARED_LIBS "Build Shared Library" OFF)
39
+ option( MSVC_USE_STATIC_CRT "Use static C Runtime with MSVC, /MT instead of /MD" ON)
40
+
41
+ # Make sure there are no erroneous C Runtime flags
42
+ list(APPEND FLAG_VARS
43
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
44
+ CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
45
+ )
46
+ if(MSVC_USE_STATIC_CRT)
47
+ foreach(FLAG_VAR ${FLAG_VARS})
48
+ string(REGEX REPLACE "/MD" "/MT" NEW_FLAGS "${${FLAG_VAR}}")
49
+ set(${FLAG_VAR} "${NEW_FLAGS}" CACHE STRING "" FORCE)
50
+ endforeach()
51
+ else()
52
+ foreach(FLAG_VAR ${FLAG_VARS})
53
+ string(REGEX REPLACE "/MT" "/MD" NEW_FLAGS "${${FLAG_VAR}}")
54
+ set(${FLAG_VAR} "${NEW_FLAGS}" CACHE STRING "" FORCE)
55
+ endforeach()
56
+ endif()
57
+ elseif(_OSX_)
58
+ option( BUILD_SHARED_LIBS "Build Shared Library" ON)
59
+ set(CMAKE_MACOSX_RPATH ON)
60
+ elseif(EMSCRIPTEN)
61
+ set(BUILD_SHARED_LIBS OFF)
62
+ include(EmscriptenUtils)
63
+ set(CMAKE_EXE_LINKER_FLAGS "-sASYNCIFY=1 -sDISABLE_EXCEPTION_CATCHING=0 -sGL_ASSERTIONS=1 -sFULL_ES2=1 -sFULL_ES3=1 --bind")
64
+ else()
65
+ option( BUILD_SHARED_LIBS "Build Shared Library" ON)
66
+ endif()
67
+
68
+ # run with "ASAN_OPTIONS=fast_unwind_on_malloc=0" to print stack with more details
69
+ if(BUILD_ASAN)
70
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
71
+ -fsanitize=address \
72
+ -fsanitize=bool \
73
+ -fsanitize=bounds \
74
+ -fsanitize=enum \
75
+ -fsanitize=float-cast-overflow \
76
+ -fsanitize=float-divide-by-zero \
77
+ -fsanitize=nonnull-attribute \
78
+ -fsanitize=returns-nonnull-attribute \
79
+ -fsanitize=signed-integer-overflow \
80
+ -fsanitize=undefined \
81
+ -fsanitize=vla-bound \
82
+ -fno-sanitize=alignment \
83
+ -fsanitize=leak \
84
+ -fsanitize=object-size \
85
+ ")
86
+ endif()
87
+
88
+ #######################################################
89
+ ## Testing setup
90
+
91
+ option( BUILD_TESTS "Build Tests" OFF)
92
+ find_package(Catch2 2 QUIET)
93
+ if(Catch2_FOUND)
94
+ include(CTest)
95
+ include(Catch)
96
+ else()
97
+ if(BUILD_TESTS)
98
+ message(WARNING "Building Tests requested, but Catch2 library not found.")
99
+ set( BUILD_TESTS OFF)
100
+ endif()
101
+ endif()
102
+
103
+ #######################################################
104
+ ## Add all pangolin components
105
+
106
+ file(GLOB components_cmake "${CMAKE_CURRENT_LIST_DIR}/components/*/CMakeLists.txt")
107
+ set(component_list "")
108
+ foreach(component_cmake ${components_cmake})
109
+ get_filename_component(component_dir ${component_cmake} DIRECTORY)
110
+ get_filename_component(component_name ${component_dir} NAME)
111
+ add_library(${component_name} "")
112
+ list(APPEND component_list ${component_name})
113
+ endforeach()
114
+
115
+ foreach(component_cmake ${components_cmake})
116
+ include(${component_cmake})
117
+ endforeach()
118
+
119
+ #######################################################
120
+ ## Build Tree Export
121
+
122
+ # Export Targets
123
+ export(TARGETS ${component_list} FILE PangolinTargets.cmake)
124
+ export(PACKAGE Pangolin)
125
+
126
+ # Version information
127
+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in
128
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY)
129
+
130
+ # Build tree config
131
+ configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
132
+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY IMMEDIATE )
133
+
134
+
135
+ #######################################################
136
+ ## Install headers / targets
137
+
138
+ # This relative path allows installed files to be relocatable.
139
+ set( CMAKECONFIG_INSTALL_DIR lib/cmake/${PROJECT_NAME} )
140
+ file( RELATIVE_PATH REL_INCLUDE_DIR
141
+ "${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR}"
142
+ "${CMAKE_INSTALL_PREFIX}/include"
143
+ )
144
+
145
+ install(
146
+ TARGETS ${component_list}
147
+ EXPORT ${PROJECT_NAME}Targets
148
+ LIBRARY DESTINATION lib
149
+ ARCHIVE DESTINATION lib
150
+ RUNTIME DESTINATION bin
151
+ INCLUDES DESTINATION include
152
+ )
153
+
154
+ install(
155
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
156
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
157
+ DESTINATION ${CMAKECONFIG_INSTALL_DIR}
158
+ )
159
+ install(
160
+ EXPORT ${PROJECT_NAME}Targets DESTINATION ${CMAKECONFIG_INSTALL_DIR}
161
+ )
162
+
163
+ # uninstall target
164
+ if(NOT TARGET uninstall)
165
+ configure_file(
166
+ "${CMAKE_CURRENT_LIST_DIR}/cmake/cmake_uninstall.cmake.in"
167
+ "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
168
+ IMMEDIATE @ONLY)
169
+
170
+ add_custom_target(uninstall
171
+ COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
172
+ endif()
173
+
174
+
175
+ #######################################################
176
+ ## Tools / Examples
177
+
178
+ set(Pangolin_DIR ${CMAKE_CURRENT_BINARY_DIR})
179
+
180
+ if(BUILD_EXAMPLES)
181
+ add_subdirectory(examples)
182
+ endif()
183
+
184
+ if(BUILD_TOOLS)
185
+ add_subdirectory(tools)
186
+ endif()
third-party/DPVO/Pangolin/cmake/AndroidUtils.cmake ADDED
@@ -0,0 +1,245 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(NOT ANDROID_PACKAGE_NAME)
2
+ set(ANDROID_PACKAGE_NAME "com.github.stevenlovegrove.pangolin")
3
+ endif()
4
+
5
+ if(NOT ANDROID_DEFERRED_ENTRY_SO)
6
+ set(ANDROID_DEFERRED_ENTRY_SO "libpangolin.so")
7
+ endif()
8
+
9
+ # Configure build environment to automatically generate APK's instead of executables.
10
+ if(ANDROID AND NOT TARGET apk)
11
+ # virtual targets which we'll add apks and push actions to.
12
+ add_custom_target( apk )
13
+ add_custom_target( push )
14
+ add_custom_target( run )
15
+
16
+ # Reset output directories to be in binary folder (rather than source)
17
+ set(LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_CURRENT_BINARY_DIR})
18
+ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME})
19
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH_ROOT}/libs/${ANDROID_NDK_ABI_NAME})
20
+ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH_ROOT}/bin/${ANDROID_NDK_ABI_NAME})
21
+
22
+ macro( create_android_manifest_xml filename prog_name package_name activity_name)
23
+ file( WRITE ${filename}
24
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>
25
+ <!-- BEGIN_INCLUDE(manifest) -->
26
+ <manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
27
+ package=\"${package_name}.${prog_name}\"
28
+ android:versionCode=\"1\"
29
+ android:versionName=\"1.0\">
30
+
31
+ <!-- This is the platform API where NativeActivity was introduced. -->
32
+ <uses-sdk android:minSdkVersion=\"14\" />
33
+ <uses-feature android:glEsVersion=\"0x00020000\" />
34
+ <uses-feature android:name=\"android.hardware.camera\" />
35
+ <uses-permission android:name=\"android.permission.CAMERA\"/>
36
+ <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>
37
+ <uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>
38
+
39
+ <!-- This .apk has no Java code itself, so set hasCode to false. -->
40
+ <application android:label=\"${activity_name}\" android:hasCode=\"false\">
41
+
42
+ <!-- Our activity is the built-in NativeActivity framework class.
43
+ This will take care of integrating with our NDK code. -->
44
+ <activity android:name=\"android.app.NativeActivity\"
45
+ android:label=\"${activity_name}\"
46
+ android:screenOrientation=\"landscape\"
47
+ android:configChanges=\"orientation|keyboard|keyboardHidden\"
48
+ android:theme=\"@android:style/Theme.NoTitleBar.Fullscreen\"
49
+ >
50
+ <!-- Tell NativeActivity the name of our .so -->
51
+ <meta-data android:name=\"android.app.lib_name\"
52
+ android:value=\"${prog_name}_start\" />
53
+ <intent-filter>
54
+ <action android:name=\"android.intent.action.MAIN\" />
55
+ <category android:name=\"android.intent.category.LAUNCHER\" />
56
+ </intent-filter>
57
+ </activity>
58
+ </application>
59
+
60
+ </manifest>
61
+ <!-- END_INCLUDE(manifest) -->" )
62
+ endmacro()
63
+
64
+ macro( create_bootstrap_library prog_name package_name)
65
+ set(bootstrap_cpp "${CMAKE_CURRENT_BINARY_DIR}/${prog_name}_start.cpp" )
66
+ file( WRITE ${bootstrap_cpp}
67
+ "#include <android/native_activity.h>
68
+ #include <android/log.h>
69
+ #include <dlfcn.h>
70
+ #include <errno.h>
71
+ #include <stdlib.h>
72
+ #include <cstdio>
73
+
74
+ #define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, \"AndroidUtils.cmake\", __VA_ARGS__))
75
+ #define LIB_PATH \"/data/data/${package_name}.${prog_name}/lib/\"
76
+
77
+ void * load_lib(const char * l) {
78
+ void * handle = dlopen(l, RTLD_NOW | RTLD_GLOBAL);
79
+ if (!handle) LOGE( \"dlopen('%s'): %s\", l, strerror(errno) );
80
+ return handle;
81
+ }
82
+
83
+ void ANativeActivity_onCreate(ANativeActivity * app, void * ud, size_t udsize) {
84
+ #include \"${prog_name}_shared_load.h\"
85
+
86
+ // Look for standard entrypoint in user lib
87
+ void (*stdentrypoint)(ANativeActivity*, void*, size_t);
88
+ *(void **) (&stdentrypoint) = dlsym(load_lib( LIB_PATH \"lib${prog_name}.so\"), \"ANativeActivity_onCreate\");
89
+ if (stdentrypoint) {
90
+ (*stdentrypoint)(app, ud, udsize);
91
+ }else{
92
+ // Look for deferred load entry point
93
+ void (*exdentrypoint)(ANativeActivity*, void*, size_t, const char*);
94
+ *(void **) (&exdentrypoint) = dlsym(load_lib( LIB_PATH \"lib${prog_name}.so\"), \"DeferredNativeActivity_onCreate\");
95
+ if (!exdentrypoint) {
96
+ // Look in specific shared lib
97
+ *(void **) (&exdentrypoint) = dlsym(load_lib( LIB_PATH \"${ANDROID_DEFERRED_ENTRY_SO}\"), \"DeferredNativeActivity_onCreate\");
98
+ }
99
+ if(exdentrypoint) {
100
+ (*exdentrypoint)(app, ud, udsize, LIB_PATH \"lib${prog_name}.so\" );
101
+ }else{
102
+ LOGE( \"Unable to find compatible entry point\" );
103
+ }
104
+ }
105
+ }" )
106
+ add_library( "${prog_name}_start" SHARED ${bootstrap_cpp} )
107
+ target_link_libraries( "${prog_name}_start" android log )
108
+ add_dependencies( ${prog_name} "${prog_name}_start" )
109
+ endmacro()
110
+
111
+ macro( android_update android_project_name)
112
+ # Find which android platforms are available.
113
+ execute_process(
114
+ COMMAND android list targets -c
115
+ OUTPUT_VARIABLE android_target_list
116
+ )
117
+
118
+ # Pick first platform from this list.
119
+ string(REGEX MATCH "^[^\n]+" android_target "${android_target_list}" )
120
+ message(STATUS "Android Target: ${android_target}")
121
+
122
+ if( NOT "${android_target}" STREQUAL "" )
123
+ # Generate ant build scripts for making APK
124
+ execute_process(
125
+ COMMAND android update project --name ${android_project_name} --path . --target ${android_target} --subprojects
126
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
127
+ )
128
+ else()
129
+ message( FATAL_ERROR "No Android SDK platforms found. Please install an Android platform SDK. On Linux, run 'android'." )
130
+ endif()
131
+ endmacro()
132
+
133
+ # Override add_executable to build android .so instead!
134
+ macro( add_executable prog_name)
135
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_NDK_ABI_NAME})
136
+ add_library( ${prog_name} SHARED ${ARGN} )
137
+
138
+ # Add required link libs for android
139
+ target_link_libraries(${prog_name} log android )
140
+
141
+ # Create manifest required for APK
142
+ create_android_manifest_xml(
143
+ "${CMAKE_CURRENT_BINARY_DIR}/AndroidManifest.xml" "${prog_name}"
144
+ "${ANDROID_PACKAGE_NAME}" "${prog_name}"
145
+ )
146
+
147
+ # Create library that will launch this program and load shared libs
148
+ create_bootstrap_library( ${prog_name} ${ANDROID_PACKAGE_NAME} )
149
+
150
+ # Generate ant build system for APK
151
+ android_update( ${prog_name} )
152
+
153
+ # Target to invoke ant build system for APK
154
+ set( APK_FILE "${CMAKE_CURRENT_BINARY_DIR}/bin/${prog_name}-debug.apk" )
155
+ add_custom_command(
156
+ OUTPUT ${APK_FILE}
157
+ COMMAND ant debug
158
+ DEPENDS ${prog_name}
159
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
160
+ )
161
+
162
+ # Target to install on device
163
+ add_custom_target( ${prog_name}-apk
164
+ DEPENDS ${APK_FILE}
165
+ )
166
+ add_dependencies(apk ${prog_name}-apk)
167
+
168
+ # Target to install on device
169
+ add_custom_target( ${prog_name}-push
170
+ COMMAND adb install -r ${APK_FILE}
171
+ DEPENDS ${APK_FILE}
172
+ )
173
+ add_dependencies(push ${prog_name}-push)
174
+
175
+ # install and run on device
176
+ add_custom_target( ${prog_name}-run
177
+ COMMAND adb shell am start -n ${ANDROID_PACKAGE_NAME}.${prog_name}/android.app.NativeActivity
178
+ DEPENDS ${prog_name}-push
179
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
180
+ )
181
+ add_dependencies(run ${prog_name}-run)
182
+
183
+ # Flag to package dependent libs
184
+ set_property(TARGET ${prog_name} APPEND PROPERTY MAKE_APK 1 )
185
+
186
+ # Clear shared library loading header
187
+ file( WRITE "${CMAKE_CURRENT_BINARY_DIR}/${prog_name}_shared_load.h" "")
188
+ endmacro()
189
+
190
+ macro( package_with_target prog_name lib_path )
191
+ # Mark lib_path as dependent of prog_name
192
+ set_property(TARGET ${prog_name} APPEND PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE ${lib_path} )
193
+
194
+ # If prog_name is to be packaged, add file copy command to package .so's.
195
+ get_target_property( package_dependent_libs ${prog_name} MAKE_APK )
196
+ if( package_dependent_libs )
197
+ get_filename_component(target_filename ${lib_path} NAME)
198
+ file( APPEND ${depend_file} "load_lib(LIB_PATH \"${target_filename}\" );\n")
199
+ add_custom_command(TARGET ${prog_name} POST_BUILD
200
+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
201
+ ${lib_path} "${CMAKE_CURRENT_BINARY_DIR}/libs/${ANDROID_NDK_ABI_NAME}/"
202
+ )
203
+ endif()
204
+ endmacro()
205
+
206
+ macro( add_to_depend_libs prog_name depend_file lib_name )
207
+ # Recursively Process dependents of lib_name
208
+ get_target_property(TARGET_LIBS ${lib_name} IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE)
209
+ if(NOT TARGET_LIBS)
210
+ get_target_property(TARGET_LIBS ${lib_name} IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG)
211
+ endif()
212
+ if(NOT TARGET_LIBS)
213
+ get_target_property(TARGET_LIBS ${lib_name} IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG)
214
+ endif()
215
+
216
+ foreach(SUBLIB ${TARGET_LIBS})
217
+ if(SUBLIB)
218
+ add_to_depend_libs( ${prog_name} ${depend_file} ${SUBLIB} )
219
+ endif()
220
+ endforeach()
221
+
222
+ # Check if lib itself is an external shared library
223
+ if("${lib_name}" MATCHES "\\.so$")
224
+ package_with_target( ${prog_name} ${lib_name} )
225
+ endif()
226
+
227
+ # Check if lib itself is an internal shared library
228
+ get_target_property(TARGET_LIB ${lib_name} LOCATION)
229
+ if("${TARGET_LIB}" MATCHES "\\.so$")
230
+ package_with_target( ${prog_name} ${TARGET_LIB} )
231
+ endif()
232
+ endmacro()
233
+
234
+ macro( target_link_libraries prog_name)
235
+ # _target_link_libraries corresponds to original
236
+ _target_link_libraries( ${prog_name} ${ARGN} )
237
+
238
+ # Recursively process dependencies
239
+ set(depend_file "${CMAKE_CURRENT_BINARY_DIR}/${prog_name}_shared_load.h" )
240
+ foreach( LIB ${ARGN} )
241
+ add_to_depend_libs( ${prog_name} ${depend_file} ${LIB} )
242
+ endforeach()
243
+ endmacro()
244
+
245
+ endif()
third-party/DPVO/Pangolin/cmake/CreateMethodCallFile.cmake ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ macro( CreateMethodCallFile filename namespace function symbols)
2
+ file(WRITE ${filename} "// CMake generated file. Do Not Edit.\n\n#pragma once\n\nnamespace ${namespace} {\n\n")
3
+ foreach( symbol ${symbols} )
4
+ file(APPEND ${filename} "void ${symbol}();\n")
5
+ endforeach()
6
+ file(APPEND ${filename} "\ninline bool ${function}()\n{\n")
7
+ foreach( symbol ${symbols} )
8
+ file(APPEND ${filename} " ${symbol}();\n")
9
+ endforeach()
10
+ file(APPEND ${filename} " return true;\n}\n\n} // ${namespace}\n")
11
+ endmacro()
third-party/DPVO/Pangolin/cmake/EmbedBinaryFiles.cmake ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Creates C resources file from specified files
2
+ # Based on http://stackoverflow.com/a/27206982
3
+ function(embed_binary_files_now output binary_files)
4
+ # Create empty output file
5
+ file(WRITE ${output} "")
6
+ # Iterate through input files
7
+ foreach(bin ${binary_files})
8
+ # Get short filename
9
+ string(REGEX MATCH "([^/]+)$" filename ${bin})
10
+ # Replace filename spaces & extension separator for C compatibility
11
+ string(REGEX REPLACE "\\.| " "_" filename ${filename})
12
+ # Read hex data from file
13
+ file(READ ${bin} filedata HEX)
14
+ # Convert hex data for C compatibility
15
+ string(REGEX REPLACE "([0-9a-f][0-9a-f])" "0x\\1," filedata ${filedata})
16
+ # Append data to output file
17
+ file(APPEND ${output} "extern const unsigned char ${filename}[] = {${filedata}};\nextern const unsigned ${filename}_size = sizeof(${filename});\n")
18
+ endforeach()
19
+ endfunction()
20
+
21
+ # Sets up rule for embedding files when they are newer than the output file (or it doesn't exist yet)
22
+ function(embed_binary_files_rule output binary_files)
23
+ add_custom_command(
24
+ OUTPUT ${output}
25
+ DEPENDS ${binary_files}
26
+ COMMAND
27
+ ${CMAKE_COMMAND} -DINPUT_BINARY_FILES=${binary_files}
28
+ -DOUTPUT_SRC_FILE=${output}
29
+ -P ${PROJECT_SOURCE_DIR}/cmake/EmbedBinaryFiles.cmake
30
+ COMMENT "Embedding ${binary_files} into ${output}"
31
+ )
32
+ endfunction()
33
+
34
+ if(CMAKE_SCRIPT_MODE_FILE AND NOT CMAKE_PARENT_LIST_FILE)
35
+ # Running in script mode as part of build-time procedure to actually to the embedding
36
+ embed_binary_files_now(${OUTPUT_SRC_FILE} ${INPUT_BINARY_FILES} )
37
+ endif()
third-party/DPVO/Pangolin/cmake/EmscriptenUtils.cmake ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(EMSCRIPTEN)
2
+ macro( create_host_index_html filename prog_name)
3
+ file( WRITE ${filename}
4
+ "<!doctype html>
5
+ <head>
6
+ <meta charset=\"utf-8\">
7
+ <title>${prog_name}</title>
8
+ </head>
9
+ <body oncontextmenu=\"return false;\">
10
+ <canvas id=\"canvas\" tabindex=-1></canvas>
11
+ <script type=\"text/javascript\">
12
+ var canvas = document.getElementById(\"canvas\");
13
+ canvas.width = window.innerWidth;
14
+ canvas.height = window.innerHeight;
15
+ var Module = {};
16
+ Module.canvas = canvas;
17
+ Module.arguments = ['test://'];
18
+ window.onerror = function(message, source, lineno, colno, error) {
19
+ console.log(Module.pango_get_exception_message(error));
20
+ return false;
21
+ };
22
+ window.addEventListener(\"unhandledrejection\", function(promiseRejectionEvent) {
23
+ console.log(Module.pango_get_exception_message(promiseRejectionEvent.reason));
24
+ });
25
+ </script>
26
+ <script type=\"text/javascript\" src=\"${prog_name}.js\"></script>
27
+ </body>
28
+ </html>")
29
+ endmacro()
30
+
31
+ # Override add_executable to make webpage instead
32
+ macro( add_executable prog_name)
33
+ # Create manifest required for APK
34
+ create_host_index_html("${CMAKE_CURRENT_BINARY_DIR}/index.html" "${prog_name}")
35
+ _add_executable(${prog_name} ${ARGN})
36
+ endmacro()
37
+ endif()
third-party/DPVO/Pangolin/cmake/FindDC1394.cmake ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Try to find the dc1394 v2 lib and include files
2
+ #
3
+ # DC1394_INCLUDE_DIR
4
+ # DC1394_LIBRARIES
5
+ # DC1394_FOUND
6
+
7
+ FIND_PATH( DC1394_INCLUDE_DIR dc1394/control.h
8
+ /usr/include
9
+ /usr/local/include
10
+ )
11
+
12
+ FIND_LIBRARY( DC1394_LIBRARY dc1394
13
+ /usr/lib64
14
+ /usr/lib
15
+ /usr/local/lib
16
+ )
17
+
18
+ IF(DC1394_INCLUDE_DIR AND DC1394_LIBRARY)
19
+ SET( DC1394_FOUND TRUE )
20
+ SET( DC1394_LIBRARIES ${DC1394_LIBRARY} )
21
+ ENDIF(DC1394_INCLUDE_DIR AND DC1394_LIBRARY)
22
+
23
+ IF(DC1394_FOUND)
24
+ IF(NOT DC1394_FIND_QUIETLY)
25
+ MESSAGE(STATUS "Found DC1394: ${DC1394_LIBRARY}")
26
+ ENDIF(NOT DC1394_FIND_QUIETLY)
27
+ ELSE(DC1394_FOUND)
28
+ IF(DC1394_FIND_REQUIRED)
29
+ MESSAGE(FATAL_ERROR "Could not find libdc1394")
30
+ ENDIF(DC1394_FIND_REQUIRED)
31
+ ENDIF(DC1394_FOUND)
32
+
third-party/DPVO/Pangolin/cmake/FindDepthSense.cmake ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Try to find the DepthSense SDK For SoftKinetic Cameras
2
+ #
3
+ # DepthSense_INCLUDE_DIRS
4
+ # DepthSense_LIBRARIES
5
+ # DepthSense_FOUND
6
+
7
+ FIND_PATH( DepthSense_INCLUDE_DIR DepthSense.hxx
8
+ PATHS
9
+ "${PROGRAM_FILES}/SoftKinetic/DepthSenseSDK/include"
10
+ "${PROGRAM_FILES}/Meta/DepthSenseSDK/include"
11
+ /usr/include
12
+ /usr/local/include
13
+ /opt/local/include
14
+ /opt/softkinetic/DepthSenseSDK/include
15
+ )
16
+
17
+ FIND_LIBRARY( DepthSense_LIBRARY DepthSense
18
+ PATHS
19
+ "${PROGRAM_FILES}/SoftKinetic/DepthSenseSDK/lib"
20
+ "${PROGRAM_FILES}/Meta/DepthSenseSDK/lib"
21
+ /usr/lib64
22
+ /usr/lib
23
+ /usr/local/lib
24
+ /opt/local/lib
25
+ /opt/softkinetic/DepthSenseSDK/lib
26
+ )
27
+
28
+ IF(DepthSense_INCLUDE_DIR AND DepthSense_LIBRARY)
29
+ SET( DepthSense_FOUND TRUE )
30
+ SET( DepthSense_LIBRARIES ${DepthSense_LIBRARY} )
31
+ SET( DepthSense_INCLUDE_DIRS ${DepthSense_INCLUDE_DIR} )
32
+ ENDIF()
33
+
34
+ IF(DepthSense_FOUND)
35
+ IF(NOT DepthSense_FIND_QUIETLY)
36
+ MESSAGE(STATUS "Found DepthSense: ${DepthSense_LIBRARY}")
37
+ ENDIF()
38
+ ELSE()
39
+ IF(DepthSense_FIND_REQUIRED)
40
+ MESSAGE(FATAL_ERROR "Could not find DepthSense")
41
+ ENDIF()
42
+ ENDIF()
43
+
third-party/DPVO/Pangolin/cmake/FindFFMPEG.cmake ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Try to find the ffmpeg libraries and headers for avcodec avformat swscale
2
+ #
3
+ # FFMPEG_INCLUDE_DIRS
4
+ # FFMPEG_LIBRARIES
5
+ # FFMPEG_FOUND
6
+
7
+ # Find header files
8
+ FIND_PATH(
9
+ AVCODEC_INCLUDE_DIR libavcodec/avcodec.h
10
+ /usr/include /usr/local/include /opt/local/include /usr/include/x86_64-linux-gnu
11
+ )
12
+ FIND_PATH(
13
+ AVFORMAT_INCLUDE_DIR libavformat/avformat.h
14
+ /usr/include /usr/local/include /opt/local/include /usr/include/x86_64-linux-gnu
15
+ )
16
+ FIND_PATH(
17
+ AVDEVICE_INCLUDE_DIR libavdevice/avdevice.h
18
+ /usr/include /usr/local/include /opt/local/include /usr/include/x86_64-linux-gnu
19
+ )
20
+ FIND_PATH(
21
+ AVUTIL_INCLUDE_DIR libavutil/avutil.h
22
+ /usr/include /usr/local/include /opt/local/include /usr/include/x86_64-linux-gnu
23
+ )
24
+ FIND_PATH(
25
+ SWSCALE_INCLUDE_DIR libswscale/swscale.h
26
+ /usr/include /usr/local/include /opt/local/include /usr/include/x86_64-linux-gnu
27
+ )
28
+
29
+ # Find Library files
30
+ FIND_LIBRARY(
31
+ AVCODEC_LIBRARY
32
+ NAMES avcodec
33
+ PATH /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu
34
+ )
35
+ FIND_LIBRARY(
36
+ AVFORMAT_LIBRARY
37
+ NAMES avformat
38
+ PATH /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu
39
+ )
40
+ FIND_LIBRARY(
41
+ AVDEVICE_LIBRARY
42
+ NAMES avdevice
43
+ PATH /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu
44
+ )
45
+ FIND_LIBRARY(
46
+ AVUTIL_LIBRARY
47
+ NAMES avutil
48
+ PATH /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu
49
+ )
50
+ FIND_LIBRARY(
51
+ SWSCALE_LIBRARY
52
+ NAMES swscale
53
+ PATH /usr/lib /usr/local/lib /opt/local/lib /usr/lib/x86_64-linux-gnu
54
+ )
55
+
56
+ IF( EXISTS "${AVUTIL_INCLUDE_DIR}/libavutil/pixdesc.h" )
57
+ SET( AVUTIL_HAVE_PIXDESC TRUE)
58
+ endif()
59
+
60
+ IF(AVCODEC_INCLUDE_DIR AND AVFORMAT_INCLUDE_DIR AND AVUTIL_INCLUDE_DIR AND AVDEVICE_INCLUDE_DIR AND SWSCALE_INCLUDE_DIR AND AVCODEC_LIBRARY AND AVFORMAT_LIBRARY AND AVUTIL_LIBRARY AND SWSCALE_LIBRARY AND AVDEVICE_LIBRARY AND AVUTIL_HAVE_PIXDESC)
61
+ SET(FFMPEG_FOUND TRUE)
62
+ SET(FFMPEG_LIBRARIES ${AVCODEC_LIBRARY} ${AVFORMAT_LIBRARY} ${AVUTIL_LIBRARY} ${SWSCALE_LIBRARY} ${AVDEVICE_LIBRARY})
63
+ SET(FFMPEG_INCLUDE_DIRS ${AVCODEC_INCLUDE_DIR} ${AVFORMAT_INCLUDE_DIR} ${AVUTIL_INCLUDE_DIR} ${SWSCALE_INCLUDE_DIR} ${AVDEVICE_INCLUDE_DIR})
64
+
65
+ include(CheckCXXSourceCompiles)
66
+
67
+ SET(CMAKE_REQUIRED_INCLUDES ${FFMPEG_INCLUDE_DIRS})
68
+
69
+ CHECK_CXX_SOURCE_COMPILES(
70
+ "#include \"${AVCODEC_INCLUDE_DIR}/libavformat/avformat.h\"
71
+ int main() {
72
+ sizeof(AVFormatContext::max_analyze_duration);
73
+ }" HAVE_FFMPEG_MAX_ANALYZE_DURATION
74
+ )
75
+ CHECK_CXX_SOURCE_COMPILES(
76
+ "#include \"${AVCODEC_INCLUDE_DIR}/libavformat/avformat.h\"
77
+ int main() {
78
+ &avformat_alloc_output_context2;
79
+ }" HAVE_FFMPEG_AVFORMAT_ALLOC_OUTPUT_CONTEXT2
80
+ )
81
+ CHECK_CXX_SOURCE_COMPILES(
82
+ "#include \"${AVCODEC_INCLUDE_DIR}/libavutil/pixdesc.h\"
83
+ int main() {
84
+ AVPixelFormat test = AV_PIX_FMT_GRAY8;
85
+ }" HAVE_FFMPEG_AVPIXELFORMAT
86
+ )
87
+ ENDIF()
88
+
89
+ IF (FFMPEG_FOUND)
90
+ IF (NOT FFMPEG_FIND_QUIETLY)
91
+ MESSAGE(STATUS "Found FFMPEG: ${FFMPEG_LIBRARIES}")
92
+ ENDIF (NOT FFMPEG_FIND_QUIETLY)
93
+ ELSE (FFMPEG_FOUND)
94
+ IF (FFMPEG_FIND_REQUIRED)
95
+ MESSAGE(FATAL_ERROR "Could not find FFMPEG")
96
+ ENDIF (FFMPEG_FIND_REQUIRED)
97
+ ENDIF (FFMPEG_FOUND)
third-party/DPVO/Pangolin/cmake/FindGLEW.cmake ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #
2
+ # Try to find GLEW library and include path.
3
+ # Once done this will define
4
+ #
5
+ # GLEW_FOUND
6
+ # GLEW_INCLUDE_DIR
7
+ # GLEW_LIBRARY
8
+ #
9
+
10
+ IF (WIN32)
11
+ FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h
12
+ $ENV{PROGRAMFILES}/GLEW/include
13
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/include
14
+ DOC "The directory where GL/glew.h resides")
15
+ FIND_LIBRARY( GLEW_LIBRARY
16
+ NAMES glew GLEW glew32 glew32s
17
+ PATHS
18
+ $ENV{PROGRAMFILES}/GLEW/lib
19
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/bin
20
+ ${PROJECT_SOURCE_DIR}/src/nvgl/glew/lib
21
+ DOC "The GLEW library")
22
+ ELSE (WIN32)
23
+ FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h
24
+ /usr/include
25
+ /usr/local/include
26
+ /sw/include
27
+ /opt/local/include
28
+ DOC "The directory where GL/glew.h resides")
29
+ FIND_LIBRARY( GLEW_LIBRARY
30
+ NAMES GLEW glew
31
+ PATHS
32
+ /usr/lib64
33
+ /usr/lib
34
+ /usr/local/lib64
35
+ /usr/local/lib
36
+ /sw/lib
37
+ /opt/local/lib
38
+ DOC "The GLEW library")
39
+ ENDIF (WIN32)
40
+
41
+ IF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY)
42
+ SET( GLEW_FOUND TRUE )
43
+ ENDIF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY)
44
+
45
+ IF (GLEW_FOUND)
46
+ IF (NOT GLEW_FIND_QUIETLY)
47
+ MESSAGE(STATUS "Found GLEW: ${GLEW_LIBRARY}")
48
+ ENDIF (NOT GLEW_FIND_QUIETLY)
49
+ ELSE (GLEW_FOUND)
50
+ IF (GLEW_FIND_REQUIRED)
51
+ MESSAGE(FATAL_ERROR "Could not find GLEW")
52
+ ENDIF (GLEW_FIND_REQUIRED)
53
+ ENDIF (GLEW_FOUND)
third-party/DPVO/Pangolin/cmake/FindGLUES.cmake ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Try to find the GLUES lib and include files
2
+ #
3
+ # GLUES_INCLUDE_DIR
4
+ # GLUES_LIBRARIES
5
+ # GLUES_FOUND
6
+
7
+ FIND_PATH( GLUES_INCLUDE_DIR glues/glues.h
8
+ /usr/include
9
+ /usr/local/include
10
+ /opt/include
11
+ /opt/local/include
12
+ ${CMAKE_INSTALL_PREFIX}/include
13
+ )
14
+
15
+ FIND_LIBRARY( GLUES_LIBRARY glues
16
+ /usr/lib64
17
+ /usr/lib
18
+ /usr/local/lib
19
+ /opt/local/lib
20
+ /opt/local/lib64
21
+ ${CMAKE_INSTALL_PREFIX}/lib
22
+ )
23
+
24
+ IF(GLUES_INCLUDE_DIR AND GLUES_LIBRARY)
25
+ SET( GLUES_FOUND TRUE )
26
+ SET( GLUES_LIBRARIES ${GLUES_LIBRARY} )
27
+ ENDIF(GLUES_INCLUDE_DIR AND GLUES_LIBRARY)
28
+
29
+ IF(GLUES_FOUND)
30
+ IF(NOT GLUES_FIND_QUIETLY)
31
+ MESSAGE(STATUS "Found GLUES: ${GLUES_LIBRARY}")
32
+ ENDIF(NOT GLUES_FIND_QUIETLY)
33
+ ELSE(GLUES_FOUND)
34
+ IF(GLUES_FIND_REQUIRED)
35
+ MESSAGE(FATAL_ERROR "Could not find GLUES")
36
+ ENDIF(GLUES_FIND_REQUIRED)
37
+ ENDIF(GLUES_FOUND)
38
+
third-party/DPVO/Pangolin/cmake/FindLibraw.cmake ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find libraw
2
+ #
3
+ # libraw_FOUND - system has libraw
4
+ # libraw_INCLUDE_DIRS - the libraw include directories
5
+ # libraw_LIBRARIES - link these to use libraw
6
+
7
+ FIND_PATH(
8
+ libraw_INCLUDE_DIRS
9
+ NAMES libraw/libraw.h
10
+ PATHS
11
+ ${LIBRAW_DIR}
12
+ ${LIBRAW_DIR}/include
13
+ /usr/include/
14
+ /usr/local/include
15
+ /opt/local/include
16
+ )
17
+
18
+ FIND_LIBRARY(
19
+ libraw_LIBRARIES
20
+ NAMES raw_r
21
+ PATHS
22
+ ${LIBRAW_DIR}
23
+ ${LIBRAW_DIR}/lib
24
+ /usr/lib
25
+ /usr/local/lib
26
+ /opt/local/lib
27
+ )
28
+
29
+ IF (libraw_INCLUDE_DIRS AND libraw_LIBRARIES)
30
+ SET(libraw_FOUND TRUE)
31
+ ENDIF (libraw_INCLUDE_DIRS AND libraw_LIBRARIES)
32
+
33
+ IF (libraw_FOUND)
34
+ IF (NOT libraw_FIND_QUIETLY)
35
+ MESSAGE(STATUS "Found libraw: ${libraw_LIBRARIES}")
36
+ ENDIF (NOT libraw_FIND_QUIETLY)
37
+ ELSE (libraw_FOUND)
38
+ IF (libraw_FIND_REQUIRED)
39
+ MESSAGE(FATAL_ERROR "Could not find libraw")
40
+ ENDIF (libraw_FIND_REQUIRED)
41
+ ENDIF (libraw_FOUND)
third-party/DPVO/Pangolin/cmake/FindLz4.cmake ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ find_path(Lz4_INCLUDE_DIRS
3
+ NAMES lz4frame.h
4
+ PATHS
5
+ /opt/local/include
6
+ /usr/local/include
7
+ /usr/include
8
+ )
9
+
10
+ find_library(Lz4_LIBRARIES
11
+ NAMES lz4
12
+ PATHS
13
+ /usr/local/lib
14
+ /opt/local/lib
15
+ /user/local/lib
16
+ /usr/lib
17
+ )
18
+
19
+ include(FindPackageHandleStandardArgs)
20
+ find_package_handle_standard_args(Lz4 REQUIRED_VARS Lz4_LIBRARIES Lz4_INCLUDE_DIRS)
21
+
22
+ mark_as_advanced(
23
+ Lz4_INCLUDE_DIRS
24
+ Lz4_LIBRARIES
25
+ Lz4_FOUND
26
+ )
third-party/DPVO/Pangolin/cmake/FindMediaFoundation.cmake ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Find MediaFoundation
2
+ # Find the Windows SDK MediaFoundation libraries
3
+ #
4
+ # MediaFoundation_LIBRARIES - List of libraries when using MediaFoundation
5
+ # MediaFoundation_FOUND - True if MediaFoundation found
6
+
7
+ IF (MSVC)
8
+ SET( MediaFoundation_LIBRARIES mf.lib mfplat.lib mfreadwrite.lib mfuuid.lib strmiids.lib )
9
+ SET( MediaFoundation_FOUND true )
10
+ ENDIF (MSVC)
11
+
12
+ IF (MediaFoundation_FOUND)
13
+ IF (NOT MediaFoundation_FIND_QUIETLY)
14
+ MESSAGE(STATUS "Found MediaFoundation: ${MediaFoundation_LIBRARIES}")
15
+ ENDIF (NOT MediaFoundation_FIND_QUIETLY)
16
+ ELSE (MediaFoundation_FOUND)
17
+ IF (MediaFoundation_FIND_REQUIRED)
18
+ MESSAGE(FATAL_ERROR "Could not find MediaFoundation")
19
+ ENDIF (MediaFoundation_FIND_REQUIRED)
20
+ ENDIF (MediaFoundation_FOUND)
third-party/DPVO/Pangolin/cmake/FindOculus.cmake ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find Oculus Rift SDK
2
+ #
3
+ # Oculus_FOUND - system has libuvc
4
+ # Oculus_INCLUDE_DIRS - the libuvc include directories
5
+ # Oculus_LIBRARIES - link these to use libuvc
6
+
7
+ FIND_PATH(
8
+ Oculus_INCLUDE_DIRS
9
+ NAMES OVR.h
10
+ PATHS
11
+ ${CMAKE_SOURCE_DIR}/../LibOVR/Include
12
+ ${CMAKE_SOURCE_DIR}/../OculusSDK/LibOVR/Include
13
+ /usr/include/LibOVR/Include
14
+ /usr/local/include/LibOVR/Include
15
+ /opt/local/include/LibOVR/Include
16
+ /usr/include/
17
+ /usr/local/include
18
+ /opt/local/include
19
+ )
20
+
21
+ FIND_LIBRARY(
22
+ Oculus_LIBRARIES
23
+ NAMES ovr
24
+ PATHS
25
+ ${CMAKE_SOURCE_DIR}/../LibOVR/Lib/MacOS/Release
26
+ ${CMAKE_SOURCE_DIR}/../OculusSDK/LibOVR/Lib/Linux/Release/x86_64
27
+ /usr/include/LibOVR/Lib
28
+ /usr/local/include/LibOVR/Lib
29
+ /opt/local/include/LibOVR/Lib
30
+ /usr/lib
31
+ /usr/local/lib
32
+ /opt/local/lib
33
+ )
34
+
35
+ IF(Oculus_INCLUDE_DIRS AND Oculus_LIBRARIES)
36
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
37
+ find_library(CARBON_LIBRARIES NAMES Carbon)
38
+ find_library(IOKIT_LIBRARIES NAMES IOKit)
39
+ list(APPEND Oculus_LIBRARIES ${CARBON_LIBRARIES})
40
+ list(APPEND Oculus_LIBRARIES ${IOKIT_LIBRARIES})
41
+ SET(Oculus_FOUND TRUE)
42
+ ELSEIF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
43
+ FIND_PACKAGE(Xrandr QUIET)
44
+ IF( Xrandr_FOUND )
45
+ list(APPEND Oculus_LIBRARIES ${Xrandr_LIBRARIES} -ludev -lXrandr -lXinerama )
46
+ SET(Oculus_FOUND TRUE)
47
+ ENDIF()
48
+ ENDIF()
49
+ ENDIF(Oculus_INCLUDE_DIRS AND Oculus_LIBRARIES)
50
+
51
+
52
+
53
+ IF(Oculus_FOUND)
54
+ IF(NOT Oculus_FIND_QUIETLY)
55
+ MESSAGE(STATUS "Found Oculus: ${Oculus_LIBRARIES}")
56
+ MESSAGE(STATUS "Found Oculus: ${Oculus_INCLUDE_DIRS}")
57
+ ENDIF(NOT Oculus_FIND_QUIETLY)
58
+ ELSE(Oculus_FOUND)
59
+ message(STATUS "Oculus NOT found")
60
+ IF(Oculus_FIND_REQUIRED)
61
+ MESSAGE(FATAL_ERROR "Could not find Oculus")
62
+ ENDIF(Oculus_FIND_REQUIRED)
63
+ ENDIF(Oculus_FOUND)
third-party/DPVO/Pangolin/cmake/FindOpenEXR.cmake ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Try to find the OpenEXR v2 lib and include files
2
+ #
3
+ # OpenEXR_INCLUDE_DIR
4
+ # OpenEXR_LIBRARIES
5
+ # OpenEXR_FOUND
6
+
7
+ FIND_PATH( OpenEXR_INCLUDE_DIR ImfHeader.h
8
+ /usr/include
9
+ /usr/local/include
10
+ PATH_SUFFIXES OpenEXR
11
+ )
12
+
13
+ FIND_LIBRARY( OpenEXR_LIBRARY IlmImf
14
+ /usr/lib64
15
+ /usr/lib
16
+ /usr/local/lib
17
+ )
18
+
19
+ IF(OpenEXR_INCLUDE_DIR AND OpenEXR_LIBRARY)
20
+ SET( OpenEXR_FOUND TRUE )
21
+ SET( OpenEXR_LIBRARIES ${OpenEXR_LIBRARY} )
22
+ ENDIF()
23
+
24
+ IF(OpenEXR_FOUND)
25
+ IF(NOT OpenEXR_FIND_QUIETLY)
26
+ MESSAGE(STATUS "Found OpenEXR: ${OpenEXR_LIBRARY}")
27
+ ENDIF(NOT OpenEXR_FIND_QUIETLY)
28
+ ELSE(OpenEXR_FOUND)
29
+ IF(OpenEXR_FIND_REQUIRED)
30
+ MESSAGE(FATAL_ERROR "Could not find libOpenEXR")
31
+ ENDIF(OpenEXR_FIND_REQUIRED)
32
+ ENDIF(OpenEXR_FOUND)
33
+
third-party/DPVO/Pangolin/cmake/FindOpenNI.cmake ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ###############################################################################
2
+ # Find OpenNI
3
+ #
4
+ # find_package(OpenNI)
5
+ #
6
+ # Variables defined by this module:
7
+ #
8
+ # OPENNI_FOUND True if OpenNI was found
9
+ # OPENNI_INCLUDE_DIRS The location(s) of OpenNI headers
10
+ # OPENNI_LIBRARIES Libraries needed to use OpenNI
11
+ # OPENNI_DEFINITIONS Compiler flags for OpenNI
12
+
13
+ find_package(PkgConfig QUIET)
14
+ pkg_check_modules(PC_OPENNI QUIET libopenni)
15
+
16
+ set(OPENNI_DEFINITIONS ${PC_OPENNI_CFLAGS_OTHER})
17
+
18
+ set(OPENNI_SUFFIX)
19
+ if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
20
+ set(OPENNI_SUFFIX 64)
21
+ endif()
22
+
23
+ # Add a hint so that it can find it without the pkg-config
24
+ find_path(OPENNI_INCLUDE_DIR XnStatus.h
25
+ HINTS ${PC_OPENNI_INCLUDEDIR}
26
+ ${PC_OPENNI_INCLUDE_DIRS}
27
+ /usr/include/openni
28
+ /usr/include/ni
29
+ /opt/local/include/ni
30
+ "${OPENNI_ROOT}"
31
+ "$ENV{OPENNI_ROOT}"
32
+ PATHS "$ENV{OPEN_NI_INSTALL_PATH${OPENNI_SUFFIX}}/Include"
33
+ PATH_SUFFIXES openni include Include)
34
+
35
+ # Add a hint so that it can find it without the pkg-config
36
+ find_library(OPENNI_LIBRARY
37
+ NAMES OpenNI${OPENNI_SUFFIX}
38
+ HINTS ${PC_OPENNI_LIBDIR}
39
+ ${PC_OPENNI_LIBRARY_DIRS}
40
+ /usr/lib
41
+ "${OPENNI_ROOT}"
42
+ "$ENV{OPENNI_ROOT}"
43
+ PATHS "$ENV{OPEN_NI_LIB${OPENNI_SUFFIX}}"
44
+ PATH_SUFFIXES lib Lib Lib64)
45
+
46
+ if(OPENNI_INCLUDE_DIR AND OPENNI_LIBRARY)
47
+ set(OPENNI_INCLUDE_DIRS ${OPENNI_INCLUDE_DIR})
48
+ mark_as_advanced(OPENNI_INCLUDE_DIRS)
49
+
50
+ set(OPENNI_LIBRARIES ${OPENNI_LIBRARY})
51
+ mark_as_advanced(OPENNI_LIBRARIES)
52
+ endif()
53
+
54
+ include(FindPackageHandleStandardArgs)
55
+ find_package_handle_standard_args(OpenNI
56
+ FOUND_VAR OPENNI_FOUND
57
+ REQUIRED_VARS OPENNI_LIBRARIES OPENNI_INCLUDE_DIRS
58
+ )
third-party/DPVO/Pangolin/cmake/FindOpenNI2.cmake ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ###############################################################################
2
+ # Find OpenNI2
3
+ #
4
+ # This sets the following variables:
5
+ # OPENNI2_FOUND - True if OPENNI was found.
6
+ # OPENNI2_INCLUDE_DIRS - Directories containing the OPENNI include files.
7
+ # OPENNI2_LIBRARIES - Libraries needed to use OPENNI.
8
+
9
+ find_package(PkgConfig)
10
+ if(${CMAKE_VERSION} VERSION_LESS 2.8.2)
11
+ pkg_check_modules(PC_OPENNI openni2-dev)
12
+ else()
13
+ pkg_check_modules(PC_OPENNI QUIET openni2-dev)
14
+ endif()
15
+
16
+ set(OPENNI2_DEFINITIONS ${PC_OPENNI_CFLAGS_OTHER})
17
+
18
+ #add a hint so that it can find it without the pkg-config
19
+ find_path(OPENNI2_INCLUDE_DIR OpenNI.h
20
+ HINTS
21
+ ${PC_OPENNI_INCLUDEDIR}
22
+ ${PC_OPENNI_INCLUDE_DIRS}
23
+ PATHS
24
+ "${PROGRAM_FILES}/OpenNI2/Include"
25
+ "${CMAKE_SOURCE_DIR}/../OpenNI2/Include"
26
+ /usr/include
27
+ /user/include
28
+ PATH_SUFFIXES openni2 ni2
29
+ )
30
+
31
+ if(${CMAKE_CL_64})
32
+ set(OPENNI_PATH_SUFFIXES lib64 lib)
33
+ else()
34
+ set(OPENNI_PATH_SUFFIXES lib)
35
+ endif()
36
+
37
+ #add a hint so that it can find it without the pkg-config
38
+ find_library(OPENNI2_LIBRARY
39
+ NAMES OpenNI2
40
+ HINTS
41
+ ${PC_OPENNI_LIBDIR}
42
+ ${PC_OPENNI_LIBRARY_DIRS}
43
+ PATHS
44
+ "${PROGRAM_FILES}/OpenNI2/Redist"
45
+ "${PROGRAM_FILES}/OpenNI2"
46
+ "${CMAKE_SOURCE_DIR}/../OpenNI2/Bin/x64-Release"
47
+ /usr/lib
48
+ /user/lib
49
+ PATH_SUFFIXES ${OPENNI_PATH_SUFFIXES}
50
+ )
51
+
52
+ set(OPENNI2_INCLUDE_DIRS ${OPENNI2_INCLUDE_DIR})
53
+ set(OPENNI2_LIBRARIES ${OPENNI2_LIBRARY})
54
+
55
+ include(FindPackageHandleStandardArgs)
56
+ find_package_handle_standard_args(OpenNI2 DEFAULT_MSG
57
+ OPENNI2_LIBRARY OPENNI2_INCLUDE_DIR)
58
+
59
+ mark_as_advanced(OPENNI2_LIBRARY OPENNI2_INCLUDE_DIR)
third-party/DPVO/Pangolin/cmake/FindPleora.cmake ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find Pleora SDK
2
+ #
3
+ # Pleora_FOUND - system has pleora eUSB SDK
4
+ # Pleora_INCLUDE_DIRS - the pleora eUSB SDK include directories
5
+ # Pleora_LIBRARIES - link these to use pleora eUSB SDK
6
+ # Pleora_BASE_DIR - set env varivales to this to use pleora eUSB SDK
7
+
8
+ set( INCLUDE_SEARCH_PATHS
9
+ "/opt/pleora/ebus_sdk/Ubuntu-12.04-x86_64/include"
10
+ "/opt/pleora/ebus_sdk/Ubuntu-14.04-x86_64/include"
11
+ "$ENV{ProgramFiles}/Pleora Technologies Inc/eBUS SDK/Includes"
12
+ )
13
+
14
+ set( LIBRARIES_SEARCH_PATHS
15
+ "/opt/pleora/ebus_sdk/Ubuntu-12.04-x86_64/lib"
16
+ "/opt/pleora/ebus_sdk/Ubuntu-14.04-x86_64/lib"
17
+ "$ENV{ProgramFiles}/Pleora Technologies Inc/eBUS SDK/Libraries"
18
+ )
19
+
20
+ set( GENAPI_SEARCH_PATHS
21
+ "/opt/pleora/ebus_sdk/Ubuntu-12.04-x86_64/lib/genicam/bin/Linux64_x64"
22
+ "/opt/pleora/ebus_sdk/Ubuntu-12.04-x86_64/lib/genicam/bin/Linux32_ARM"
23
+ "/opt/pleora/ebus_sdk/Ubuntu-14.04-x86_64/lib/genicam/bin/Linux64_x64"
24
+ "/opt/pleora/ebus_sdk/Ubuntu-14.04-x86_64/lib/genicam/bin/Linux32_ARM"
25
+ "$ENV{ProgramW6432}/GenICam_v2_4/library/CPP/lib/Win64_x64"
26
+ )
27
+
28
+ IF (${CMAKE_CL_64})
29
+ set (LIB_NAME_SUFFIX "64")
30
+ ELSE()
31
+ set (LIB_NAME_SUFFIX "")
32
+ ENDIF()
33
+
34
+ # Find header files
35
+ FIND_PATH(
36
+ PVBASE_INCLUDE_DIR PvBase.h
37
+ HINTS ${PC_PLEORA_DIR}/include
38
+ PATHS ${INCLUDE_SEARCH_PATHS}
39
+ )
40
+ FIND_PATH(
41
+ PVDEVICE_INCLUDE_DIR PvDevice.h
42
+ HINTS ${PC_PLEORA_DIR}/include
43
+ PATHS ${INCLUDE_SEARCH_PATHS}
44
+ )
45
+ FIND_PATH(
46
+ PVBUFFER_INCLUDE_DIR PvBuffer.h
47
+ HINTS ${PC_PLEORA_DIR}/include
48
+ PATHS ${INCLUDE_SEARCH_PATHS}
49
+ )
50
+ FIND_PATH(
51
+ PVGENICAM_INCLUDE_DIR PvGenICamLib.h
52
+ HINTS ${PC_PLEORA_DIR}/include
53
+ PATHS ${INCLUDE_SEARCH_PATHS}
54
+ )
55
+ FIND_PATH(
56
+ PVSTREAM_INCLUDE_DIR PvStream.h
57
+ HINTS ${PC_PLEORA_DIR}/include
58
+ PATHS ${INCLUDE_SEARCH_PATHS}
59
+ )
60
+ FIND_PATH(
61
+ PVTRANSMITTER_INCLUDE_DIR PvTransmitterLib.h
62
+ HINTS ${PC_PLEORA_DIR}/include
63
+ PATHS ${INCLUDE_SEARCH_PATHS}
64
+ )
65
+ FIND_PATH(
66
+ PVVIRTUALDEVICE_INCLUDE_DIR PvVirtualDeviceLib.h
67
+ HINTS ${PC_PLEORA_DIR}/include
68
+ PATHS ${INCLUDE_SEARCH_PATHS}
69
+ )
70
+ FIND_PATH(
71
+ PVSAMPLEUTILS_INCLUDE_DIR PvSampleUtils.h
72
+ HINTS ${PC_PLEORA_DIR}/include
73
+ PATHS ${INCLUDE_SEARCH_PATHS}
74
+ )
75
+
76
+ # Find Library files
77
+ FIND_LIBRARY(
78
+ PVBASE_LIBRARY
79
+ NAMES "PvBase${LIB_NAME_SUFFIX}"
80
+ HINTS ${PC_PLEORA_DIR}/lib
81
+ PATH ${LIBRARIES_SEARCH_PATHS}
82
+ )
83
+ FIND_LIBRARY(
84
+ PVDEVICE_LIBRARY
85
+ NAMES "PvDevice${LIB_NAME_SUFFIX}"
86
+ HINTS ${PC_PLEORA_DIR}/lib
87
+ PATH ${LIBRARIES_SEARCH_PATHS}
88
+ )
89
+
90
+ FIND_LIBRARY(
91
+ PVBUFFER_LIBRARY
92
+ NAMES "PvBuffer${LIB_NAME_SUFFIX}"
93
+ HINTS ${PC_PLEORA_DIR}/lib
94
+ PATH ${LIBRARIES_SEARCH_PATHS}
95
+ )
96
+ FIND_LIBRARY(
97
+ PVGENICAM_LIBRARY
98
+ NAMES "PvGenICam${LIB_NAME_SUFFIX}"
99
+ HINTS ${PC_PLEORA_DIR}/lib
100
+ PATH ${LIBRARIES_SEARCH_PATHS}
101
+ )
102
+ FIND_LIBRARY(
103
+ PVSTREAM_LIBRARY
104
+ NAMES "PvStream${LIB_NAME_SUFFIX}"
105
+ HINTS ${PC_PLEORA_DIR}/lib
106
+ PATH ${LIBRARIES_SEARCH_PATHS}
107
+ )
108
+ FIND_LIBRARY(
109
+ PVTRANSMITTER_LIBRARY
110
+ NAMES "PvTransmitter${LIB_NAME_SUFFIX}"
111
+ HINTS ${PC_PLEORA_DIR}/lib
112
+ PATH ${LIBRARIES_SEARCH_PATHS}
113
+ )
114
+ FIND_LIBRARY(
115
+ PVVIRTUALDEVICE_LIBRARY
116
+ NAMES "PvVirtualDevice${LIB_NAME_SUFFIX}"
117
+ HINTS ${PC_PLEORA_DIR}/lib
118
+ PATH ${LIBRARIES_SEARCH_PATHS}
119
+ )
120
+ FIND_LIBRARY(
121
+ GENAPI_LIBRARY
122
+ NAMES GenApi_gcc40_v2_4 GenApi_gcc43_v2_4 GenApi_MD_VC80_v2_4
123
+ HINTS ${PC_GENAPI_LIBRARY_DIR}
124
+ PATH ${GENAPI_SEARCH_PATHS}
125
+ )
126
+
127
+ IF(PVBASE_INCLUDE_DIR AND PVDEVICE_INCLUDE_DIR AND PVBUFFER_INCLUDE_DIR AND PVGENICAM_INCLUDE_DIR AND PVSTREAM_INCLUDE_DIR AND PVTRANSMITTER_INCLUDE_DIR AND PVVIRTUALDEVICE_INCLUDE_DIR AND PVSAMPLEUTILS_INCLUDE_DIR AND PVBASE_LIBRARY AND PVDEVICE_LIBRARY AND PVBUFFER_LIBRARY AND PVGENICAM_LIBRARY AND PVSTREAM_LIBRARY AND PVTRANSMITTER_LIBRARY AND PVVIRTUALDEVICE_LIBRARY AND GENAPI_LIBRARY)
128
+ SET(Pleora_FOUND TRUE)
129
+ string(REGEX REPLACE "include$" "" Pleora_BASE_DIR ${PVBASE_INCLUDE_DIR})
130
+ SET(Pleora_LIBRARIES ${PVBASE_LIBRARY} ${PVDEVICE_LIBRARY} ${PVBUFFER_LIBRARY} ${PVGENICAM_LIBRARY} ${PVSTREAM_LIBRARY} ${PVTRANSMITTER_LIBRARY} ${PVVIRTUALDEVICE_LIBRARY} ${GENAPI_LIBRARY})
131
+ SET(Pleora_INCLUDE_DIRS ${PVBASE_INCLUDE_DIR} ${PVDEVICE_INCLUDE_DIR} ${PVBUFFER_INCLUDE_DIR} ${PVGENICAM_INCLUDE_DIR} ${PVSTREAM_INCLUDE_DIR} ${PVTRANSMITTER_INCLUDE_DIR} ${PVVIRTUALDEVICE_INCLUDE_DIR} ${PVSAMPLEUTILS_INCLUDE_DIR})
132
+ ENDIF()
133
+
134
+
135
+ IF (Pleora_FOUND)
136
+ IF (NOT Pleora_FIND_QUIETLY)
137
+ message(STATUS "Found Pleora: ${Pleora_LIBRARIES}")
138
+ ENDIF (NOT Pleora_FIND_QUIETLY)
139
+ ELSE (Pleora_FOUND)
140
+ IF (Pleora_FIND_REQUIRED)
141
+ message(FATAL_ERROR "Could not find Pleora")
142
+ ENDIF (Pleora_FIND_REQUIRED)
143
+ ENDIF (Pleora_FOUND)
third-party/DPVO/Pangolin/cmake/FindRealSense.cmake ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- mode: cmake; -*-
2
+ ###############################################################################
3
+ # Find realsense https://github.com/IntelRealSense/librealsense
4
+ #
5
+ # This sets the following variables:
6
+ # REALSENSE_FOUND - True if RealSense was found.
7
+ # REALSENSE_INCLUDE_DIRS - Directories containing the RealSense include files.
8
+ # REALSENSE_LIBRARIES - Libraries needed to use RealSense.
9
+ # REALSENSE_DEFINITIONS - Compiler flags for RealSense.
10
+ #
11
+ # File forked from augmented_dev, project of alantrrs
12
+ # (https://github.com/alantrrs/augmented_dev).
13
+
14
+ find_package(PkgConfig)
15
+ if(${CMAKE_VERSION} VERSION_LESS 2.8.2)
16
+ endif()
17
+
18
+ #add a hint so that it can find it without the pkg-config
19
+ find_path(REALSENSE_INCLUDE_DIR librealsense/rs.h
20
+ HINTS /usr/include/ /usr/local/include)
21
+ #add a hint so that it can find it without the pkg-config
22
+ find_library(REALSENSE_LIBRARY
23
+ NAMES realsense
24
+ HINTS /usr/lib /usr/local/lib )
25
+
26
+ set(REALSENSE_INCLUDE_DIRS ${REALSENSE_INCLUDE_DIR})
27
+ set(REALSENSE_LIBRARIES ${REALSENSE_LIBRARY})
28
+
29
+ include(FindPackageHandleStandardArgs)
30
+ find_package_handle_standard_args(RealSense DEFAULT_MSG
31
+ REALSENSE_LIBRARY REALSENSE_INCLUDE_DIR)
32
+
33
+ mark_as_advanced(REALSENSE_LIBRARY REALSENSE_INCLUDE_DIR)
third-party/DPVO/Pangolin/cmake/FindRealSense2.cmake ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- mode: cmake; -*-
2
+ ###############################################################################
3
+ # Find realsense2 https://github.com/IntelRealSense/librealsense
4
+ #
5
+ # This sets the following variables:
6
+ # REALSENSE2_FOUND - True if REALSENSE2 was found.
7
+ # REALSENSE2_INCLUDE_DIRS - Directories containing the REALSENSE2 include files.
8
+ # REALSENSE2_LIBRARIES - Libraries needed to use REALSENSE2.
9
+ # REALSENSE2_DEFINITIONS - Compiler flags for REALSENSE2.
10
+ #
11
+ # File forked from augmented_dev, project of alantrrs
12
+ # (https://github.com/alantrrs/augmented_dev).
13
+
14
+ find_package(PkgConfig)
15
+ if(${CMAKE_VERSION} VERSION_LESS 2.8.2)
16
+ endif()
17
+
18
+ #add a hint so that it can find it without the pkg-config
19
+ find_path(REALSENSE2_INCLUDE_DIR librealsense2/rs.h
20
+ HINTS /usr/include/ /usr/local/include)
21
+ #add a hint so that it can find it without the pkg-config
22
+ find_library(REALSENSE2_LIBRARY
23
+ NAMES realsense2
24
+ HINTS /usr/lib /usr/local/lib )
25
+
26
+ set(REALSENSE2_INCLUDE_DIRS ${REALSENSE2_INCLUDE_DIR})
27
+ set(REALSENSE2_LIBRARIES ${REALSENSE2_LIBRARY})
28
+
29
+ include(FindPackageHandleStandardArgs)
30
+ find_package_handle_standard_args(RealSense2 DEFAULT_MSG
31
+ REALSENSE2_LIBRARY REALSENSE2_INCLUDE_DIR)
32
+
33
+ mark_as_advanced(REALSENSE2_LIBRARY REALSENSE2_INCLUDE_DIR)
third-party/DPVO/Pangolin/cmake/FindTeliCam.cmake ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ###############################################################################
2
+ # Find Toshiba TeliCam
3
+ #
4
+ # This sets the following variables:
5
+ # TeliCam_FOUND - True if TeliCam was found.
6
+ # TeliCam_INCLUDE_DIRS - Directories containing the TeliCam include files.
7
+ # TeliCam_LIBRARIES - Libraries needed to use TeliCam.
8
+
9
+ find_path(
10
+ TeliCam_INCLUDE_DIR TeliCamApi.h
11
+ PATHS
12
+ "${PROGRAM_FILES}/Toshiba Teli/TeliCamSDK/TeliCamApi/Include"
13
+ "${CMAKE_SOURCE_DIR}/../TeliCamSDK/TeliCamApi/Include"
14
+ /usr/include
15
+ /user/include
16
+ /opt/TeliCamSDK/include
17
+ PATH_SUFFIXES TeliCam
18
+ )
19
+
20
+ if(${CMAKE_CL_64})
21
+ set(TELI_PATH_SUFFIXES x64)
22
+ else()
23
+ set(TELI_PATH_SUFFIXES x86)
24
+ endif()
25
+
26
+ find_library(
27
+ TeliCamApi_LIBRARY
28
+ NAMES TeliCamApi TeliCamApi64 TeliCamApi_64
29
+ PATHS
30
+ "${PROGRAM_FILES}/Toshiba Teli/TeliCamSDK/TeliCamApi/lib"
31
+ "${CMAKE_SOURCE_DIR}/../TeliCamSDK/TeliCamApi/lib"
32
+ /usr/lib
33
+ /user/lib
34
+ /opt/TeliCamSDK/lib
35
+ PATH_SUFFIXES ${TELI_PATH_SUFFIXES}
36
+ )
37
+
38
+ find_library(
39
+ TeliCamUtl_LIBRARY
40
+ NAMES TeliCamUtl TeliCamUtl64 TeliCamUtl_64
41
+ PATHS
42
+ "${PROGRAM_FILES}/Toshiba Teli/TeliCamSDK/TeliCamApi/lib"
43
+ "${CMAKE_SOURCE_DIR}/../TeliCamSDK/TeliCamApi/lib"
44
+ /usr/lib
45
+ /user/lib
46
+ /opt/TeliCamSDK/lib
47
+ PATH_SUFFIXES ${TELI_PATH_SUFFIXES}
48
+ )
49
+
50
+ set(TeliCam_INCLUDE_DIRS ${TeliCam_INCLUDE_DIR})
51
+ set(TeliCam_LIBRARY "${TeliCamApi_LIBRARY}" "${TeliCamUtl_LIBRARY}")
52
+ set(TeliCam_LIBRARIES ${TeliCam_LIBRARY})
53
+
54
+ include(FindPackageHandleStandardArgs)
55
+ find_package_handle_standard_args( TeliCam
56
+ FOUND_VAR TeliCam_FOUND
57
+ REQUIRED_VARS TeliCamApi_LIBRARY TeliCamUtl_LIBRARY TeliCam_INCLUDE_DIR
58
+ )
third-party/DPVO/Pangolin/cmake/FindTooN.cmake ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find libTooN
2
+ #
3
+ # TooN_FOUND - system has libTooN
4
+ # TooN_INCLUDE_DIR - the libTooN include directories
5
+
6
+ FIND_PATH(
7
+ TooN_INCLUDE_DIR
8
+ NAMES TooN/TooN.h
9
+ PATHS
10
+ ${CMAKE_SOURCE_DIR}
11
+ ${CMAKE_SOURCE_DIR}/..
12
+ /usr/include
13
+ /usr/local/include
14
+ )
15
+
16
+ IF(TooN_INCLUDE_DIR)
17
+ SET(TooN_FOUND TRUE)
18
+ ENDIF()
19
+
20
+ IF(TooN_FOUND)
21
+ IF(NOT TooN_FIND_QUIETLY)
22
+ MESSAGE(STATUS "Found TooN: ${TooN_INCLUDE_DIR}")
23
+ ENDIF()
24
+ ELSE()
25
+ IF(TooN_FIND_REQUIRED)
26
+ MESSAGE(FATAL_ERROR "Could not find TooN")
27
+ ENDIF()
28
+ ENDIF()
third-party/DPVO/Pangolin/cmake/FindXrandr.cmake ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find Xrandr
2
+ #
3
+ # Xrandr_FOUND - system has libXrandr
4
+ # Xrandr_INCLUDE_DIRS - the libXrandr include directories
5
+ # Xrandr_LIBRARIES - link these to use libXrandr
6
+
7
+ FIND_PATH(
8
+ Xrandr_INCLUDE_DIRS
9
+ NAMES X11/extensions/Xrandr.h
10
+ PATH_SUFFIXES X11/extensions
11
+ DOC "The Xrandr include directory"
12
+ )
13
+
14
+ FIND_LIBRARY(
15
+ Xrandr_LIBRARIES
16
+ NAMES Xrandr
17
+ DOC "The Xrandr library"
18
+ )
19
+
20
+ IF (Xrandr_INCLUDE_DIRS AND Xrandr_LIBRARIES)
21
+ SET(Xrandr_FOUND TRUE)
22
+ ENDIF (Xrandr_INCLUDE_DIRS AND Xrandr_LIBRARIES)
23
+
24
+ IF (Xrandr_FOUND)
25
+ IF (NOT Xrandr_FIND_QUIETLY)
26
+ MESSAGE(STATUS "Found Xrandr: ${Xrandr_LIBRARIES}")
27
+ ENDIF (NOT Xrandr_FIND_QUIETLY)
28
+ ELSE (Xrandr_FOUND)
29
+ IF (Xrandr_FIND_REQUIRED)
30
+ MESSAGE(FATAL_ERROR "Could not find Xrandr")
31
+ ENDIF (Xrandr_FIND_REQUIRED)
32
+ ENDIF (Xrandr_FOUND)
third-party/DPVO/Pangolin/cmake/Findlibusb1.cmake ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find libusb1
2
+ #
3
+ # libusb1_FOUND - system has libusb1
4
+ # libusb1_INCLUDE_DIRS - the libusb1 include directories
5
+ # libusb1_LIBRARIES - link these to use libusb1
6
+
7
+ FIND_PATH(
8
+ libusb1_INCLUDE_DIRS
9
+ NAMES libusb-1.0/libusb.h
10
+ PATHS
11
+ c:/dev/sysroot32/usr/include
12
+ ${CMAKE_SOURCE_DIR}/../libusb1/include
13
+ /usr/include/
14
+ /usr/local/include
15
+ /opt/local/include
16
+ )
17
+
18
+ FIND_LIBRARY(
19
+ libusb1_LIBRARIES
20
+ NAMES usb-1.0
21
+ PATHS
22
+ c:/dev/sysroot32/usr/lib
23
+ ${CMAKE_SOURCE_DIR}/../libusb1/lib
24
+ /usr/lib
25
+ /usr/lib64
26
+ /usr/local/lib
27
+ /opt/local/lib
28
+ )
29
+
30
+ IF(libusb1_INCLUDE_DIRS AND libusb1_LIBRARIES)
31
+ SET(libusb1_FOUND TRUE)
32
+ ENDIF(libusb1_INCLUDE_DIRS AND libusb1_LIBRARIES)
33
+
34
+ IF(libusb1_FOUND)
35
+ IF(NOT libusb1_FIND_QUIETLY)
36
+ MESSAGE(STATUS "Found libusb1: ${libusb1_LIBRARIES}")
37
+ ENDIF(NOT libusb1_FIND_QUIETLY)
38
+ ELSE(libusb1_FOUND)
39
+ message(STATUS "libusb1 NOT found")
40
+ IF(libusb1_FIND_REQUIRED)
41
+ MESSAGE(FATAL_ERROR "Could not find libusb1")
42
+ ENDIF(libusb1_FIND_REQUIRED)
43
+ ENDIF(libusb1_FOUND)
third-party/DPVO/Pangolin/cmake/Findpthread.cmake ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find pthread
2
+ #
3
+ # pthread_FOUND - system has pthread
4
+ # pthread_INCLUDE_DIRS - the pthread include directories
5
+ # pthread_LIBRARIES - link these to use pthread
6
+
7
+ FIND_PATH(
8
+ pthread_INCLUDE_DIRS
9
+ NAMES pthread.h
10
+ PATHS
11
+ c:/dev/sysroot32/usr/include
12
+ ${CMAKE_SOURCE_DIR}/../pthread/include
13
+ /usr/include/
14
+ /usr/local/include
15
+ /opt/local/include
16
+ )
17
+
18
+ FIND_LIBRARY(
19
+ pthread_LIBRARIES
20
+ NAMES pthreadVSE2 pthread
21
+ PATHS
22
+ c:/dev/sysroot32/usr/lib
23
+ ${CMAKE_SOURCE_DIR}/../pthread/lib
24
+ /usr/lib
25
+ /usr/local/lib
26
+ /opt/local/lib
27
+ )
28
+
29
+ IF(pthread_INCLUDE_DIRS AND pthread_LIBRARIES)
30
+ SET(pthread_FOUND TRUE)
31
+ ENDIF(pthread_INCLUDE_DIRS AND pthread_LIBRARIES)
32
+
33
+ IF(pthread_FOUND)
34
+ IF(NOT pthread_FIND_QUIETLY)
35
+ MESSAGE(STATUS "Found pthread: ${pthread_LIBRARIES}")
36
+ ENDIF(NOT pthread_FIND_QUIETLY)
37
+ ELSE(pthread_FOUND)
38
+ message(STATUS "pthread NOT found")
39
+ IF(pthread_FIND_REQUIRED)
40
+ MESSAGE(FATAL_ERROR "Could not find pthread")
41
+ ENDIF(pthread_FIND_REQUIRED)
42
+ ENDIF(pthread_FOUND)
third-party/DPVO/Pangolin/cmake/Finduvc.cmake ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # - Try to find uvc
2
+ #
3
+ # uvc_FOUND - system has libuvc
4
+ # uvc_INCLUDE_DIRS - the libuvc include directories
5
+ # uvc_LIBRARIES - link these to use libuvc
6
+
7
+ FIND_PATH(
8
+ uvc_INCLUDE_DIRS
9
+ NAMES libuvc/libuvc.h
10
+ PATHS
11
+ ${CMAKE_SOURCE_DIR}/..
12
+ /usr/include/
13
+ /usr/local/include
14
+ /opt/local/include
15
+ )
16
+
17
+ FIND_LIBRARY(
18
+ uvc_LIBRARIES
19
+ NAMES uvc
20
+ PATHS
21
+ ${CMAKE_SOURCE_DIR}/../uvc/build
22
+ /usr/lib
23
+ /usr/local/lib
24
+ /opt/local/lib
25
+ )
26
+
27
+ IF (uvc_INCLUDE_DIRS AND uvc_LIBRARIES)
28
+ SET(uvc_FOUND TRUE)
29
+ ENDIF (uvc_INCLUDE_DIRS AND uvc_LIBRARIES)
30
+
31
+ IF (uvc_FOUND)
32
+ IF (NOT uvc_FIND_QUIETLY)
33
+ MESSAGE(STATUS "Found uvc: ${uvc_LIBRARIES}")
34
+ ENDIF (NOT uvc_FIND_QUIETLY)
35
+ ELSE (uvc_FOUND)
36
+ IF (uvc_FIND_REQUIRED)
37
+ MESSAGE(FATAL_ERROR "Could not find uvc")
38
+ ENDIF (uvc_FIND_REQUIRED)
39
+ ENDIF (uvc_FOUND)
third-party/DPVO/Pangolin/cmake/Findzstd.cmake ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ###############################################################################
2
+ # Find Toshiba TeliCam
3
+ #
4
+ # This sets the following variables:
5
+ # TeliCam_FOUND - True if TeliCam was found.
6
+ # TeliCam_INCLUDE_DIRS - Directories containing the TeliCam include files.
7
+ # TeliCam_LIBRARIES - Libraries needed to use TeliCam.
8
+
9
+ find_path(
10
+ zstd_INCLUDE_DIR zstd.h
11
+ PATHS
12
+ /opt/local/include
13
+ /usr/local/include
14
+ /usr/include
15
+ PATH_SUFFIXES TeliCam
16
+ )
17
+
18
+ find_library(
19
+ zstd_LIBRARY
20
+ NAMES zstd
21
+ PATHS
22
+ /opt/local/lib
23
+ /user/local/lib
24
+ /usr/lib
25
+ )
26
+
27
+ # Plural forms
28
+ set(zstd_INCLUDE_DIRS ${zstd_INCLUDE_DIR})
29
+ set(zstd_LIBRARIES ${zstd_LIBRARY})
30
+
31
+ include(FindPackageHandleStandardArgs)
32
+ find_package_handle_standard_args( zstd
33
+ FOUND_VAR zstd_FOUND
34
+ REQUIRED_VARS zstd_INCLUDE_DIR zstd_LIBRARY
35
+ )
third-party/DPVO/Pangolin/cmake/MakePythonWheel.cmake ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Useful references:
2
+ # https://thomastrapp.com/blog/building-a-pypi-package-for-a-modern-cpp-project/ for reference
3
+ # https://www.benjack.io/2017/06/12/python-cpp-tests.html also interesting
4
+ # https://www.python.org/dev/peps/pep-0427/ the official package format description
5
+
6
+ set(_MAKE_PYTHON_WHEEL_LIST_DIR "${CMAKE_CURRENT_LIST_DIR}")
7
+
8
+ function( MakeWheel python_module)
9
+ cmake_parse_arguments(MAKEWHEEL "PRINT_HELP" "MODULE;VERSION;SUMMARY;DESCRIPTION;HOMEPAGE;AUTHOR;EMAIL;LICENCE" "REQUIRES" ${ARGN} )
10
+ set(version ${MAKEWHEEL_VERSION})
11
+
12
+ execute_process(
13
+ COMMAND ${Python_EXECUTABLE} -c "
14
+ from setuptools.dist import Distribution
15
+ from setuptools import Extension
16
+
17
+ def wheel_name(**kwargs):
18
+ # create a fake distribution from arguments
19
+ dist = Distribution(attrs=kwargs)
20
+ # finalize bdist_wheel command
21
+ bdist_wheel_cmd = dist.get_command_obj('bdist_wheel')
22
+ bdist_wheel_cmd.ensure_finalized()
23
+ # assemble wheel file name
24
+ distname = bdist_wheel_cmd.wheel_dist_name
25
+ tag = '-'.join(bdist_wheel_cmd.get_tag())
26
+ return f'{distname};{tag}'
27
+
28
+ print(wheel_name(name='${python_module}', version='${version}', ext_modules=[Extension('dummy', ['summy.c'])]))
29
+ "
30
+ OUTPUT_VARIABLE wheel_filename
31
+ OUTPUT_STRIP_TRAILING_WHITESPACE
32
+ ERROR_QUIET
33
+ )
34
+ if(NOT wheel_filename)
35
+ message(STATUS "Python module `setuptools` required for correct wheel filename generation. Please install if needed.")
36
+ set(wheel_filename "unknown;unknown")
37
+ endif()
38
+
39
+ list(GET wheel_filename 0 distname)
40
+ list(GET wheel_filename 1 platformtag)
41
+ set(complete_tag "${distname}-${platformtag}")
42
+
43
+ set(wheel_filename "${CMAKE_BINARY_DIR}/${complete_tag}.whl")
44
+ set(wheel_distinfo "${CMAKE_BINARY_DIR}/${python_module}-${version}.dist-info")
45
+ set(wheel_data "${CMAKE_BINARY_DIR}/${python_module}-${version}.data")
46
+ set(wheel_generator_string "pango_wheelgen_${version}")
47
+
48
+ if( MAKEWHEEL_REQUIRES )
49
+ set(MAKEWHEEL_REQUIRES "Requires-Dist: ${MAKEWHEEL_REQUIRES}")
50
+ string(REPLACE ";" "\nRequires-Dist: " MAKEWHEEL_REQUIRES "${MAKEWHEEL_REQUIRES}")
51
+ endif()
52
+
53
+ ##########################################
54
+ ## Create dist info folder
55
+ file(GLOB wheel_info_files "${_MAKE_PYTHON_WHEEL_LIST_DIR}/wheel-dist-info/*" )
56
+ file(WRITE "${wheel_distinfo}/RECORD" "")
57
+ foreach(template_path ${wheel_info_files})
58
+ get_filename_component(template_name "${template_path}" NAME)
59
+ configure_file( ${template_path} "${wheel_distinfo}/${template_name}" )
60
+ file(SHA256 "${template_path}" file_sha)
61
+ file (SIZE "${template_path}" file_size)
62
+ file(APPEND "${wheel_distinfo}/RECORD" "${python_module}-${version}.dist-info/${template_name},sha256=${file_sha},${file_size}\n")
63
+ endforeach()
64
+
65
+ # TODO: Add line in RECORD for .so module itself (needs to be build time)
66
+
67
+ ##########################################
68
+ ## Place module into data folder
69
+ set_target_properties( ${python_module} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${wheel_data}/purelib")
70
+
71
+ ##########################################
72
+ ## Rule for creating file wheel zip
73
+ add_custom_command(
74
+ OUTPUT ${wheel_filename}
75
+ DEPENDS ${python_module}
76
+ COMMAND ${CMAKE_COMMAND} -E tar cf ${wheel_filename} --format=zip -- ${wheel_distinfo} ${wheel_data}
77
+ COMMENT "Creating Wheel ${wheel_filename}"
78
+ VERBATIM
79
+ )
80
+
81
+ ##########################################
82
+ ## Create a friendlier target name we can refer to
83
+ add_custom_target("${python_module}_wheel" DEPENDS "${wheel_filename}")
84
+
85
+ add_custom_target(
86
+ "${python_module}_pip_install"
87
+ DEPENDS "${python_module}_wheel"
88
+ COMMAND ${Python_EXECUTABLE} -mpip install "${wheel_filename}" --force-reinstall
89
+ COMMENT "Installing for selected Python '${Python_EXECUTABLE}'"
90
+ )
91
+
92
+ add_custom_target(
93
+ "${python_module}_pip_uninstall"
94
+ COMMAND ${Python_EXECUTABLE} -mpip uninstall -y ${python_module}
95
+ )
96
+
97
+ ##########################################
98
+ ## Help message since this is tricky for people
99
+ if(MAKEWHEEL_PRINT_HELP)
100
+ message(STATUS "Selected Python: '${Python_EXECUTABLE}'. cmake --build . -t ${python_module}_pip_install to use ${python_module} module.")
101
+ endif()
102
+ endfunction()
103
+
104
+
third-party/DPVO/Pangolin/cmake/PangolinConfig.cmake.in ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Compute paths
2
+ get_filename_component( PROJECT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH )
3
+
4
+ # Library dependencies (contains definitions for IMPORTED targets)
5
+ if( NOT @PROJECT_NAME@_BINARY_DIR )
6
+ include( "${PROJECT_CMAKE_DIR}/@[email protected]" )
7
+ endif()
8
+
9
+ SET( Pangolin_CMAKEMODULES @CMAKE_CURRENT_SOURCE_DIR@/cmake )
10
+ SET( Pangolin_LIBRARIES @component_list@ )
11
+ SET( Pangolin_LIBRARY "${Pangolin_LIBRARIES}" )
12
+
13
+ include(CMakeFindDependencyMacro)
14
+ find_dependency(Eigen3)
15
+
16
+ if (UNIX)
17
+ find_dependency(Threads)
18
+ endif()
third-party/DPVO/Pangolin/cmake/PangolinConfigVersion.cmake.in ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ set(PACKAGE_VERSION "@PANGOLIN_VERSION@")
2
+
3
+ # Check build type is valid
4
+ if( "System:${CMAKE_SYSTEM_NAME},Win64:${CMAKE_CL_64},Android:${ANDROID},iOS:${IOS}" STREQUAL
5
+ "System:@CMAKE_SYSTEM_NAME@,Win64:@CMAKE_CL_64@,Android:@ANDROID@,iOS:@IOS@" )
6
+ # Check whether the requested PACKAGE_FIND_VERSION is compatible
7
+ if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
8
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
9
+ else()
10
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
11
+ if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
12
+ set(PACKAGE_VERSION_EXACT TRUE)
13
+ endif()
14
+ endif()
15
+ else()
16
+ set(PACKAGE_VERSION_COMPATIBLE FALSE)
17
+ endif()
third-party/DPVO/Pangolin/cmake/PangolinFactory.cmake ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Provide factory names as list of arguments to use for later
2
+ macro( PangolinRegisterFactory interface_name)
3
+ list(APPEND PANGO_FACTORY_INTERFACES "${interface_name}")
4
+ list(REMOVE_DUPLICATES PANGO_FACTORY_INTERFACES)
5
+ foreach(arg ${ARGN})
6
+ list(APPEND PANGO_FACTORY_${interface_name} "${arg}")
7
+ endforeach()
8
+ endmacro()
9
+
10
+ # Actually Create the method call file
11
+ macro(create_factory_registry_file_now filename namespace interface_name)
12
+ list(APPEND factory_names ${ARGN})
13
+
14
+ file(WRITE ${filename} "// CMake generated file. Do Not Edit.\n\n#pragma once\n\nnamespace ${namespace} {\n\n")
15
+
16
+ file(APPEND ${filename} " // Forward declarations\n")
17
+ foreach(factory_name ${factory_names})
18
+ # file(APPEND ${filename} " bool Load${factory_name}Success;\n")
19
+ file(APPEND ${filename} " bool Register${factory_name}Factory();\n")
20
+ endforeach()
21
+
22
+ file(APPEND ${filename} "\n\n")
23
+
24
+ file(APPEND ${filename} " inline bool RegisterFactories${interface_name}() {\n")
25
+ file(APPEND ${filename} " bool success = true;\n")
26
+
27
+ foreach(factory_name ${factory_names})
28
+ # file(APPEND ${filename} " success &= Load${factory_name}Success;\n")
29
+ file(APPEND ${filename} " success &= Register${factory_name}Factory();\n")
30
+ endforeach()
31
+ file(APPEND ${filename} " return success;\n")
32
+ file(APPEND ${filename} " }\n")
33
+
34
+ file(APPEND ${filename} "\n\n} // ${namespace}\n")
35
+ endmacro()
36
+
37
+ # Sets up target for creating the file.
38
+ macro(create_factory_registry_file directory interface_name)
39
+ set(filename "${directory}/RegisterFactories${interface_name}.h")
40
+ add_custom_command(
41
+ OUTPUT ${filename}
42
+ DEPENDS ${PROJECT_SOURCE_DIR}/cmake/PangolinFactory.cmake
43
+ COMMAND
44
+ ${CMAKE_COMMAND} -DFILENAME=${filename}
45
+ -DNAMESPACE=pangolin
46
+ -DINTERFACE_NAME=${interface_name}
47
+ "\"-DFACTORY_NAMES=${PANGO_FACTORY_${interface_name}}\""
48
+ -P ${PROJECT_SOURCE_DIR}/cmake/PangolinFactory.cmake
49
+ COMMENT "Creating ${filename} factory registry header"
50
+ )
51
+ endmacro()
52
+
53
+ if(CMAKE_SCRIPT_MODE_FILE AND NOT CMAKE_PARENT_LIST_FILE)
54
+ # Running in script mode as part of build-time procedure to actually to the thing
55
+ create_factory_registry_file_now(${FILENAME} ${NAMESPACE} ${INTERFACE_NAME} ${FACTORY_NAMES} )
56
+ endif()
third-party/DPVO/Pangolin/cmake/SetPlatformVars.cmake ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Compiler configuration
2
+ IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
3
+ SET(_GCC_ 1)
4
+ ENDIF()
5
+
6
+ IF(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
7
+ SET(_CLANG_ 1)
8
+ ENDIF()
9
+
10
+ IF(MSVC)
11
+ SET(_MSVC_ 1)
12
+ ENDIF()
13
+
14
+ ## Platform configuration
15
+
16
+ IF(WIN32 OR WIN64)
17
+ SET(_WIN_ 1)
18
+ ENDIF()
19
+
20
+ IF(UNIX)
21
+ SET(_UNIX_ 1)
22
+ ENDIF()
23
+
24
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
25
+ SET(_OSX_ 1)
26
+ ENDIF()
27
+
28
+ IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
29
+ SET(_LINUX_ 1)
30
+ ENDIF()
31
+
32
+ IF(ANDROID)
33
+ SET(_ANDROID_ 1)
34
+ ENDIF()
35
+
36
+ IF(IOS)
37
+ SET(_APPLE_IOS_ 1)
38
+ ENDIF()
39
+
40
+
41
+
42
+ ## Default search paths
43
+
44
+ IF(_WIN_)
45
+ IF(${CMAKE_CL_64})
46
+ LIST(APPEND CMAKE_INCLUDE_PATH "c:/dev/sysroot64/usr/include")
47
+ LIST(APPEND CMAKE_LIBRARY_PATH "c:/dev/sysroot64/usr/lib")
48
+ LIST(APPEND CMAKE_LIBRARY_PATH "c:/dev/sysroot64/usr/bin")
49
+ set(PROGRAM_FILES "$ENV{PROGRAMW6432}" )
50
+ ELSE()
51
+ LIST(APPEND CMAKE_INCLUDE_PATH "c:/dev/sysroot32/usr/include")
52
+ LIST(APPEND CMAKE_LIBRARY_PATH "c:/dev/sysroot32/usr/lib")
53
+ LIST(APPEND CMAKE_LIBRARY_PATH "c:/dev/sysroot32/usr/bin")
54
+ set(PROGRAM_FILES "$ENV{PROGRAMFILES}" )
55
+ ENDIF()
56
+ ENDIF()
third-party/DPVO/Pangolin/cmake/cmake_uninstall.cmake.in ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt")
2
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt")
3
+ endif()
4
+
5
+ file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files)
6
+ string(REGEX REPLACE "\n" ";" files "${files}")
7
+ foreach(file ${files})
8
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
9
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
10
+ exec_program(
11
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
12
+ OUTPUT_VARIABLE rm_out
13
+ RETURN_VALUE rm_retval
14
+ )
15
+ if(NOT "${rm_retval}" STREQUAL 0)
16
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
17
+ endif()
18
+ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
19
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
20
+ endif()
21
+ endforeach()
third-party/DPVO/Pangolin/cmake/wheel-dist-info/METADATA ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.1
2
+ Name: @python_module@
3
+ Version: @MAKEWHEEL_VERSION@
4
+ Summary: @MAKEWHEEL_SUMMARY@
5
+ Home-page: @MAKEWHEEL_HOMEPAGE@
6
+ Author: @MAKEWHEEL_AUTHOR@
7
+ Author-email: @MAKEWHEEL_EMAIL@
8
+ License: @MAKEWHEEL_LICENCE@
9
+ Description-Content-Type: text/markdown
10
+ @MAKEWHEEL_REQUIRES@
11
+
12
+ @MAKEWHEEL_DESCRIPTION@
third-party/DPVO/Pangolin/cmake/wheel-dist-info/WHEEL ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ Wheel-Version: 1.0
2
+ Generator: @wheel_generator_string@
3
+ Root-Is-Purelib: false
4
+ Tag: @complete_tag@
5
+
third-party/DPVO/Pangolin/cmake/wheel-dist-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ @python_module@
third-party/DPVO/evaluate_icl_nuim.py ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import glob
2
+ import os
3
+ from multiprocessing import Process, Queue
4
+ from pathlib import Path
5
+
6
+ import cv2
7
+ import evo.main_ape as main_ape
8
+ import numpy as np
9
+ import torch
10
+ from evo.core import sync
11
+ from evo.core.metrics import PoseRelation
12
+ from evo.core.trajectory import PoseTrajectory3D
13
+ from evo.tools import file_interface
14
+
15
+ from dpvo.config import cfg
16
+ from dpvo.dpvo import DPVO
17
+ from dpvo.plot_utils import plot_trajectory
18
+ from dpvo.stream import image_stream
19
+ from dpvo.utils import Timer
20
+
21
+ SKIP = 0
22
+
23
+ def show_image(image, t=0):
24
+ image = image.permute(1, 2, 0).cpu().numpy()
25
+ cv2.imshow('image', image / 255.0)
26
+ cv2.waitKey(t)
27
+
28
+ @torch.no_grad()
29
+ def run(cfg, network, imagedir, calib, stride=1, viz=False, show_img=False):
30
+
31
+ slam = None
32
+
33
+ queue = Queue(maxsize=8)
34
+ reader = Process(target=image_stream, args=(queue, imagedir, calib, stride, 0))
35
+ reader.start()
36
+
37
+ while 1:
38
+ (t, image, intrinsics) = queue.get()
39
+ if t < 0: break
40
+
41
+ image = torch.from_numpy(image).permute(2,0,1).cuda()
42
+ intrinsics = torch.from_numpy(intrinsics).cuda()
43
+
44
+ if show_img:
45
+ show_image(image, 1)
46
+
47
+ if slam is None:
48
+ slam = DPVO(cfg, network, ht=image.shape[1], wd=image.shape[2], viz=viz)
49
+
50
+ with Timer("SLAM", enabled=False):
51
+ slam(t, image, intrinsics)
52
+
53
+ reader.join()
54
+
55
+ return slam.terminate()
56
+
57
+
58
+ if __name__ == '__main__':
59
+ import argparse
60
+ parser = argparse.ArgumentParser()
61
+ parser.add_argument('--network', type=str, default='dpvo.pth')
62
+ parser.add_argument('--config', default="config/default.yaml")
63
+ parser.add_argument('--stride', type=int, default=2)
64
+ parser.add_argument('--viz', action="store_true")
65
+ parser.add_argument('--show_img', action="store_true")
66
+ parser.add_argument('--trials', type=int, default=1)
67
+ parser.add_argument('--iclnuim_dir', default="datasets/ICL_NUIM", type=Path)
68
+ parser.add_argument('--backend_thresh', type=float, default=64.0)
69
+ parser.add_argument('--plot', action="store_true")
70
+ parser.add_argument('--opts', nargs='+', default=[])
71
+ parser.add_argument('--save_trajectory', action="store_true")
72
+ args = parser.parse_args()
73
+
74
+ cfg.merge_from_file(args.config)
75
+ cfg.BACKEND_THRESH = args.backend_thresh
76
+ cfg.merge_from_list(args.opts)
77
+
78
+ print("\nRunning with config...")
79
+ print(cfg, "\n")
80
+
81
+ torch.manual_seed(1234)
82
+
83
+ scenes = [
84
+ "living_room_traj0_loop",
85
+ "living_room_traj1_loop",
86
+ "living_room_traj2_loop",
87
+ "living_room_traj3_loop",
88
+ "office_room_traj0_loop",
89
+ "office_room_traj1_loop",
90
+ "office_room_traj2_loop",
91
+ "office_room_traj3_loop",
92
+ ]
93
+
94
+ results = {}
95
+ for scene in scenes:
96
+ imagedir = args.iclnuim_dir / scene
97
+ if scene.startswith("living"):
98
+ groundtruth = args.iclnuim_dir / f"TrajectoryGT" / f"livingRoom{scene[-6]}.gt.freiburg"
99
+ elif scene.startswith("office"):
100
+ groundtruth = args.iclnuim_dir / f"TrajectoryGT" / f"traj{scene[-6]}.gt.freiburg"
101
+ traj_ref = file_interface.read_tum_trajectory_file(groundtruth)
102
+
103
+ scene_results = []
104
+ for i in range(args.trials):
105
+ traj_est, timestamps = run(cfg, args.network, imagedir, "calib/icl_nuim.txt", args.stride, args.viz, args.show_img)
106
+
107
+ images_list = sorted(glob.glob(os.path.join(imagedir, "*.png")))[::args.stride]
108
+ tstamps = np.arange(1, len(images_list)+1, args.stride, dtype=np.float64)
109
+
110
+ traj_est = PoseTrajectory3D(
111
+ positions_xyz=traj_est[:,:3],
112
+ orientations_quat_wxyz=traj_est[:, [6, 3, 4, 5]],
113
+ timestamps=tstamps)
114
+
115
+ traj_ref, traj_est = sync.associate_trajectories(traj_ref, traj_est)
116
+
117
+ result = main_ape.ape(traj_ref, traj_est, est_name='traj',
118
+ pose_relation=PoseRelation.translation_part, align=True, correct_scale=True)
119
+ ate_score = result.stats["rmse"]
120
+
121
+ if args.plot:
122
+ scene_name = scene.rstrip("_loop").title()
123
+ Path("trajectory_plots").mkdir(exist_ok=True)
124
+ plot_trajectory(traj_est, traj_ref, f"ICL_NUIM {scene_name} Trial #{i+1} (ATE: {ate_score:.03f})",
125
+ f"trajectory_plots/ICL_NUIM_{scene_name}_Trial{i+1:02d}.pdf", align=True, correct_scale=True)
126
+
127
+ if args.save_trajectory:
128
+ Path("saved_trajectories").mkdir(exist_ok=True)
129
+ file_interface.write_tum_trajectory_file(f"saved_trajectories/ICL_NUIM_{scene_name}_Trial{i+1:02d}.txt", traj_est)
130
+
131
+ scene_results.append(ate_score)
132
+
133
+ results[scene] = np.median(scene_results)
134
+ print(scene, sorted(scene_results))
135
+
136
+ xs = []
137
+ for scene in results:
138
+ print(scene, results[scene])
139
+ xs.append(results[scene])
140
+
141
+ print("AVG: ", np.mean(xs))
third-party/DPVO/evaluate_kitti.py ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from itertools import count
2
+ from multiprocessing import Process, Queue
3
+ from pathlib import Path
4
+
5
+ import cv2
6
+ import evo.main_ape as main_ape
7
+ import numpy as np
8
+ import torch
9
+ from evo.core import sync
10
+ from evo.core.metrics import PoseRelation
11
+ from evo.core.trajectory import PoseTrajectory3D
12
+ from evo.tools import file_interface, plot
13
+
14
+ from dpvo.config import cfg
15
+ from dpvo.dpvo import DPVO
16
+ from dpvo.plot_utils import plot_trajectory
17
+ from dpvo.utils import Timer
18
+
19
+ SKIP = 0
20
+
21
+ def show_image(image, t=0):
22
+ image = image.permute(1, 2, 0).cpu().numpy()
23
+ cv2.imshow('image', image / 255.0)
24
+ cv2.waitKey(t)
25
+
26
+ # From https://github.com/utiasSTARS/pykitti/blob/d3e1bb81676e831886726cc5ed79ce1f049aef2c/pykitti/utils.py#L68
27
+ def read_calib_file(filepath):
28
+ """Read in a calibration file and parse into a dictionary."""
29
+ data = {}
30
+
31
+ with open(filepath, 'r') as f:
32
+ for line in f.readlines():
33
+ key, value = line.split(':', 1)
34
+ # The only non-float values in these files are dates, which
35
+ # we don't care about anyway
36
+ try:
37
+ data[key] = np.array([float(x) for x in value.split()])
38
+ except ValueError:
39
+ pass
40
+
41
+ return data
42
+
43
+ def kitti_image_stream(queue, kittidir, sequence, stride, skip=0):
44
+ """ image generator """
45
+ images_dir = kittidir / "dataset" / "sequences" / sequence
46
+ image_list = sorted((images_dir / "image_2").glob("*.png"))[skip::stride]
47
+
48
+ calib = read_calib_file(images_dir / "calib.txt")
49
+ intrinsics = calib['P0'][[0, 5, 2, 6]]
50
+
51
+ for t, imfile in enumerate(image_list):
52
+ image_left = cv2.imread(str(imfile))
53
+ H, W, _ = image_left.shape
54
+ H, W = (H - H%4, W - W%4)
55
+ image_left = image_left[..., :H, :W, :]
56
+
57
+ queue.put((t, image_left, intrinsics))
58
+
59
+ queue.put((-1, image_left, intrinsics))
60
+
61
+ @torch.no_grad()
62
+ def run(cfg, network, kittidir, sequence, stride=1, viz=False, show_img=False):
63
+
64
+ slam = None
65
+
66
+ queue = Queue(maxsize=8)
67
+ reader = Process(target=kitti_image_stream, args=(queue, kittidir, sequence, stride, 0))
68
+ reader.start()
69
+
70
+ for step in count(start=1):
71
+ (t, image, intrinsics) = queue.get()
72
+ if t < 0: break
73
+
74
+ image = torch.as_tensor(image, device='cuda').permute(2,0,1)
75
+ intrinsics = torch.as_tensor(intrinsics, dtype=torch.float, device='cuda')
76
+
77
+ if show_img:
78
+ show_image(image, 1)
79
+
80
+ if slam is None:
81
+ slam = DPVO(cfg, network, ht=image.shape[-2], wd=image.shape[-1], viz=viz)
82
+
83
+ intrinsics = intrinsics.cuda()
84
+
85
+ with Timer("SLAM", enabled=False):
86
+ slam(t, image, intrinsics)
87
+
88
+ reader.join()
89
+
90
+ return slam.terminate()
91
+
92
+
93
+ if __name__ == '__main__':
94
+ import argparse
95
+ parser = argparse.ArgumentParser()
96
+ parser.add_argument('--network', type=str, default='dpvo.pth')
97
+ parser.add_argument('--config', default="config/default.yaml")
98
+ parser.add_argument('--stride', type=int, default=2)
99
+ parser.add_argument('--viz', action="store_true")
100
+ parser.add_argument('--show_img', action="store_true")
101
+ parser.add_argument('--trials', type=int, default=1)
102
+ parser.add_argument('--kittidir', type=Path, default="datasets/KITTI")
103
+ parser.add_argument('--backend_thresh', type=float, default=32.0)
104
+ parser.add_argument('--plot', action="store_true")
105
+ parser.add_argument('--opts', nargs='+', default=[])
106
+ parser.add_argument('--save_trajectory', action="store_true")
107
+ args = parser.parse_args()
108
+
109
+ cfg.merge_from_file(args.config)
110
+ cfg.BACKEND_THRESH = args.backend_thresh
111
+ cfg.merge_from_list(args.opts)
112
+
113
+ print("\nRunning with config...")
114
+ print(cfg, "\n")
115
+
116
+ torch.manual_seed(1234)
117
+
118
+ kitti_scenes = [f"{i:02d}" for i in range(11)]
119
+
120
+ results = {}
121
+ for scene in kitti_scenes:
122
+ groundtruth = args.kittidir / "dataset" / "poses" / f"{scene}.txt"
123
+ poses_ref = file_interface.read_kitti_poses_file(groundtruth)
124
+ print(f"Evaluating KITTI {scene} with {poses_ref.num_poses // args.stride} poses")
125
+
126
+ scene_results = []
127
+ for trial_num in range(args.trials):
128
+ traj_est, timestamps = run(cfg, args.network, args.kittidir, scene, args.stride, args.viz, args.show_img)
129
+
130
+ traj_est = PoseTrajectory3D(
131
+ positions_xyz=traj_est[:,:3],
132
+ orientations_quat_wxyz=traj_est[:, [6, 3, 4, 5]],
133
+ timestamps=timestamps * args.stride)
134
+
135
+ traj_ref = PoseTrajectory3D(
136
+ positions_xyz=poses_ref.positions_xyz,
137
+ orientations_quat_wxyz=poses_ref.orientations_quat_wxyz,
138
+ timestamps=np.arange(poses_ref.num_poses, dtype=np.float64))
139
+
140
+ traj_ref, traj_est = sync.associate_trajectories(traj_ref, traj_est)
141
+
142
+ result = main_ape.ape(traj_ref, traj_est, est_name='traj',
143
+ pose_relation=PoseRelation.translation_part, align=True, correct_scale=True)
144
+ ate_score = result.stats["rmse"]
145
+
146
+ if args.plot:
147
+ plot_trajectory(traj_est, traj_ref, f"kitti sequence {scene} Trial #{trial_num+1}", f"trajectory_plots/kitti_seq{scene}_trial{trial_num+1:02d}.pdf", align=True, correct_scale=True)
148
+
149
+ if args.save_trajectory:
150
+ Path("saved_trajectories").mkdir(exist_ok=True)
151
+ file_interface.write_tum_trajectory_file(f"saved_trajectories/KITTI_{scene}.txt", traj_est)
152
+ # file_interface.write_kitti_poses_file(f"saved_trajectories/{scene}.txt", traj_est) # standard kitti format
153
+
154
+ scene_results.append(ate_score)
155
+
156
+ results[scene] = np.median(scene_results)
157
+ print(scene, sorted(scene_results))
158
+
159
+ xs = []
160
+ for scene in results:
161
+ print(scene, results[scene])
162
+ xs.append(results[scene])
163
+
164
+ print("AVG: ", np.mean(xs))
165
+
166
+
167
+
168
+
third-party/DPVO/evaluate_tartan.py ADDED
@@ -0,0 +1,198 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import datetime
2
+ import glob
3
+ import os
4
+ import os.path as osp
5
+ from pathlib import Path
6
+
7
+ import cv2
8
+ import evo.main_ape as main_ape
9
+ import numpy as np
10
+ import torch
11
+ from evo.core.metrics import PoseRelation
12
+ from evo.core.trajectory import PoseTrajectory3D
13
+ from evo.tools import file_interface
14
+
15
+ from dpvo.config import cfg
16
+ from dpvo.data_readers.tartan import test_split as val_split
17
+ from dpvo.dpvo import DPVO
18
+ from dpvo.plot_utils import plot_trajectory
19
+ from dpvo.utils import Timer
20
+
21
+ test_split = \
22
+ ["MH%03d"%i for i in range(8)] + \
23
+ ["ME%03d"%i for i in range(8)]
24
+
25
+ STRIDE = 1
26
+ fx, fy, cx, cy = [320, 320, 320, 240]
27
+
28
+
29
+ def show_image(image, t=0):
30
+ image = image.permute(1, 2, 0).cpu().numpy()
31
+ cv2.imshow('image', image / 255.0)
32
+ cv2.waitKey(t)
33
+
34
+ def video_iterator(imagedir, ext=".png", preload=True):
35
+ imfiles = glob.glob(osp.join(imagedir, "*{}".format(ext)))
36
+
37
+ data_list = []
38
+ for imfile in sorted(imfiles)[::STRIDE]:
39
+ image = torch.from_numpy(cv2.imread(imfile)).permute(2,0,1)
40
+ intrinsics = torch.as_tensor([fx, fy, cx, cy])
41
+ data_list.append((image, intrinsics))
42
+
43
+ for (image, intrinsics) in data_list:
44
+ yield image.cuda(), intrinsics.cuda()
45
+
46
+ @torch.no_grad()
47
+ def run(imagedir, cfg, network, viz=False, show_img=False):
48
+ slam = DPVO(cfg, network, ht=480, wd=640, viz=viz)
49
+
50
+ for t, (image, intrinsics) in enumerate(video_iterator(imagedir)):
51
+ if show_img:
52
+ show_image(image, 1)
53
+
54
+ with Timer("SLAM", enabled=False):
55
+ slam(t, image, intrinsics)
56
+
57
+ return slam.terminate()
58
+
59
+
60
+ def ate(traj_ref, traj_est):
61
+ assert isinstance(traj_ref, PoseTrajectory3D)
62
+ assert isinstance(traj_est, PoseTrajectory3D)
63
+
64
+ result = main_ape.ape(traj_ref, traj_est, est_name='traj',
65
+ pose_relation=PoseRelation.translation_part, align=True, correct_scale=True)
66
+
67
+ return result.stats["rmse"]
68
+
69
+
70
+ @torch.no_grad()
71
+ def evaluate(config, net, split="validation", trials=1, plot=False, save=False):
72
+
73
+ if config is None:
74
+ config = cfg
75
+ config.merge_from_file("config/default.yaml")
76
+
77
+ if not os.path.isdir("TartanAirResults"):
78
+ os.mkdir("TartanAirResults")
79
+
80
+ scenes = test_split if split=="test" else val_split
81
+
82
+ results = {}
83
+ all_results = []
84
+ for i, scene in enumerate(scenes):
85
+
86
+ results[scene] = []
87
+ for j in range(trials):
88
+
89
+ # estimated trajectory
90
+ if split == 'test':
91
+ scene_path = os.path.join("datasets/mono", scene)
92
+ traj_ref = osp.join("datasets/mono", "mono_gt", scene + ".txt")
93
+
94
+ elif split == 'validation':
95
+ scene_path = os.path.join("datasets/TartanAir", scene, "image_left")
96
+ traj_ref = osp.join("datasets/TartanAir", scene, "pose_left.txt")
97
+
98
+ # run the slam system
99
+ traj_est, tstamps = run(scene_path, config, net, viz=False, show_img=False)
100
+
101
+ PERM = [1, 2, 0, 4, 5, 3, 6] # ned -> xyz
102
+ traj_ref = np.loadtxt(traj_ref, delimiter=" ")[::STRIDE, PERM]
103
+
104
+ traj_est = PoseTrajectory3D(
105
+ positions_xyz=traj_est[:,:3],
106
+ orientations_quat_wxyz=traj_est[:, [6, 3, 4, 5]],
107
+ timestamps=tstamps)
108
+
109
+ traj_ref = PoseTrajectory3D(
110
+ positions_xyz=traj_ref[:,:3],
111
+ orientations_quat_wxyz=traj_ref[:,3:],
112
+ timestamps=tstamps)
113
+
114
+ # do evaluation
115
+ ate_score = ate(traj_ref, traj_est)
116
+ all_results.append(ate_score)
117
+ results[scene].append(ate_score)
118
+
119
+ if plot:
120
+ scene_name = '_'.join(scene.split('/')[1:]).title() if split == 'validation' else scene
121
+ Path("trajectory_plots").mkdir(exist_ok=True)
122
+ plot_trajectory(traj_est, traj_ref, f"TartanAir {scene_name.replace('_', ' ')} Trial #{j+1} (ATE: {ate_score:.03f})",
123
+ f"trajectory_plots/TartanAir_{scene_name}_Trial{j+1:02d}.pdf", align=True, correct_scale=True)
124
+
125
+ if save:
126
+ Path("saved_trajectories").mkdir(exist_ok=True)
127
+ file_interface.write_tum_trajectory_file(f"saved_trajectories/TartanAir_{scene_name}_Trial{j+1:02d}.txt", traj_est)
128
+
129
+ print(scene, sorted(results[scene]))
130
+
131
+ results_dict = dict([("Tartan/{}".format(k), np.median(v)) for (k, v) in results.items()])
132
+
133
+ # write output to file with timestamp
134
+ with open(osp.join("TartanAirResults", datetime.datetime.now().strftime('%m-%d-%I%p.txt')), "w") as f:
135
+ f.write(','.join([str(x) for x in all_results]))
136
+
137
+ xs = []
138
+ for scene in results:
139
+ x = np.median(results[scene])
140
+ xs.append(x)
141
+
142
+ ates = list(all_results)
143
+ results_dict["AUC"] = np.maximum(1 - np.array(ates), 0).mean()
144
+ results_dict["AVG"] = np.mean(xs)
145
+
146
+ return results_dict
147
+
148
+
149
+ if __name__ == '__main__':
150
+
151
+ import argparse
152
+ parser = argparse.ArgumentParser()
153
+ parser.add_argument('--viz', action="store_true")
154
+ parser.add_argument('--show_img', action="store_true")
155
+ parser.add_argument('--id', type=int, default=-1)
156
+ parser.add_argument('--weights', default="dpvo.pth")
157
+ parser.add_argument('--config', default="config/default.yaml")
158
+ parser.add_argument('--split', default="validation")
159
+ parser.add_argument('--trials', type=int, default=1)
160
+ parser.add_argument('--backend_thresh', type=float, default=18.0)
161
+ parser.add_argument('--plot', action="store_true")
162
+ parser.add_argument('--opts', nargs='+', default=[])
163
+ parser.add_argument('--save_trajectory', action="store_true")
164
+ args = parser.parse_args()
165
+
166
+ cfg.merge_from_file(args.config)
167
+ cfg.BACKEND_THRESH = args.backend_thresh
168
+ cfg.merge_from_list(args.opts)
169
+
170
+ print("Running with config...")
171
+ print(cfg)
172
+
173
+ torch.manual_seed(1234)
174
+
175
+ if args.id >= 0:
176
+ scene_path = os.path.join("datasets/mono", test_split[args.id])
177
+ traj_est, tstamps = run(scene_path, cfg, args.weights, viz=args.viz, show_img=args.show_img)
178
+
179
+ traj_ref = osp.join("datasets/mono", "mono_gt", test_split[args.id] + ".txt")
180
+ traj_ref = np.loadtxt(traj_ref, delimiter=" ")[::STRIDE,[1, 2, 0, 4, 5, 3, 6]]
181
+
182
+ traj_est = PoseTrajectory3D(
183
+ positions_xyz=traj_est[:,:3],
184
+ orientations_quat_wxyz=traj_est[:, [6, 3, 4, 5]],
185
+ timestamps=tstamps)
186
+
187
+ traj_ref = PoseTrajectory3D(
188
+ positions_xyz=traj_ref[:,:3],
189
+ orientations_quat_wxyz=traj_ref[:,3:],
190
+ timestamps=tstamps)
191
+
192
+ # do evaluation
193
+ print(ate(traj_ref, traj_est))
194
+
195
+ else:
196
+ results = evaluate(cfg, args.weights, split=args.split, trials=args.trials, plot=args.plot, save=args.save_trajectory)
197
+ for k in results:
198
+ print(k, results[k])
third-party/DPVO/evaluate_tum.py ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import sys
2
+ from multiprocessing import Process, Queue
3
+ from pathlib import Path
4
+
5
+ import cv2
6
+ import evo.main_ape as main_ape
7
+ import numpy as np
8
+ import torch
9
+ from evo.core import sync
10
+ from evo.core.metrics import PoseRelation
11
+ from evo.core.trajectory import PoseTrajectory3D
12
+ from evo.tools import file_interface, plot
13
+
14
+ from dpvo.config import cfg
15
+ from dpvo.dpvo import DPVO
16
+ from dpvo.plot_utils import plot_trajectory
17
+ from dpvo.utils import Timer
18
+
19
+ SKIP = 0
20
+
21
+ def show_image(image, t=0):
22
+ image = image.permute(1, 2, 0).cpu().numpy()
23
+ cv2.imshow('image', image / 255.0)
24
+ cv2.waitKey(t)
25
+
26
+ def tum_image_stream(queue, scene_dir, sequence, stride, skip=0):
27
+ """ image generator """
28
+ images_dir = scene_dir / "rgb"
29
+
30
+ fx, fy, cx, cy = 517.3, 516.5, 318.6, 255.3
31
+
32
+ K_l = np.array([fx, 0.0, cx, 0.0, fy, cy, 0.0, 0.0, 1.0]).reshape(3,3)
33
+ d_l = np.array([0.2624, -0.9531, -0.0054, 0.0026, 1.1633])
34
+
35
+ image_list = sorted(images_dir.glob("*.png"))[skip::stride]
36
+
37
+ for imfile in image_list:
38
+ image = cv2.imread(str(imfile))
39
+ image = cv2.undistort(image, K_l, d_l)
40
+ image = image.transpose(2,0,1)
41
+
42
+ intrinsics = np.asarray([fx, fy, cx, cy])
43
+
44
+ # crop image to remove distortion boundary
45
+ intrinsics[2] -= 16
46
+ intrinsics[3] -= 8
47
+ # intrinsics = intrinsics[None]
48
+ image = image[:, 8:-8, 16:-16]
49
+
50
+ queue.put((float(imfile.stem), image, intrinsics))
51
+
52
+ queue.put((-1, image, intrinsics))
53
+
54
+ @torch.no_grad()
55
+ def run(cfg, network, scene_dir, sequence, stride=1, viz=False, show_img=False):
56
+
57
+ slam = None
58
+
59
+ queue = Queue(maxsize=8)
60
+ reader = Process(target=tum_image_stream, args=(queue, scene_dir, sequence, stride, 0))
61
+ reader.start()
62
+
63
+ for step in range(sys.maxsize):
64
+ (t, images, intrinsics) = queue.get()
65
+ if t < 0: break
66
+
67
+ images = torch.as_tensor(images, device='cuda')
68
+ intrinsics = torch.as_tensor(intrinsics, dtype=torch.float, device='cuda')
69
+
70
+ if show_img:
71
+ show_image(images[0], 1)
72
+
73
+ if slam is None:
74
+ slam = DPVO(cfg, network, ht=images.shape[-2], wd=images.shape[-1], viz=viz)
75
+
76
+ intrinsics = intrinsics.cuda()
77
+
78
+ with Timer("SLAM", enabled=False):
79
+ slam(t, images, intrinsics)
80
+
81
+ reader.join()
82
+
83
+ poses, tstamps = slam.terminate()
84
+ np.save(f"poses_{sequence}.npy", poses)
85
+ np.save(f"tstamps_{sequence}.npy", tstamps)
86
+ return poses, tstamps
87
+
88
+
89
+ if __name__ == '__main__':
90
+ import argparse
91
+ parser = argparse.ArgumentParser()
92
+ parser.add_argument('--network', type=str, default='dpvo.pth')
93
+ parser.add_argument('--config', default="config/default.yaml")
94
+ parser.add_argument('--stride', type=int, default=1)
95
+ parser.add_argument('--viz', action="store_true")
96
+ parser.add_argument('--show_img', action="store_true")
97
+ parser.add_argument('--trials', type=int, default=1)
98
+ parser.add_argument('--tumdir', type=Path, default="datasets/TUM_RGBD")
99
+ parser.add_argument('--backend_thresh', type=float, default=64.0)
100
+ parser.add_argument('--plot', action="store_true")
101
+ parser.add_argument('--opts', nargs='+', default=[])
102
+ parser.add_argument('--save_trajectory', action="store_true")
103
+ args = parser.parse_args()
104
+
105
+ cfg.merge_from_file(args.config)
106
+ cfg.BACKEND_THRESH = args.backend_thresh
107
+ cfg.merge_from_list(args.opts)
108
+
109
+ print("\nRunning with config...")
110
+ print(cfg, "\n")
111
+
112
+ torch.manual_seed(1234)
113
+
114
+ tum_scenes = [
115
+ "rgbd_dataset_freiburg1_360",
116
+ "rgbd_dataset_freiburg1_desk",
117
+ "rgbd_dataset_freiburg1_desk2",
118
+ "rgbd_dataset_freiburg1_floor",
119
+ "rgbd_dataset_freiburg1_plant",
120
+ "rgbd_dataset_freiburg1_room",
121
+ "rgbd_dataset_freiburg1_rpy",
122
+ "rgbd_dataset_freiburg1_teddy",
123
+ "rgbd_dataset_freiburg1_xyz",
124
+ ]
125
+
126
+ results = {}
127
+ for scene in tum_scenes:
128
+ scene_dir = args.tumdir / f"{scene}"
129
+ groundtruth = scene_dir / "groundtruth.txt"
130
+ traj_ref = file_interface.read_tum_trajectory_file(groundtruth)
131
+
132
+ scene_results = []
133
+ for trial_num in range(args.trials):
134
+ traj_est, timestamps = run(cfg, args.network, scene_dir, scene, args.stride, args.viz, args.show_img)
135
+
136
+ traj_est = PoseTrajectory3D(
137
+ positions_xyz=traj_est[:,:3],
138
+ orientations_quat_wxyz=traj_est[:, [6, 3, 4, 5]],
139
+ timestamps=timestamps)
140
+
141
+ traj_ref, traj_est = sync.associate_trajectories(traj_ref, traj_est)
142
+
143
+ result = main_ape.ape(traj_ref, traj_est, est_name='traj',
144
+ pose_relation=PoseRelation.translation_part, align=True, correct_scale=True)
145
+ ate_score = result.stats["rmse"]
146
+
147
+ if args.plot:
148
+ Path("trajectory_plots").mkdir(exist_ok=True)
149
+ plot_trajectory(traj_est, traj_ref, f"TUM-RGBD Frieburg1 {scene} Trial #{trial_num+1} (ATE: {ate_score:.03f})",
150
+ f"trajectory_plots/TUM_RGBD_Frieburg1_{scene}_Trial{trial_num+1:02d}.pdf", align=True, correct_scale=True)
151
+
152
+ if args.save_trajectory:
153
+ Path("saved_trajectories").mkdir(exist_ok=True)
154
+ file_interface.write_tum_trajectory_file(f"saved_trajectories/TUM_RGBD_{scene}_Trial{trial_num+1:02d}.txt", traj_est)
155
+
156
+ scene_results.append(ate_score)
157
+
158
+ results[scene] = np.median(scene_results)
159
+ print(scene, sorted(scene_results))
160
+
161
+ xs = []
162
+ for scene in results:
163
+ print(scene, results[scene])
164
+ xs.append(results[scene])
165
+
166
+ print("AVG: ", np.mean(xs))
third-party/DPVO/logs/dpv_slam/euroc.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ MH_01_easy [0.012369993404248198, 0.012605391722468495, 0.012880865003171075, 0.013870202586474345, 0.015238448109961965]
4
+ MH_02_easy [0.015547036608013052, 0.01576843130352243, 0.01601663966134436, 0.016302952602569, 0.01670363372507298]
5
+ MH_03_medium [0.020871479141894543, 0.021469582631134868, 0.02160758143072866, 0.02196740437599391, 0.02278113883295323]
6
+ MH_04_difficult [0.040664535309172786, 0.04162586499882439, 0.04310547275697648, 0.04451119822589982, 0.046356686029707134]
7
+ MH_05_difficult [0.037656163316638736, 0.03860294422716045, 0.041342768355602584, 0.04240596757249529, 0.0450045092964287]
8
+ V1_01_easy [0.03369426072301222, 0.03445928419283812, 0.034480781952964605, 0.0347687765479994, 0.03524749933025106]
9
+ V1_02_medium [0.00741783707643993, 0.007707277937967464, 0.007751873360894739, 0.007814074772843944, 0.009236743416610602]
10
+ V1_03_difficult [0.014143957522312662, 0.014222044330405931, 0.014729707182850377, 0.014853863138152805, 0.015501494809798597]
11
+ V2_01_easy [0.017462731363148607, 0.01791424547422222, 0.019883485802871918, 0.021633241199184514, 0.02459907428562063]
12
+ V2_02_medium [0.010443904238218088, 0.010998962261023593, 0.011178976602120408, 0.011204588660494272, 0.011527799108530709]
13
+ V2_03_difficult [0.022497747243670558, 0.03182763031837707, 0.039804866818326026, 0.08241931795091231, 0.8277136956530557]
14
+ MH_01_easy 0.012880865003171075
15
+ MH_02_easy 0.01601663966134436
16
+ MH_03_medium 0.02160758143072866
17
+ MH_04_difficult 0.04310547275697648
18
+ MH_05_difficult 0.041342768355602584
19
+ V1_01_easy 0.034480781952964605
20
+ V1_02_medium 0.007751873360894739
21
+ V1_03_difficult 0.014729707182850377
22
+ V2_01_easy 0.019883485802871918
23
+ V2_02_medium 0.011178976602120408
24
+ V2_03_difficult 0.039804866818326026
25
+ AVG: 0.023889365357077384
third-party/DPVO/logs/dpv_slam/tartan.txt ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ MH000 [0.14078493895760144, 0.17425330924389873, 0.2320722141122508, 0.2464911752765773, 0.332965830800725]
4
+ MH001 [0.0368027905631422, 0.03906908490354523, 0.04648540151525352, 0.055202890908097844, 0.061483889066032284]
5
+ MH002 [0.038333060645925544, 0.039385368705321375, 0.041219574892105974, 0.048395313794197786, 0.049742504371468405]
6
+ MH003 [0.02122562136315083, 0.026893176031205866, 0.03691873538165471, 0.03778902389617407, 0.04469663284842249]
7
+ MH004 [0.3630298853998415, 0.39955431072319764, 0.5410462821621671, 0.859569970253318, 1.4035158337312221]
8
+ MH005 [0.12916987702576252, 0.14188108980017686, 0.14757231207904156, 0.175268372631902, 0.25084099469430765]
9
+ MH006 [0.06534950409335614, 0.07122954467189514, 0.07359923915017312, 0.10705251161679226, 0.1104938092017843]
10
+ MH007 [0.09093388637838953, 0.0911377893323715, 0.1375659305614897, 0.20127730088082196, 0.22937435213297236]
11
+ ME000 [0.09770577342399908, 0.10111328588074299, 0.10122426648605258, 0.13326941997010486, 0.3596593467196429]
12
+ ME001 [0.03678302876664992, 0.05243283634539895, 0.07277431649480902, 0.07874005662497299, 0.09700248773025555]
13
+ ME002 [0.08642819827884278, 0.10682086281684673, 0.11018113151360784, 0.13703016187640601, 0.25829541979716375]
14
+ ME003 [0.25953484728996135, 0.39566815992075466, 0.693571727024989, 0.7694634138266926, 0.9734666967227169]
15
+ ME004 [0.17980634759342365, 0.21393477220939291, 0.27152949857430864, 0.32094905141127794, 0.49660873127748983]
16
+ ME005 [0.10466414796433271, 0.1317423810614023, 0.14307514592420253, 0.14953003258901795, 0.1829027082452621]
17
+ ME006 [0.1956941668844341, 0.24035120184647824, 0.2602811743842383, 0.2626992655935781, 0.399886761660616]
18
+ ME007 [0.10557488244783707, 0.11610016242229444, 0.12783280059328814, 0.12839651067767963, 0.14429752820146194]
19
+ Tartan/MH000 0.2320722141122508
20
+ Tartan/MH001 0.04648540151525352
21
+ Tartan/MH002 0.041219574892105974
22
+ Tartan/MH003 0.03691873538165471
23
+ Tartan/MH004 0.5410462821621671
24
+ Tartan/MH005 0.14757231207904156
25
+ Tartan/MH006 0.07359923915017312
26
+ Tartan/MH007 0.1375659305614897
27
+ Tartan/ME000 0.10122426648605258
28
+ Tartan/ME001 0.07277431649480902
29
+ Tartan/ME002 0.11018113151360784
30
+ Tartan/ME003 0.693571727024989
31
+ Tartan/ME004 0.27152949857430864
32
+ Tartan/ME005 0.14307514592420253
33
+ Tartan/ME006 0.2602811743842383
34
+ Tartan/ME007 0.12783280059328814
35
+ AUC 0.7995852473857609
36
+ AVG 0.18980935942810204
third-party/DPVO/logs/dpv_slam/tum_rgbd.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ rgbd_dataset_freiburg1_360 [0.09556885957694398, 0.10780547052109406, 0.11260000433917534, 0.12501811927398945, 0.14859558048623225]
4
+ rgbd_dataset_freiburg1_desk [0.015166853116610817, 0.01672589412063112, 0.017877838211945028, 0.01797624544803138, 0.020725784310901343]
5
+ rgbd_dataset_freiburg1_desk2 [0.02556278769148601, 0.027594135280035473, 0.028709430646346887, 0.0334743010498361, 0.035687491338283035]
6
+ rgbd_dataset_freiburg1_floor [0.04835237069554044, 0.05001706164828772, 0.05711831840242974, 0.14516966466222234, 0.15118477870691477]
7
+ rgbd_dataset_freiburg1_plant [0.019407809430967204, 0.02020191551091588, 0.020591438602137437, 0.02124531837476253, 0.0234699091863837]
8
+ rgbd_dataset_freiburg1_room [0.27089421441219025, 0.2949559930005123, 0.3259800041913198, 0.3584344038994978, 0.41824841489311787]
9
+ rgbd_dataset_freiburg1_rpy [0.0210928913583283, 0.024675875522205747, 0.029367751433447793, 0.03199853668001898, 0.040162566024802525]
10
+ rgbd_dataset_freiburg1_teddy [0.060343618248123336, 0.06784547021972276, 0.08400003098586675, 0.12070500728552086, 0.1334676994672985]
11
+ rgbd_dataset_freiburg1_xyz [0.010378787037841359, 0.010385630409875024, 0.010386022116149172, 0.010450868359308982, 0.012469434001895987]
12
+ rgbd_dataset_freiburg1_360 0.11260000433917534
13
+ rgbd_dataset_freiburg1_desk 0.017877838211945028
14
+ rgbd_dataset_freiburg1_desk2 0.028709430646346887
15
+ rgbd_dataset_freiburg1_floor 0.05711831840242974
16
+ rgbd_dataset_freiburg1_plant 0.020591438602137437
17
+ rgbd_dataset_freiburg1_room 0.3259800041913198
18
+ rgbd_dataset_freiburg1_rpy 0.029367751433447793
19
+ rgbd_dataset_freiburg1_teddy 0.08400003098586675
20
+ rgbd_dataset_freiburg1_xyz 0.010386022116149172
21
+ AVG: 0.07629231543653532
third-party/DPVO/logs/euroc.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ MH_01_easy [0.06314536790811147, 0.06699902721516254, 0.08683937293607617, 0.09933849813033907, 0.10537122768404757]
4
+ MH_02_easy [0.0447169925646229, 0.05285213743988453, 0.055298624828687054, 0.07187218580304361, 0.07859830854488298]
5
+ MH_03_medium [0.1457357241752508, 0.15225227342622094, 0.1588016200456077, 0.16214021665883874, 0.17697334507384457]
6
+ MH_04_difficult [0.13056959233860085, 0.1347044262169782, 0.1374168163128574, 0.16565343615410935, 0.18764459073795706]
7
+ MH_05_difficult [0.09729210548199585, 0.10630841008551295, 0.11357875715833793, 0.1303943587387471, 0.19755247615276056]
8
+ V1_01_easy [0.04309583310397929, 0.04453076570255095, 0.04999439471801219, 0.05172988782951013, 0.052966349405529266]
9
+ V1_02_medium [0.12553027331956326, 0.1309151444482779, 0.13988433603681644, 0.1514409495713732, 0.15499837381235274]
10
+ V1_03_difficult [0.08241488941986161, 0.08379125113047524, 0.08614115180383249, 0.09091289641612288, 0.10112603302717377]
11
+ V2_01_easy [0.049950843021396706, 0.0527218831462199, 0.05689049974664685, 0.06153877016328922, 0.07042993974430499]
12
+ V2_02_medium [0.03843408761702444, 0.04418367384901882, 0.04942073125020657, 0.05305070877727971, 0.07407632629338251]
13
+ V2_03_difficult [0.1511344255962771, 0.16489871921353894, 0.21067533098893604, 0.21285922415109648, 0.2257008090618537]
14
+
15
+ MH_01_easy 0.08683937293607617
16
+ MH_02_easy 0.055298624828687054
17
+ MH_03_medium 0.1588016200456077
18
+ MH_04_difficult 0.1374168163128574
19
+ MH_05_difficult 0.11357875715833793
20
+ V1_01_easy 0.04999439471801219
21
+ V1_02_medium 0.13988433603681644
22
+ V1_03_difficult 0.08614115180383249
23
+ V2_01_easy 0.05689049974664685
24
+ V2_02_medium 0.04942073125020657
25
+ V2_03_difficult 0.21067533098893604
26
+
27
+ AVG: 0.10408560325691062
third-party/DPVO/logs/euroc_fast.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/fast.yaml ###
2
+
3
+ MH_01_easy [0.07114604150165917, 0.08290962492882813, 0.1014933052121179, 0.10735335606879509, 0.18301678354833867]
4
+ MH_02_easy [0.02264057890051186, 0.040348658842906344, 0.06591933136520801, 0.07345417366259756, 0.08139938786229357]
5
+ MH_03_medium [0.13016847686932506, 0.16714280161187547, 0.17681234899205833, 0.2055236851692995, 0.23297395657220393]
6
+ MH_04_difficult [0.12858862192233328, 0.14633870778076316, 0.18103814374993568, 0.18774320531854857, 0.20857620966381415]
7
+ MH_05_difficult [0.09640786628683881, 0.11462786755308231, 0.12330409165123575, 0.137254961392892, 0.16133314282455288]
8
+ V1_01_easy [0.049126710178242466, 0.05025065039148512, 0.053426504229927695, 0.055094550531262006, 0.05815553958462344]
9
+ V1_02_medium [0.14664527623599097, 0.15020686120397345, 0.1577425323361298, 0.16032804323394892, 0.17913268442784727]
10
+ V1_03_difficult [0.0801491502026727, 0.0888522931662034, 0.09517781591457553, 0.10195932604579287, 0.11867762742907356]
11
+ V2_01_easy [0.05455553542728026, 0.0891189786906816, 0.0952487304621841, 0.1043575758374652, 0.12740444184577643]
12
+ V2_02_medium [0.051929053000443405, 0.052399867493328, 0.0627062703360614, 0.06271649076717616, 0.07269315818193876]
13
+ V2_03_difficult [0.2220917002464664, 0.2294504128801054, 0.30956898932165855, 0.37317544713557826, 0.9085849532936994]
14
+
15
+ MH_01_easy 0.1014933052121179
16
+ MH_02_easy 0.06591933136520801
17
+ MH_03_medium 0.17681234899205833
18
+ MH_04_difficult 0.18103814374993568
19
+ MH_05_difficult 0.12330409165123575
20
+ V1_01_easy 0.053426504229927695
21
+ V1_02_medium 0.1577425323361298
22
+ V1_03_difficult 0.09517781591457553
23
+ V2_01_easy 0.0952487304621841
24
+ V2_02_medium 0.0627062703360614
25
+ V2_03_difficult 0.30956898932165855
26
+
27
+ AVG: 0.12931255123373572
third-party/DPVO/logs/icl_nuim.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ living_room_traj0_loop [0.005498305436953887, 0.005769656790000982, 0.0058869781477180055, 0.005931800616935496, 0.006646859549548963]
4
+ living_room_traj1_loop [0.005385150903003443, 0.08553724944653898, 0.08700891753914203, 0.08729466281710502, 0.08763460013868249]
5
+ living_room_traj2_loop [0.018812871309275895, 0.019211457933104786, 0.019359962350138107, 0.019758084927718876, 0.021876516721087345]
6
+ living_room_traj3_loop [0.005746028471938545, 0.0058040802564935726, 0.0059715562629597384, 0.005975146917124347, 0.0061160841632913205]
7
+ office_room_traj0_loop [0.0058411298494680085, 0.006038133420971141, 0.0060612174662210165, 0.00609935627326321, 0.006603454239939697]
8
+ office_room_traj1_loop [0.007152512423961235, 0.007436432377339334, 0.007836419207622776, 0.010378794971925629, 0.013696859874629534]
9
+ office_room_traj2_loop [0.014721988425653445, 0.016681916344083076, 0.0167830764457033, 0.024267375338664205, 0.02522285403705428]
10
+ office_room_traj3_loop [0.48789422362261475, 0.48791849973262535, 0.4964864422613096, 0.5324202163736682, 0.5462029659025921]
11
+
12
+ living_room_traj0_loop 0.0058869781477180055
13
+ living_room_traj1_loop 0.08700891753914203
14
+ living_room_traj2_loop 0.019359962350138107
15
+ living_room_traj3_loop 0.0059715562629597384
16
+ office_room_traj0_loop 0.0060612174662210165
17
+ office_room_traj1_loop 0.007836419207622776
18
+ office_room_traj2_loop 0.0167830764457033
19
+ office_room_traj3_loop 0.4964864422613096
20
+
21
+ AVG: 0.08067432121010182
third-party/DPVO/logs/tartan.txt ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ MH000 [0.14334602109716257, 0.17326944198634417, 0.21190129931839286, 0.2469543133154878, 0.2817358116456705]
4
+ MH001 [0.03115740932037767, 0.03588517247338095, 0.0440864687238323, 0.05475357131885065, 0.05863276910264077]
5
+ MH002 [0.03768134250730164, 0.04322997703461984, 0.043565700923534435, 0.0454688419090695, 0.06086877971444702]
6
+ MH003 [0.02645348956221145, 0.04567704445657277, 0.07722210255214312, 0.07998915791630597, 0.09330225998396668]
7
+ MH004 [0.38178719278300133, 0.47049937312725054, 0.576996761412533, 0.8196664469335276, 1.4796195373419132]
8
+ MH005 [0.13027045706139298, 0.13277834200788574, 0.17013412784519652, 0.171243073003556, 0.24112687242125458]
9
+ MH006 [0.09010833917187357, 0.0976559159526096, 0.10863019162622754, 0.12245139404225007, 0.13647010877302648]
10
+ MH007 [0.11124488973312219, 0.1116922817228792, 0.14544537729172818, 0.14751699268194798, 0.17891644798066583]
11
+ ME000 [0.05922489836569579, 0.09525643394714992, 0.15723473985824776, 0.1620058317263364, 0.17037398669996276]
12
+ ME001 [0.07573144195168588, 0.08407845004731436, 0.10580187540595357, 0.11842358457556312, 0.24315552417747882]
13
+ ME002 [0.08392216496929536, 0.10654102318328146, 0.10705239811899728, 0.15980735853387604, 0.21305814853664024]
14
+ ME003 [0.28759270438139983, 0.5259024124818149, 0.6637537642033361, 0.724924810452685, 0.9839217080988636]
15
+ ME004 [0.17986836198603914, 0.2902208989458954, 0.3153304372853317, 0.3670610972759821, 0.5060843274702364]
16
+ ME005 [0.10348533597391497, 0.13551563136072803, 0.14293155684549463, 0.15461924981065864, 0.20197759102282564]
17
+ ME006 [0.21976719392977548, 0.25470045475140085, 0.29661793719394286, 0.35232606971335345, 0.5101625015109987]
18
+ ME007 [0.10637165069265611, 0.11674148135447272, 0.12817115921970332, 0.1283841672483978, 0.14369304245425063]
19
+
20
+ MH000 0.21190129931839286
21
+ MH001 0.0440864687238323
22
+ MH002 0.043565700923534435
23
+ MH003 0.07722210255214312
24
+ MH004 0.576996761412533
25
+ MH005 0.17013412784519652
26
+ MH006 0.10863019162622754
27
+ MH007 0.14544537729172818
28
+ ME000 0.15723473985824776
29
+ ME001 0.10580187540595357
30
+ ME002 0.10705239811899728
31
+ ME003 0.6637537642033361
32
+ ME004 0.3153304372853317
33
+ ME005 0.14293155684549463
34
+ ME006 0.29661793719394286
35
+ ME007 0.12817115921970332
36
+
37
+ AVG: 0.2059297436140372
third-party/DPVO/logs/tum_rgbd.txt ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 5 runs per sequence --config=config/default.yaml ###
2
+
3
+ 360 [0.12119497209318734, 0.12525963043834612, 0.17130646499947016, 0.1761476262456535, 0.1933653209480926]
4
+ desk [0.026105813969107154, 0.027741116512244042, 0.028646468040911453, 0.03106411248321044, 0.04449848373946498]
5
+ desk2 [0.04719722007832377, 0.05084402998366679, 0.05361728961186766, 0.05936560415948633, 0.06170508077547479]
6
+ floor [0.03643179014821134, 0.04257712576246384, 0.04487157748878229, 0.09703714699490908, 0.7032446123102681]
7
+ plant [0.027293687153410677, 0.02927140044346179, 0.031003197232962944, 0.040222496600114725, 0.040353251876044015]
8
+ room [0.3330306075675357, 0.3636511057229298, 0.388318238595983, 0.4126822932562722, 0.41414796374950436]
9
+ rpy [0.032101266243377086, 0.040920815199384016, 0.04549406392008708, 0.04841053825386331, 0.04875319338687637]
10
+ teddy [0.058712198614181886, 0.060135428840557226, 0.06295767243094463, 0.07249460158460448, 0.08928548478649274]
11
+ xyz [0.011829540280544332, 0.011947087935136453, 0.012119309929724311, 0.01225775696219288, 0.012665393732917779]
12
+
13
+ 360 0.17130646499947016
14
+ desk 0.028646468040911453
15
+ desk2 0.05361728961186766
16
+ floor 0.04487157748878229
17
+ plant 0.031003197232962944
18
+ room 0.388318238595983
19
+ rpy 0.04549406392008708
20
+ teddy 0.06295767243094463
21
+ xyz 0.012119309929724311
22
+
23
+ AVG: 0.09314825358341484