Spaces:
Sleeping
Sleeping
4f12b484f180574c6eb9e28ac739e76d44c165853db056d7b668b65be58331d0
Browse files- third-party/DPVO/LICENSE +21 -0
- third-party/DPVO/Pangolin/.clang-format +2 -0
- third-party/DPVO/Pangolin/CMakeLists.txt +186 -0
- third-party/DPVO/Pangolin/cmake/AndroidUtils.cmake +245 -0
- third-party/DPVO/Pangolin/cmake/CreateMethodCallFile.cmake +11 -0
- third-party/DPVO/Pangolin/cmake/EmbedBinaryFiles.cmake +37 -0
- third-party/DPVO/Pangolin/cmake/EmscriptenUtils.cmake +37 -0
- third-party/DPVO/Pangolin/cmake/FindDC1394.cmake +32 -0
- third-party/DPVO/Pangolin/cmake/FindDepthSense.cmake +43 -0
- third-party/DPVO/Pangolin/cmake/FindFFMPEG.cmake +97 -0
- third-party/DPVO/Pangolin/cmake/FindGLEW.cmake +53 -0
- third-party/DPVO/Pangolin/cmake/FindGLUES.cmake +38 -0
- third-party/DPVO/Pangolin/cmake/FindLibraw.cmake +41 -0
- third-party/DPVO/Pangolin/cmake/FindLz4.cmake +26 -0
- third-party/DPVO/Pangolin/cmake/FindMediaFoundation.cmake +20 -0
- third-party/DPVO/Pangolin/cmake/FindOculus.cmake +63 -0
- third-party/DPVO/Pangolin/cmake/FindOpenEXR.cmake +33 -0
- third-party/DPVO/Pangolin/cmake/FindOpenNI.cmake +58 -0
- third-party/DPVO/Pangolin/cmake/FindOpenNI2.cmake +59 -0
- third-party/DPVO/Pangolin/cmake/FindPleora.cmake +143 -0
- third-party/DPVO/Pangolin/cmake/FindRealSense.cmake +33 -0
- third-party/DPVO/Pangolin/cmake/FindRealSense2.cmake +33 -0
- third-party/DPVO/Pangolin/cmake/FindTeliCam.cmake +58 -0
- third-party/DPVO/Pangolin/cmake/FindTooN.cmake +28 -0
- third-party/DPVO/Pangolin/cmake/FindXrandr.cmake +32 -0
- third-party/DPVO/Pangolin/cmake/Findlibusb1.cmake +43 -0
- third-party/DPVO/Pangolin/cmake/Findpthread.cmake +42 -0
- third-party/DPVO/Pangolin/cmake/Finduvc.cmake +39 -0
- third-party/DPVO/Pangolin/cmake/Findzstd.cmake +35 -0
- third-party/DPVO/Pangolin/cmake/MakePythonWheel.cmake +104 -0
- third-party/DPVO/Pangolin/cmake/PangolinConfig.cmake.in +18 -0
- third-party/DPVO/Pangolin/cmake/PangolinConfigVersion.cmake.in +17 -0
- third-party/DPVO/Pangolin/cmake/PangolinFactory.cmake +56 -0
- third-party/DPVO/Pangolin/cmake/SetPlatformVars.cmake +56 -0
- third-party/DPVO/Pangolin/cmake/cmake_uninstall.cmake.in +21 -0
- third-party/DPVO/Pangolin/cmake/wheel-dist-info/METADATA +12 -0
- third-party/DPVO/Pangolin/cmake/wheel-dist-info/WHEEL +5 -0
- third-party/DPVO/Pangolin/cmake/wheel-dist-info/top_level.txt +1 -0
- third-party/DPVO/evaluate_icl_nuim.py +141 -0
- third-party/DPVO/evaluate_kitti.py +168 -0
- third-party/DPVO/evaluate_tartan.py +198 -0
- third-party/DPVO/evaluate_tum.py +166 -0
- third-party/DPVO/logs/dpv_slam/euroc.txt +25 -0
- third-party/DPVO/logs/dpv_slam/tartan.txt +36 -0
- third-party/DPVO/logs/dpv_slam/tum_rgbd.txt +21 -0
- third-party/DPVO/logs/euroc.txt +27 -0
- third-party/DPVO/logs/euroc_fast.txt +27 -0
- third-party/DPVO/logs/icl_nuim.txt +21 -0
- third-party/DPVO/logs/tartan.txt +37 -0
- 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
|