├── CMakeLists.txt
├── LICENSE
├── README.md
├── TS_bluredTS_OSTS.png
├── cover_of_video.png
├── dependencies.yaml
├── dv_ros_msgs
├── CMakeLists.txt
├── README.md
├── msg
│ ├── Event.msg
│ ├── EventArray.msg
│ └── Trigger.msg
└── package.xml
├── esvo2_core
├── CMakeLists.txt
├── calib
│ ├── dsec
│ │ └── zurich_city_04_a
│ │ │ ├── left.yaml
│ │ │ └── right.yaml
│ ├── dvx_7.11
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── dvx_7.12
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── dvx_7.15
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── dvx_7.9
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── rpg
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── tum_DoF
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── tum_desk
│ │ ├── left.yaml
│ │ └── right.yaml
│ ├── upenn
│ │ ├── left.yaml
│ │ └── right.yaml
│ └── vector
│ │ ├── left.yaml
│ │ └── right.yaml
├── cfg
│ ├── DVS_MappingStereo.cfg
│ ├── mapping
│ │ ├── mapping_dsec_AA.yaml
│ │ ├── mapping_dvx_AA_mapping.yaml
│ │ ├── mapping_dvx_AA_tracking.yaml
│ │ ├── mapping_rpg_AA.yaml
│ │ ├── mapping_tum_AA.yaml
│ │ ├── mapping_upenn_AA.yaml
│ │ └── mapping_vector_AA.yaml
│ └── tracking
│ │ ├── tracking_dsec_AA.yaml
│ │ ├── tracking_dvx_AA_mapping.yaml
│ │ ├── tracking_dvx_AA_tracking.yaml
│ │ ├── tracking_online_AA.yaml
│ │ ├── tracking_rpg_AA.yaml
│ │ ├── tracking_tum_AA.yaml
│ │ ├── tracking_upenn_AA.yaml
│ │ └── tracking_vector_AA.yaml
├── esvo2_mvstereo.perspective
├── esvo2_mvstereo.rviz
├── esvo2_system.perspective
├── esvo2_system.rviz
├── esvo2_system_DSEC.perspective
├── esvo2_system_DSEC.rviz
├── include
│ ├── esvo2_core
│ │ ├── container
│ │ │ ├── CameraSystem.h
│ │ │ ├── DepthMap.h
│ │ │ ├── DepthPoint.h
│ │ │ ├── EventMatchPair.h
│ │ │ ├── ResidualItem.h
│ │ │ ├── SmartGrid.h
│ │ │ └── TimeSurfaceObservation.h
│ │ ├── core
│ │ │ ├── BackendOptimization.h
│ │ │ ├── DepthFusion.h
│ │ │ ├── DepthProblem.h
│ │ │ ├── DepthProblemSolver.h
│ │ │ ├── DepthRegularization.h
│ │ │ ├── EventBM.h
│ │ │ ├── RegProblemLM.h
│ │ │ └── RegProblemSolverLM.h
│ │ ├── esvo2_Mapping.h
│ │ ├── esvo2_Tracking.h
│ │ ├── factor
│ │ │ ├── OptimizationFunctor.h
│ │ │ ├── imu_factor.h
│ │ │ ├── imu_integration.h
│ │ │ ├── pose_local_parameterization.h
│ │ │ └── utility.h
│ │ └── tools
│ │ │ ├── TicToc.h
│ │ │ ├── Visualization.h
│ │ │ ├── cayley.h
│ │ │ ├── params_helper.h
│ │ │ ├── sobel.h
│ │ │ └── utils.h
│ └── sophus
│ │ ├── se3.hpp
│ │ ├── so3.hpp
│ │ └── sophus.hpp
├── launch
│ └── system
│ │ ├── system_dsec.launch
│ │ ├── system_dvx_mapping.launch
│ │ ├── system_dvx_tracking.launch
│ │ ├── system_rpg.launch
│ │ ├── system_tum_DoF.launch
│ │ ├── system_tum_desk.launch
│ │ ├── system_upenn.launch
│ │ └── system_vector.launch
├── package.xml
└── src
│ ├── container
│ ├── CameraSystem.cpp
│ ├── DepthPoint.cpp
│ ├── EventPoint.cpp
│ └── ResidualItem.cpp
│ ├── core
│ ├── BackendOptimization.cpp
│ ├── DepthFusion.cpp
│ ├── DepthProblem.cpp
│ ├── DepthProblemSolver.cpp
│ ├── DepthRegularization.cpp
│ ├── EventBM.cpp
│ ├── RegProblemLM.cpp
│ └── RegProblemSolverLM.cpp
│ ├── esvo2_Mapping.cpp
│ ├── esvo2_MappingNode.cpp
│ ├── esvo2_Tracking.cpp
│ ├── esvo2_TrackingNode.cpp
│ ├── factor
│ └── pose_local_parameterization.cpp
│ └── tools
│ ├── Visualization.cpp
│ ├── cayley.cpp
│ └── sobel.cpp
├── events_repacking_tool
├── CMakeLists.txt
├── README.md
├── launch
│ └── repacking.launch
├── msg
│ └── V_ba_bg.msg
├── package.xml
└── src
│ └── EventMessageEditor.cpp
├── image_representation
├── .gitignore
├── CMakeLists.txt
├── cfg
│ ├── image_representation_fast.yaml
│ ├── image_representation_fast_40hz.yaml
│ ├── image_representation_fast_r.yaml
│ └── image_representation_fast_r_40hz.yaml
├── image_representation.perspective
├── include
│ └── image_representation
│ │ ├── ImageRepresentation.h
│ │ └── TicToc.h
├── launch
│ └── image_representation.launch
├── package.xml
└── src
│ ├── ImageRepresentation.cpp
│ └── ImageRepresentation_node.cpp
└── results
├── gt
├── dsec
│ ├── 04a.txt
│ ├── 04b.txt
│ ├── 04c.txt
│ ├── 04d.txt
│ ├── 04e.txt
│ ├── 04f.txt
│ ├── 11a.txt
│ └── 11b.txt
├── rpg
│ ├── bin.txt
│ ├── box2.txt
│ ├── desk2.txt
│ ├── monitor.txt
│ └── reader.txt
├── tum_vie
│ ├── 1d_trans.txt
│ ├── 3d_trans.txt
│ ├── 6d_trans.txt
│ ├── desk.txt
│ └── desk2.txt
├── upenn
│ ├── stamped_groundtruth_of_indoorflying1.txt
│ ├── stamped_groundtruth_of_indoorflying2.txt
│ ├── stamped_groundtruth_of_indoorflying3.txt
│ └── stamped_groundtruth_of_indoorflying4.txt
└── vector
│ ├── corner_slow.txt
│ ├── desk_normal.txt
│ ├── hdr_normal.txt
│ ├── robot_normal.txt
│ └── sofa_normal.txt
└── ours
├── ours_dsec
├── stamped_traj_estimate04a.txt
├── stamped_traj_estimate04b.txt
├── stamped_traj_estimate04c.txt
├── stamped_traj_estimate04d.txt
├── stamped_traj_estimate04e.txt
├── stamped_traj_estimate04f.txt
├── stamped_traj_estimate11a.txt
└── stamped_traj_estimate11b.txt
├── ours_rpg
├── stamped_traj_estimate_bin.txt
├── stamped_traj_estimate_box2.txt
├── stamped_traj_estimate_desk2.txt
├── stamped_traj_estimate_monitor.txt
└── stamped_traj_estimate_reader.txt
├── ours_tum_vie
├── 1d_trans.txt
├── 3d_trans.txt
├── 6d_trans.txt
├── desk.txt
└── desk2.txt
├── ours_upenn
├── stamped_traj_indoor1.txt
├── stamped_traj_indoor2.txt
├── stamped_traj_indoor3.txt
└── stamped_traj_indoor4.txt
└── ours_vector
├── corner_slow.txt
├── desk_normal.txt
├── hdr_normal.txt
├── robot_normal.txt
└── sofa_normal.txt
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # toplevel CMakeLists.txt for a catkin workspace
2 | # catkin/cmake/toplevel.cmake
3 |
4 | cmake_minimum_required(VERSION 3.0.2)
5 |
6 | project(Project)
7 |
8 | set(CATKIN_TOPLEVEL TRUE)
9 |
10 | # search for catkin within the workspace
11 | set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}")
12 | execute_process(COMMAND ${_cmd}
13 | RESULT_VARIABLE _res
14 | OUTPUT_VARIABLE _out
15 | ERROR_VARIABLE _err
16 | OUTPUT_STRIP_TRAILING_WHITESPACE
17 | ERROR_STRIP_TRAILING_WHITESPACE
18 | )
19 | if(NOT _res EQUAL 0 AND NOT _res EQUAL 2)
20 | # searching fot catkin resulted in an error
21 | string(REPLACE ";" " " _cmd_str "${_cmd}")
22 | message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}")
23 | endif()
24 |
25 | # include catkin from workspace or via find_package()
26 | if(_res EQUAL 0)
27 | set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake")
28 | # include all.cmake without add_subdirectory to let it operate in same scope
29 | include(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE)
30 | add_subdirectory("${_out}")
31 |
32 | else()
33 | # use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument
34 | # or CMAKE_PREFIX_PATH from the environment
35 | if(NOT DEFINED CMAKE_PREFIX_PATH)
36 | if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "")
37 | if(NOT WIN32)
38 | string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
39 | else()
40 | set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH})
41 | endif()
42 | endif()
43 | endif()
44 |
45 | # list of catkin workspaces
46 | set(catkin_search_path "")
47 | foreach(path ${CMAKE_PREFIX_PATH})
48 | if(EXISTS "${path}/.catkin")
49 | list(FIND catkin_search_path ${path} _index)
50 | if(_index EQUAL -1)
51 | list(APPEND catkin_search_path ${path})
52 | endif()
53 | endif()
54 | endforeach()
55 |
56 | # search for catkin in all workspaces
57 | set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE)
58 | find_package(catkin QUIET
59 | NO_POLICY_SCOPE
60 | PATHS ${catkin_search_path}
61 | NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
62 | unset(CATKIN_TOPLEVEL_FIND_PACKAGE)
63 |
64 | if(NOT catkin_FOUND)
65 | message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.")
66 | endif()
67 | endif()
68 |
69 | catkin_workspace()
70 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Neuromorphic Automation and Intelligence 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.
22 |
--------------------------------------------------------------------------------
/TS_bluredTS_OSTS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAIL-HNU/ESVO2/f9545bed9001aac2f440e735e292a7a03ae0005f/TS_bluredTS_OSTS.png
--------------------------------------------------------------------------------
/cover_of_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/NAIL-HNU/ESVO2/f9545bed9001aac2f440e735e292a7a03ae0005f/cover_of_video.png
--------------------------------------------------------------------------------
/dependencies.yaml:
--------------------------------------------------------------------------------
1 | repositories:
2 | catkin_simple:
3 | type: git
4 | url: https://github.com/catkin/catkin_simple.git
5 | version: master
6 | rpg_dvs_ros:
7 | type: git
8 | url: https://github.com/uzh-rpg/rpg_dvs_ros.git
9 | version: master
10 | gflags_catkin:
11 | type: git
12 | url: https://github.com/ethz-asl/gflags_catkin.git
13 | version: master
14 | glog_catkin:
15 | type: git
16 | url: https://github.com/ethz-asl/glog_catkin.git
17 | version: master
18 | minkindr:
19 | type: git
20 | url: https://github.com/ethz-asl/minkindr.git
21 | version: master
22 | eigen_catkin:
23 | type: git
24 | url: https://github.com/ethz-asl/eigen_catkin.git
25 | version: master
26 | eigen_checks:
27 | type: git
28 | url: https://github.com/ethz-asl/eigen_checks.git
29 | version: master
30 | minkindr_ros:
31 | type: git
32 | url: https://github.com/ethz-asl/minkindr_ros.git
33 | version: master
34 |
35 |
--------------------------------------------------------------------------------
/dv_ros_msgs/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.14)
2 | project(dv_ros_msgs VERSION 1.2.0)
3 |
4 | find_package(catkin REQUIRED COMPONENTS roscpp std_msgs sensor_msgs
5 | message_generation)
6 |
7 | add_message_files(FILES Trigger.msg Event.msg EventArray.msg)
8 |
9 | generate_messages(DEPENDENCIES std_msgs sensor_msgs)
10 |
11 | catkin_package(CATKIN_DEPENDS message_runtime roscpp std_msgs sensor_msgs)
12 |
13 | include_directories(${catkin_INCLUDE_DIRS})
14 |
--------------------------------------------------------------------------------
/dv_ros_msgs/README.md:
--------------------------------------------------------------------------------
1 | # DV ROS Msgs
2 |
3 | This project provides the most basic data structures needed to publish and subscribe event data. Event and EventArray
4 | are basic structure to describe a single event and an event packet. Additional type is a Trigger message, which is used
5 | to communicate various signals (internal and external) from the camera.
6 |
--------------------------------------------------------------------------------
/dv_ros_msgs/msg/Event.msg:
--------------------------------------------------------------------------------
1 | # A DVS event
2 | uint16 x
3 | uint16 y
4 | time ts
5 | bool polarity
6 |
--------------------------------------------------------------------------------
/dv_ros_msgs/msg/EventArray.msg:
--------------------------------------------------------------------------------
1 | # This message contains an array of events
2 | # (0, 0) is at top-left corner of image
3 | #
4 |
5 | Header header
6 |
7 | uint32 height # image height, that is, number of rows
8 | uint32 width # image width, that is, number of columns
9 |
10 | # an array of events
11 | Event[] events
12 |
--------------------------------------------------------------------------------
/dv_ros_msgs/msg/Trigger.msg:
--------------------------------------------------------------------------------
1 | # A DVS trigger
2 |
3 | # Numeric value representing the type of trigger signal received
4 | int8 type
5 | # Time of occurence
6 | time timestamp
7 |
8 | # Below are constant numeric values describing eah type of trigger
9 | # A timestamp reset occurred.
10 | int8 TRIGGER_TYPE_TIMESTAMP_RESET=0
11 |
12 | # A rising edge was detected (External Input module on device).
13 | int8 TRIGGER_TYPE_EXTERNAL_SIGNAL_RISING_EDGE=1
14 |
15 | # A falling edge was detected (External Input module on device).
16 | int8 TRIGGER_TYPE_EXTERNAL_SIGNAL_FALLING_EDGE=2
17 |
18 | # A pulse was detected (External Input module on device).
19 | int8 TRIGGER_TYPE_EXTERNAL_SIGNAL_PULSE=3
20 |
21 | # A rising edge was generated (External Generator module on device).
22 | int8 TRIGGER_TYPE_EXTERNAL_GENERATOR_RISING_EDGE=4
23 |
24 | # A falling edge was generated (External Generator module on device).
25 | int8 TRIGGER_TYPE_EXTERNAL_GENERATOR_FALLING_EDGE=5
26 |
27 | # An APS frame capture has started (Frame Event will follow).
28 | int8 TRIGGER_TYPE_APS_FRAME_START=6
29 |
30 | # An APS frame capture has completed (Frame Event is contemporary).
31 | int8 TRIGGER_TYPE_APS_FRAME_END=7
32 |
33 | # An APS frame exposure has started (Frame Event will follow).
34 | int8 TRIGGER_APS_EXPOSURE_START=8
35 |
36 | # An APS frame exposure has completed (Frame Event will follow).
37 | int8 TRIGGER_APS_EXPOSURE_END=9
38 |
--------------------------------------------------------------------------------
/dv_ros_msgs/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | dv_ros_msgs
4 | 1.3.0
5 | The dv_ros_msgs package contains messages types from dv-processing library for event camera data publishing.
6 |
7 | iniVation
8 |
9 | Apache2.0
10 |
11 | https://dv-processing.inivation.com/
12 |
13 | catkin
14 | roscpp
15 | std_msgs
16 | sensor_msgs
17 | std_msgs
18 | message_generation
19 |
20 | roscpp
21 | std_msgs
22 |
23 | roscpp
24 | std_msgs
25 | sensor_msgs
26 | message_runtime
27 |
28 |
--------------------------------------------------------------------------------
/esvo2_core/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 2.8.3)
2 | project(esvo2_core)
3 | # explicitly set std=c++14 to remove errors from pcl library
4 |
5 | set(CMAKE_CXX_STANDARD 14)
6 | set(CMAKE_CXX_STANDARD_REQUIRED ON)
7 | # SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3")
8 | set(CMAKE_CXX_FLAGS "-O3")
9 |
10 | set(CMAKE_BUILD_TYPE "Release")
11 | # set(CMAKE_CXX_FLAGS "-std=c++14")
12 |
13 | # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")
14 |
15 |
16 |
17 | find_package(catkin_simple REQUIRED)
18 | catkin_simple(ALL_DEPS_REQUIRED)
19 |
20 | find_package(OpenCV REQUIRED)
21 |
22 | # FIND_PACKAGE(Sophus REQUIRED)
23 | # INCLUDE_DIRECTORIES(${Sophus_INCLUDE_DIRS})
24 |
25 | find_package(fmt REQUIRED)
26 | include_directories(${fmt_INCLUDE_DIRS})
27 |
28 | find_package(Ceres REQUIRED)
29 | include_directories(${CERES_INCLUDE_DIRS})
30 |
31 | include_directories(
32 | ${PROJECT_SOURCE_DIR}/include)
33 | ###########
34 | ## Build ##
35 | ###########
36 |
37 | ## Specify additional locations of header files
38 | ## Your package locations should be listed before other locations
39 | include_directories(include)
40 |
41 | set(HEADERS
42 | include/esvo2_core/core/DepthFusion.h
43 | include/esvo2_core/core/DepthRegularization.h
44 | include/esvo2_core/core/DepthProblem.h
45 | include/esvo2_core/core/DepthProblemSolver.h
46 | include/esvo2_core/core/EventBM.h
47 | include/esvo2_core/core/RegProblemLM.h
48 | include/esvo2_core/core/RegProblemSolverLM.h
49 | include/esvo2_core/core/BackendOptimization.h
50 | include/esvo2_core/factor/OptimizationFunctor.h
51 | include/esvo2_core/container/CameraSystem.h
52 | include/esvo2_core/container/DepthPoint.h
53 | include/esvo2_core/container/EventMatchPair.h
54 | include/esvo2_core/container/SmartGrid.h
55 | include/esvo2_core/container/DepthMap.h
56 | include/esvo2_core/container/ResidualItem.h
57 | include/esvo2_core/container/TimeSurfaceObservation.h
58 | include/esvo2_core/tools/Visualization.h
59 | include/esvo2_core/tools/utils.h
60 | include/esvo2_core/tools/TicToc.h
61 | include/esvo2_core/tools/sobel.h
62 | include/esvo2_core/tools/cayley.h
63 | include/esvo2_core/tools/params_helper.h
64 |
65 | include/esvo2_core/factor/utility.h
66 |
67 | include/esvo2_core/factor/pose_local_parameterization.h
68 | )
69 |
70 | set(SOURCES
71 | src/core/DepthFusion.cpp
72 | src/core/DepthRegularization.cpp
73 | src/core/DepthProblem.cpp
74 | src/core/DepthProblemSolver.cpp
75 | src/core/EventBM.cpp
76 | src/core/RegProblemLM.cpp
77 | src/core/RegProblemSolverLM.cpp
78 | src/core/BackendOptimization.cpp
79 | src/container/CameraSystem.cpp
80 | src/container/DepthPoint.cpp
81 | src/container/ResidualItem.cpp
82 | src/tools/Visualization.cpp
83 | src/tools/sobel.cpp
84 | src/tools/cayley.cpp
85 | )
86 |
87 | cs_add_library(${PROJECT_NAME}_LIB ${SOURCES} ${HEADERS})
88 | target_link_libraries(${PROJECT_NAME}_LIB ${CERES_LIBRARIES})
89 |
90 |
91 | # Node esvo2_Mapping
92 | cs_add_executable(esvo2_Mapping src/esvo2_MappingNode.cpp
93 | src/esvo2_Mapping.cpp include/esvo2_core/esvo2_Mapping.h)
94 | target_link_libraries(esvo2_Mapping ${PROJECT_NAME}_LIB
95 | ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} ${CERES_LIBRARIES} yaml-cpp)
96 |
97 | # Node esvo2_Tracking
98 | cs_add_executable(esvo2_Tracking src/esvo2_TrackingNode.cpp
99 | src/esvo2_Tracking.cpp include/esvo2_core/esvo2_Tracking.h)
100 | target_link_libraries(esvo2_Tracking ${PROJECT_NAME}_LIB
101 | ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} yaml-cpp)
102 |
--------------------------------------------------------------------------------
/esvo2_core/calib/dsec/zurich_city_04_a/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [553.469, 0, 346.653,
8 | 0, 553.399, 216.521,
9 | 0, 0, 1]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [-0.0935648, 0.194458, 7.64243e-05, 0.00195639]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [0.999866, -0.00319364, 0.0160517,
19 | 0.00322964, 0.999992, -0.00221712,
20 | -0.0160445, 0.00226867, 0.999869]
21 | projection_matrix:
22 | rows: 3
23 | cols: 4
24 | data: [536.0578704071853, 0, 336.2674980163574, 0,
25 | 0, 536.0578704071853, 222.2888011932373, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [0.999759349174819, -0.01136184588494952, 0.01876571862791739,
31 | 0.01144476919322272, 0.9999251858525768, -0.004317401509758799,
32 | -0.01871526103610019, 0.004531131841964332, 0.9998145867352477]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [-1, 0, 0, 0,
37 | 0, -1, 0, 0,
38 | 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dsec/zurich_city_04_a/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [552.182, 0, 336.874,
8 | 0, 551.445, 226.326,
9 | 0, 0, 1]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [-0.0949368, 0.202115, 0.000582129, 0.00145529]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [0.999963, 0.00818053, -0.00267849,
19 | -0.0081745, 0.999964, 0.00225394,
20 | 0.00269683, -0.00223196, 0.999994]
21 | projection_matrix:
22 | rows: 3
23 | cols: 4
24 | data: [536.0578704071853, 0, 336.2674980163574, -321.1164388243399,
25 | 0, 536.0578704071853, 222.2888011932373, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [0.999759349174819, -0.01136184588494952, 0.01876571862791739,
31 | 0.01144476919322272, 0.9999251858525768, -0.004317401509758799,
32 | -0.01871526103610019, 0.004531131841964332, 0.9998145867352477]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [-1, 0, 0, 0,
37 | 0, -1, 0, 0,
38 | 0, 0, 1, 0]
39 |
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.11/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [434.1778, 0, 328.6492, 0, 433.8335, 232.6556, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.04334948, -0.06016529, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9998832813933003, 0.004103351036722398, -0.01471686449063877, -0.004121981625352883, 0.9999907409590998, -0.001235825048533487, 0.01471165720259442, 0.001296343449768941, 0.9998909373706782]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [448.4773332253563, 0, 331.2306709289551, 0, 0, 448.4773332253563, 236.0885963439941, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.999760252, 0.013379681, -0.017332725, -0.51159033332, -0.013422442, 0.999907146, -0.002353056, 0.00474945463, 0.017299632, 0.002585139, 0.999847008, -0.00132692634]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.11/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [434.1872, 0, 324.3261, 0, 434.0652, 239.8637, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.05184187, -0.07847694, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9999535459183549, -0.009283275482605657, 0.002593607838996671, 0.00927998418159965, 0.9999561231242929, 0.001278170498442819, -0.002605359648438675, -0.001254042482486944, 0.9999958197305399]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [448.4773332253563, 0, 331.2306709289551, -222.7643952971784, 0, 448.4773332253563, 236.0885963439941, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.999760252, 0.013379681, -0.017332725, -0.51159033332, -0.013422442, 0.999907146, -0.002353056, 0.00474945463, 0.017299632, 0.002585139, 0.999847008, -0.00132692634]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.12/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [432.7812, 0, 328.4005, 0, 432.7748, 232.4376, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.0445071, -0.06356757, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9998539461716247, 0.003694298096812298, -0.01668647615890179, -0.003729593459353143, 0.9999908722793747, -0.002084584026459531, 0.01667862277460759, 0.002146513337323832, 0.9998585980141567]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [450.5047898814922, 0, 332.9536323547363, 0, 0, 450.5047898814922, 238.4309101104736, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.999736436, 0.013393934, -0.018645677, -0.5120856507029999, -0.013471273, 0.999901143, -0.004028423, 0.004971649021999999, 0.018589877, 0.004278542, 0.999818039, -0.0009830110739999999]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.12/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [434.0541, 0, 325.9281, 0, 434.0786, 244.4503, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.05821453, -0.08425602, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.999951032394347, -0.009708152465168582, 0.001919528377636773, 0.009704069684654541, 0.9999506565588225, 0.002124965678543425, -0.00194006315229174, -0.00210623438692375, 0.9999958999574311]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [450.5047898814922, 0, 332.9536323547363, -230.7083357060859, 0, 450.5047898814922, 238.4309101104736, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.999736436, 0.013393934, -0.018645677, -0.5120856507029999, -0.013471273, 0.999901143, -0.004028423, 0.004971649021999999, 0.018589877, 0.004278542, 0.999818039, -0.0009830110739999999]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.15/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [422.6183, 0, 326.7147, 0, 422.575, 231.9814, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.04000976, -0.05895489, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9997420607778356, 0.003075691061873218, -0.02250226735638845, -0.003118297237261123, 0.9999934109423682, -0.001858573159199178, 0.0224964026907984, 0.001928262518413717, 0.9997450643387211]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [443.2937499920903, 0, 334.158504486084, 0, 0, 443.2937499920903, 239.9048557281494, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9996268699999999, 0.013476739, -0.023759164, -0.519410817, -0.013563895, 0.999901842, -0.003510948, 0.005405287, 0.023709515, 0.003831905, 0.999711546, -0.000633409]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.15/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [424.2381, 0, 325.6551, 0, 424.0411, 247.5604, 0, 0, 1]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [0.05575131, -0.08181416, 0, 0]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9999451125693434, -0.0104060026106206, 0.001219409017047227, 0.01040367492339396, 0.999944075382641, 0.001899909272396437, -0.001239111282913046, -0.001887118656245959, 0.999997451689956]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [443.2937499920903, 0, 334.158504486084, -230.2642074651054, 0, 443.2937499920903, 239.9048557281494, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9996268699999999, 0.013476739, -0.023759164, -0.519410817, -0.013563895, 0.999901842, -0.003510948, 0.005405287, 0.023709515, 0.003831905, 0.999711546, -0.000633409]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.9/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [434.9484516, 0, 318.4569369,
8 | 0, 434.8979906, 236.3369857,
9 | 0, 0, 1]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [0.053739769, -0.08123554, 0, 0]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [0.9999105105358901, 0.002873549036556365, -0.01306574283345767,
19 | -0.002915109492186892, 0.9999907489291623, -0.003162940521385146,
20 | 0.01305653309665725, 0.003200745542489167, 0.9999096370029985]
21 | projection_matrix: #use 0 to calib
22 | rows: 3
23 | cols: 4
24 | data: [449.2300511093084, 0, 325.7455711364746, 0,
25 | 0, 449.2300511093084, 242.9759902954102, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [0.999735249, 0.012800124, -0.019120367, -0.4942509919,
31 | -0.012920476, 0.999897403, -0.006184228, 0.004925674698,
32 | 0.019039246, 0.006429635, 0.999798063, -0.002962203921]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [1, 0, 0, 0,
37 | 0, 1, 0, 0,
38 | 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/dvx_7.9/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [433.6833886, 0, 327.6565328,
8 | 0, 433.6727372, 249.1875723,
9 | 0, 0, 1]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [0.043339754, -0.065281539, 0, 0]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [0.999932386961623, -0.009965264084205682, 0.005992913895851983,
19 | 0.00994614437504703, 0.9999453778738928, 0.003211772206806913,
20 | -0.006024592708372559, -0.003151948662294061, 0.9999768844840007]
21 | projection_matrix: #use 0 to calib
22 | rows: 3
23 | cols: 4
24 | data: [449.2300511093084, 0, 325.7455711364746, -246.4474116522289,
25 | 0, 449.2300511093084, 242.9759902954102, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [0.999735249, 0.012800124, -0.019120367, -0.4942509919,
31 | -0.012920476, 0.999897403, -0.006184228, 0.004925674698,
32 | 0.019039246, 0.006429635, 0.999798063, -0.002962203921]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [1, 0, 0, 0,
37 | 0, 1, 0, 0,
38 | 0, 0, 1, 0]
39 |
--------------------------------------------------------------------------------
/esvo2_core/calib/rpg/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 240
2 | image_height: 180
3 | camera_name: rpg_DAVIS240C_left
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [196.639, 0, 105.064, 0, 196.733, 72.4717, 0.0, 0.0, 1.0]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.336733, 0.111789, -0.00140053, -0.000459594]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.999791, -0.018779, -0.00802416, 0.0187767, 0.999824, -0.000360707, 0.00802952, 0.000209964, 0.999968]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [156.925, 0, 108.167, 0, 0, 156.925, 78.4205, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9991089760393723, -0.04098010198963204, 0.010093821797214667, -0.1479883582369969,
25 | 0.04098846609277917, 0.9991594254283246, -0.000623077121092687, -0.003289908601915284,
26 | -0.010059803423311134, 0.0010362522169301642, 0.9999488619606629, 0.0026798262366239016]
27 | T_b_c:
28 | rows: 3
29 | cols: 4
30 | data: [0.999905117246, 0.0121780171243, -0.00643835413146, 0,
31 | -0.0122374970355, 0.999882045134, -0.00928113597812, 0,
32 | 0.00632456886338, 0.00935904469797, 0.99993620202, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/rpg/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 240
2 | image_height: 180
3 | camera_name: rpg_DAVIS240C_right
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [196.426, 0, 110.745, 0, 196.564, 88.1131, 0.0, 0.0, 1.0]
8 | distortion_model: plumb_bob
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.346294, 0.12772, -0.000272051, -0.000195801]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.999589, 0.0222217, -0.0181009, -0.0222166, 0.999753, 0.000486491, 0.0181073, -8.41512e-05, 0.999836]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [156.925, 0, 108.167, -23.2327, 0, 156.925, 78.4205, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9991089760393723, -0.04098010198963204, 0.010093821797214667, -0.1479883582369969,
25 | 0.04098846609277917, 0.9991594254283246, -0.000623077121092687, -0.003289908601915284,
26 | -0.010059803423311134, 0.0010362522169301642, 0.9999488619606629, 0.0026798262366239016]
27 | T_b_c:
28 | rows: 3
29 | cols: 4
30 | data: [0.999905117246, 0.0121780171243, -0.00643835413146, 0,
31 | -0.0122374970355, 0.999882045134, -0.00928113597812, 0,
32 | 0.00632456886338, 0.00935904469797, 0.99993620202, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/tum_DoF/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 1280
2 | image_height: 720
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [1051.317, 0, 636.1348, 0, 1051.795, 265.7059, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.131047, 0.07279845, -0.211093, 0.1849343]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9996801027846643, -0.01425548616909317, -0.02089194128188449, 0.01403938405407294, 0.9998467906279263, -0.01045423198604381, 0.02103777060016484, 0.01015757771905148, 0.9997270806690477]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [978.82227434271, 0, 662.7080004688397, 0, 0, 978.82227434271, 251.0649540442805, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9999139238730244, 0.00275304520871895, -0.0128283119283708, -0.1187973925652208, -0.003015363491210488, 0.9997858361647609, -0.02047411505649691, 0.002000794259366445, 0.01276919840352954, 0.02051103474741225, 0.9997080799041906, 0.0009996342780319578]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [-0.0160003, -0.999846, -0.00716287, -0.0351382, -0.9998, 0.0159127, 0.0121157, 0.0594199, -0.0119998, 0.00735529, -0.999901, -0.0325031]
--------------------------------------------------------------------------------
/esvo2_core/calib/tum_DoF/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 1280
2 | image_height: 720
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [1049.048, 0, 652.4781, 0, 1049.574, 262.0072, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.1216066, 0.01165121, -0.04866892, 0.03971039]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9998228165348589, -0.01683908803476893, -0.00841312370402582, 0.01692490916354675, 0.9998043669069874, 0.01023598375945926, 0.008239113186965713, -0.01037656146685995, 0.9999122181401812]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [978.82227434271, 0, 669.4652931589101, -116.3021407929822, 0, 978.82227434271, 251.0649540442805, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9999139238730244, 0.00275304520871895, -0.0128283119283708, -0.1187973925652208, -0.003015363491210488, 0.9997858361647609, -0.02047411505649691, 0.002000794259366445, 0.01276919840352954, 0.02051103474741225, 0.9997080799041905, 0.0009996342780319578]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [-0.0160003, -0.999846, -0.00716287, -0.0351382, -0.9998, 0.0159127, 0.0121157, 0.0594199, -0.0119998, 0.00735529, -0.999901, -0.0325031]
--------------------------------------------------------------------------------
/esvo2_core/calib/tum_desk/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 1280
2 | image_height: 720
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [1049.583, 0, 634.7184, 0, 1049.423, 263.4698, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.1151966, -0.06222183, 0.2168261, -0.2352862]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.999754826676689, -0.01266626048306591, -0.01816183861944204, 0.01247096879510851, 0.9998636259452682, -0.01082610035478137, 0.01829648802297759, 0.01059695036109404, 0.9997764465964727]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [974.8248485687409, 0, 657.1452947326158, 0, 0, 974.8248485687409, 249.0317449660879, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9999139238730244, 0.00275304520871895, -0.0128283119283708, -0.1187973925652208, -0.003015363491210488, 0.9997858361647609, -0.02047411505649691, 0.002000794259366445, 0.01276919840352954, 0.02051103474741225, 0.9997080799041905, 0.0009996342780319578]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [-0.0156758, -0.999861, -0.00567473, -0.0348034, -0.999798, 0.0156027, 0.0127008, 0.0597177, -0.0126105, 0.00587268, -0.999903, -0.0369473]
--------------------------------------------------------------------------------
/esvo2_core/calib/tum_desk/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 1280
2 | image_height: 720
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [1047.668, 0, 652.9083, 0, 1047.523, 260.541, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.1246107, 0.006075037, 0.03566192, -0.08888043]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9998695874466074, -0.01531690352425632, -0.005118648823660143, 0.01537085831336992, 0.9998248945376152, 0.0106731896617947, 0.004954272303945287, -0.01075047576970244, 0.999929938774044]
17 | projection_matrix:
18 | rows: 3
19 | cols: 4
20 | data: [974.8248485687409, 0, 665.7830960074431, -115.4845433975721, 0, 974.8248485687409, 249.0317449660879, 0, 0, 0, 1, 0]
21 | T_right_left:
22 | rows: 3
23 | cols: 4
24 | data: [0.9999067813752269, 0.002756653661083337, -0.0133727117828264, -0.1184515176576849, -0.003041059118927757, 0.999768629994468, -0.02129409397977534, 0.001814547107986286, 0.01331091729629842, 0.02133277618073071, 0.9996838160844428, 0.0006063908024923279]
25 | T_b_c:
26 | rows: 3
27 | cols: 4
28 | data: [-0.0156758, -0.999861, -0.00567473, -0.0348034,
29 | -0.999798, 0.0156027, 0.0127008, 0.0597177,
30 | -0.0126105, 0.00587268, -0.999903, -0.0369473]
--------------------------------------------------------------------------------
/esvo2_core/calib/upenn/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 346
2 | image_height: 260
3 | camera_name: upenn_DAVIS346_left
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [226.38018519795807, 0.0, 173.6470807871759, 0.0, 226.15002947047415, 133.73271487507847, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.048031442223833355, 0.011330957517194437, -0.055378166304281135, 0.021500973881459395]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.999877311526236, 0.015019439766575743, -0.004447282784398257,
17 | -0.014996983873604017, 0.9998748347535599, 0.005040367172759556,
18 | 0.004522429630305261, -0.004973052949604937, 0.9999774079320989]
19 | projection_matrix:
20 | rows: 3
21 | cols: 4
22 | data: [199.6530123165822, 0.0, 177.43276376280926, 0.0,
23 | 0.0, 199.6530123165822, 126.81215684365904, 0.0,
24 | 0.0, 0.0, 1.0, 0.0]
25 | T_right_left:
26 | rows: 3
27 | cols: 4
28 | data: [0.9999285439274112, 0.011088072985503046, -0.004467849222081981, -0.09988137641750752,
29 | -0.011042817783611191, 0.9998887260774646, 0.01002953830336461, -0.0003927067773089277,
30 | 0.004578560319692358, -0.009979483987103495, 0.9999397215256256, 1.8880107752680777e-06]
31 | T_b_c:
32 | rows: 3
33 | cols: 4
34 | data: [1, 0, 0, 0,
35 | 0, 1, 0, 0,
36 | 0, 0, 1, 0]
37 | # data: [0.9998771896957381, 0.015081690576531692, 0.004260062852482415, 0.00286126,
38 | # -0.015128404695721132, 0.9998233340761795, 0.011154909598696812, 0.00180892,
39 | # -0.004091075349566317, -0.011217987615716542, 0.99992871, 0.0177984]
40 |
--------------------------------------------------------------------------------
/esvo2_core/calib/upenn/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 346
2 | image_height: 260
3 | camera_name: upenn_DAVIS346_right
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [226.0181418548734, 0, 174.5433576736815, 0, 225.7869434267677, 124.21627572590607, 0, 0, 1]
8 | distortion_model: equidistant
9 | distortion_coefficients:
10 | rows: 1
11 | cols: 4
12 | data: [-0.04846669832871334, 0.010092844338123635, -0.04293073765014637, 0.005194706897326005]
13 | rectification_matrix:
14 | rows: 3
15 | cols: 3
16 | data: [0.9999922706537476, 0.003931701344419404, -1.890238450965101e-05,
17 | -0.003931746704476347, 0.9999797362744968, -0.005006836150689904,
18 | -7.83382948021244e-07, 0.0050068717705076754, 0.9999874655386736]
19 | projection_matrix:
20 | rows: 3
21 | cols: 4
22 | data: [199.6530123165822, 0.0, 177.43276376280926, -19.941771812941038,
23 | 0.0, 199.6530123165822, 126.81215684365904, 0.0,
24 | 0.0, 0.0, 1.0, 0.0]
25 | T_right_left:
26 | rows: 3
27 | cols: 4
28 | data: [0.9999285439274112, 0.011088072985503046, -0.004467849222081981, -0.09988137641750752,
29 | -0.011042817783611191, 0.9998887260774646, 0.01002953830336461, -0.0003927067773089277,
30 | 0.004578560319692358, -0.009979483987103495, 0.9999397215256256, 1.8880107752680777e-06]
31 | T_b_c:
32 | rows: 3
33 | cols: 4
34 | data: [1, 0, 0, 0,
35 | 0, 1, 0, 0,
36 | 0, 0, 1, 0]
--------------------------------------------------------------------------------
/esvo2_core/calib/vector/left.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [327.32749, 0, 304.97749,
8 | 0, 327.46184, 235.37621,
9 | 0, 0, 1]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [-0.031982, 0.041966, -0.000507, -0.001031, 0.000000]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [1.0, 0.0, 0.0,
19 | 0.0, 1.0, 0.0,
20 | 0.0, 0.0, 1.0]
21 | projection_matrix:
22 | rows: 3
23 | cols: 4
24 | data: [257.7465659912339, 0, 317.5881580988773, 0,
25 | 0, 257.7465659912339, 237.3116097643339, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [1.000000, 0.000000, 0.000000, -0.170000,
31 | 0.000000, 1.000000, 0.000000, 0.000000,
32 | 0.000000, 0.000000, 1.000000, 0.000000]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [0.000000, 0.000000, 1.000000, 0.103080,
37 | -1.000000, 0.000000, 0.000000, 0.082500,
38 | 0.000000, -1.000000, 0.000000, 0.025000]
--------------------------------------------------------------------------------
/esvo2_core/calib/vector/right.yaml:
--------------------------------------------------------------------------------
1 | image_width: 640
2 | image_height: 480
3 | camera_name: RPG_DSEC_Prophesee_Gen3.1M
4 | camera_matrix:
5 | rows: 3
6 | cols: 3
7 | data: [327.48497, 0.0, 318.53477,
8 | 0.0, 327.55395, 230.96356,
9 | 0.0, 0.0, 1.0]
10 | distortion_model: plumb_bob
11 | distortion_coefficients:
12 | rows: 1
13 | cols: 4
14 | data: [-0.026300, 0.037995, -0.000513, 0.000167, 0.000000]
15 | rectification_matrix:
16 | rows: 3
17 | cols: 3
18 | data: [1.0, 0.0, 0.0,
19 | 0.0, 1.0, 0.0,
20 | 0.0, 0.0, 1.0]
21 | projection_matrix:
22 | rows: 3
23 | cols: 4
24 | data: [257.7465659912339, 0, 317.5881580988773, -43.81691621850976,
25 | 0, 257.7465659912339, 237.3116097643339, 0,
26 | 0, 0, 1, 0]
27 | T_right_left:
28 | rows: 3
29 | cols: 4
30 | data: [1.000000, 0.000000, 0.000000, -0.170000,
31 | 0.000000, 1.000000, 0.000000, 0.000000,
32 | 0.000000, 0.000000, 1.000000, 0.000000]
33 | T_b_c:
34 | rows: 3
35 | cols: 4
36 | data: [0.000000, 0.000000, 1.000000, 0.103080,
37 | -1.000000, 0.000000, 0.000000, 0.082500,
38 | 0.000000, -1.000000, 0.000000, 0.025000]
39 |
--------------------------------------------------------------------------------
/esvo2_core/cfg/DVS_MappingStereo.cfg:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | PACKAGE = "esvo2_core"
3 |
4 | from dynamic_reconfigure.parameter_generator_catkin import *
5 |
6 | gen = ParameterGenerator()
7 |
8 | # for EventMatcher
9 | gen.add("EM_TIME_THRESHOLD", double_t, 0, "EM_TIME_THRESHOLD", 0.0001, 0.000001, 0.001)
10 | gen.add("EM_EPIPOLAR_THRESHOLD", double_t, 0, "EM_EPIPOLAR_THRESHOLD", 0.5, 0.1, 5)
11 | gen.add("EM_TS_NCC_THRESHOLD", double_t, 0, "EM_TS_NCC_THRESHOLD", 0.1, 0.0, 1.0)
12 | gen.add("EM_NUM_EVENT_MATCHING", int_t, 0, "EM_NUM_EVENT_MATCHING", 30000, 0, 100000)
13 | gen.add("EM_PATCH_INTENSITY_THRESHOLD", int_t, 0, "EM_PATCH_INTENSITY_THRESHOLD", 125, 0, 255)
14 | gen.add("EM_PATCH_VALID_RATIO", double_t, 0, "EM_PATCH_VALID_RATIO", 0.1, 0, 1.0)
15 |
16 | # for Block Matcher
17 | gen.add("BM_MAX_NUM_EVENTS_PER_MATCHING", int_t, 0, "BM_MAX_NUM_EVENTS_PER_MATCHING", 400, 1, 50000)
18 | gen.add("BM_min_disparity", int_t, 0, "BM_min_disparity", 0, 0, 5)
19 | gen.add("BM_max_disparity", int_t, 0, "BM_max_disparity", 40, 0, 150)
20 | gen.add("BM_step", int_t, 0, "BM_step", 2, 1, 5)
21 | gen.add("BM_ZNCC_Threshold", double_t, 0, "BM_ZNCC_Threshold", 0.1, 0, 1.0)
22 |
23 | # for esvo2_Mapping
24 | gen.add("invDepth_min_range", double_t, 0, "InvDepth_MIN_RANGE", 0.16, 0.0, 10.0)
25 | gen.add("invDepth_max_range", double_t, 0, "InvDepth_MAX_RANGE", 2.0, 0.0, 10.0)
26 |
27 | gen.add("residual_vis_threshold", double_t, 0, "Residual_VIS_THRESHOLD", 12, 0.0, 1000000)
28 | gen.add("stdVar_vis_threshold", double_t, 0, "StdVariance_VIS_THRESHOLD", 0.12, 0.0, 10000000)
29 |
30 | gen.add("age_max_range", int_t, 0, "Age_MAX_RANGE", 5, 0, 10)
31 | gen.add("age_vis_threshold", int_t, 0, "Age_VIS_RANGE", 1, 0, 10)
32 |
33 | gen.add("fusion_radius", int_t, 0, "fusion radius", 0, 0, 5)
34 | gen.add("maxNumFusionFrames", int_t, 0, "Max Fusion Times", 0, 0, 100)
35 | gen.add("maxNumFusionPoints", int_t, 0, "Max Fusion Points",5000, 1000, 20000)
36 | gen.add("PROCESS_EVENT_NUM", int_t, 0, "#processed event", 100, 0, 100000)
37 | gen.add("TS_HISTORY_LENGTH", int_t, 0, "time_surface history length", 100, 0, 300)
38 | gen.add("mapping_rate_hz", int_t, 0, "mapping rate", 20, 1, 30)
39 |
40 | gen.add("Denoising", bool_t, 0, "denoising the events", False)
41 | gen.add("Regularization", bool_t, 0, "perform regularization", False)
42 |
43 | # for esvo2_System
44 | gen.add("ResetButton", bool_t, 0, "reset system (used as a button...)", False)
45 | exit(gen.generate(PACKAGE, "esvo2_core", "DVS_MappingStereo"))
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_dsec_AA.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.001
3 | invDepth_max_range: 0.25
4 | residual_vis_threshold: 30 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 5
15 | patch_size_Y_2: 31
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 0
19 | BM_max_disparity: 150
20 | BM_step: 3
21 | BM_ZNCC_Threshold: 0.2
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.20
24 | SmoothTimeSurface: True #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 1
28 | FUSION_STRATEGY: CONST_FRAMES #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 5 #40
30 | maxNumFusionFrames_ln: 5
31 | maxNumFusionPoints: 20000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 5000 #20000
44 | PROCESS_EVENT_NUM_AA: 5000 #20000
45 | x_patches: 8
46 | y_patches: 6
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.2
49 |
50 | # Configuration for visualization
51 | Regularization: False
52 | RegularizationRadius: 20
53 | RegularizationMinNeighbours: 32
54 | RegularizationMinCloseNeighbours: 32
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 0.5 #2[second]
57 | NumGPC_added_per_refresh: 10000
58 | visualize_range: 30
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 500
64 | mapping_rate_hz: 20
65 | large_scale: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_dvx_AA_mapping.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.05
3 | invDepth_max_range: 0.33
4 | residual_vis_threshold: 30 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 5
15 | patch_size_Y_2: 31
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 0
19 | BM_max_disparity: 150
20 | BM_step: 3
21 | BM_ZNCC_Threshold: 0.2
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.20
24 | SmoothTimeSurface: True #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 2
28 | FUSION_STRATEGY: CONST_FRAMES #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 5 #40
30 | maxNumFusionFrames_ln: 5
31 | maxNumFusionPoints: 20000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 10000 #20000
44 | PROCESS_EVENT_NUM_AA: 10000 #20000
45 | x_patches: 8
46 | y_patches: 6
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.1
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 20
53 | RegularizationMinNeighbours: 32
54 | RegularizationMinCloseNeighbours: 32
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 0.5 #2[second]
57 | NumGPC_added_per_refresh: 10000
58 | visualize_range: 30
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 500
64 | mapping_rate_hz: 20
65 | large_scale: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_dvx_AA_tracking.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.02
3 | invDepth_max_range: 0.33
4 | residual_vis_threshold: 30 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 5
15 | patch_size_Y_2: 31
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 0
19 | BM_max_disparity: 150
20 | BM_step: 3
21 | BM_ZNCC_Threshold: 0.2
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.20
24 | SmoothTimeSurface: True #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 2
28 | FUSION_STRATEGY: CONST_FRAMES #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 5 #40
30 | maxNumFusionFrames_ln: 5
31 | maxNumFusionPoints: 20000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 10000 #20000
44 | PROCESS_EVENT_NUM_AA: 10000 #20000
45 | x_patches: 8
46 | y_patches: 6
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.1
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 20
53 | RegularizationMinNeighbours: 32
54 | RegularizationMinCloseNeighbours: 32
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 0.5 #2[second]
57 | NumGPC_added_per_refresh: 10000
58 | visualize_range: 30
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 500
64 | mapping_rate_hz: 20
65 | large_scale: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_rpg_AA.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.2
3 | invDepth_max_range: 2
4 | residual_vis_threshold: 30 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 0.1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 0.1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 2
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 7
15 | patch_size_Y_2: 21
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 1
19 | BM_max_disparity: 40
20 | BM_step: 1
21 | BM_ZNCC_Threshold: 0.3
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.04
24 | SmoothTimeSurface: True #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 0
28 | FUSION_STRATEGY: CONST_POINTS #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 40 #40
30 | maxNumFusionFrames_ln: 40
31 | maxNumFusionPoints: 8000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: True
43 | PROCESS_EVENT_NUM: 6000
44 | PROCESS_EVENT_NUM_AA: 6000
45 | x_patches: 4
46 | y_patches: 3
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.1
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 5
53 | RegularizationMinNeighbours: 8
54 | RegularizationMinCloseNeighbours: 8
55 |
56 | bVisualizeGlobalPC: True
57 | visualizeGPC_interval: 2 #2[second]
58 | NumGPC_added_per_refresh: 3000
59 | visualize_range: 5.0
60 |
61 | # Configuration for mapping system
62 | TS_HISTORY_LENGTH: 100
63 | USE_IMU: True
64 | INIT_SGM_DP_NUM_THRESHOLD: 1500
65 | mapping_rate_hz: 10
66 | large_scale: False
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_tum_AA.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 1
3 | invDepth_max_range: 3
4 | residual_vis_threshold: 30 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 51
12 | patch_size_Y: 21
13 | # patch size of temporal BM
14 | patch_size_X_2: 11
15 | patch_size_Y_2: 41
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 0
19 | BM_max_disparity: 300
20 | BM_step: 1
21 | BM_ZNCC_Threshold: 0.2
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.04
24 | SmoothTimeSurface: True #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 2
28 | FUSION_STRATEGY: CONST_FRAMES #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 5 #40
30 | maxNumFusionFrames_ln: 5
31 | maxNumFusionPoints: 30000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 10000 #20000
44 | PROCESS_EVENT_NUM_AA: 10000 #20000
45 | x_patches: 16
46 | y_patches: 12
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.0
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 5
53 | RegularizationMinNeighbours: 8
54 | RegularizationMinCloseNeighbours: 8
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 0.5 #2[second]
57 | NumGPC_added_per_refresh: 5000
58 | visualize_range: 30
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 2000
64 | mapping_rate_hz: 10
65 | large_scale: False
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_upenn_AA.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.16
3 | invDepth_max_range: 1
4 | residual_vis_threshold: 20 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 30
6 | stdVar_vis_threshold: 0.15 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 5
15 | patch_size_Y_2: 31
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 1
19 | BM_max_disparity: 40
20 | BM_step: 1
21 | BM_ZNCC_Threshold: 0.1
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.04
24 | SmoothTimeSurface: False #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 0
28 | FUSION_STRATEGY: CONST_POINTS #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 40 #40
30 | maxNumFusionFrames_ln: 40
31 | maxNumFusionPoints: 8000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 3000 #20000
44 | PROCESS_EVENT_NUM_AA: 3000 #20000
45 | x_patches: 8
46 | y_patches: 6
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.1
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 5
53 | RegularizationMinNeighbours: 8
54 | RegularizationMinCloseNeighbours: 8
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 1 #2[second]
57 | NumGPC_added_per_refresh: 3000
58 | visualize_range: 5.0
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 500
64 | mapping_rate_hz: 20
65 | large_scale: False
--------------------------------------------------------------------------------
/esvo2_core/cfg/mapping/mapping_vector_AA.yaml:
--------------------------------------------------------------------------------
1 | # Configuration for depth estimation
2 | invDepth_min_range: 0.1
3 | invDepth_max_range: 2
4 | residual_vis_threshold: 20 #20 #30 #20 #20
5 | residual_vis_threshold_ln: 20
6 | stdVar_vis_threshold: 0.1 #0.1 #0.2
7 | stdVar_vis_threshold_ln: 1 #0.1 #0.2
8 | age_max_range: 10
9 | age_vis_threshold: 1
10 | # patch size of static BM
11 | patch_size_X: 15
12 | patch_size_Y: 7
13 | # patch size of temporal BM
14 | patch_size_X_2: 5
15 | patch_size_Y_2: 31
16 | # EventBM parameters
17 | BM_half_slice_thickness: 0.001
18 | BM_min_disparity: 0
19 | BM_max_disparity: 300
20 | BM_step: 1
21 | BM_ZNCC_Threshold: 0.2
22 | BM_bUpDownConfiguration: False
23 | distance_from_last_frame: 0.04
24 | SmoothTimeSurface: False #False
25 |
26 | # Configuration for fusion
27 | fusion_radius: 0
28 | FUSION_STRATEGY: CONST_POINTS #"CONST_POINTS" # "CONST_FRAMES"
29 | maxNumFusionFrames: 40 #40
30 | maxNumFusionFrames_ln: 40
31 | maxNumFusionPoints: 12000 #8000 #3000
32 | LSnorm: Tdist #Tdist #Tdist #Tdist # l2
33 | Tdist_nu: 2.182 #2.1897
34 | Tdist_scale: 17.277 #16.6397
35 | Tdist_stdvar: 59.763 #56.5347
36 | LSnorm_ln: Tdist #Tdist #Tdist #Tdist # l2
37 | Tdist_nu_ln: 2.182
38 | Tdist_scale_ln: 17.277
39 | Tdist_stdvar_ln: 59.763
40 |
41 | # Configuration for point sampling
42 | Denoising: False
43 | PROCESS_EVENT_NUM: 3000 #20000
44 | PROCESS_EVENT_NUM_AA: 3000 #20000
45 | x_patches: 8
46 | y_patches: 6
47 | select_points_from_AA: True
48 | eta_for_select_points: 0.0
49 |
50 | # Configuration for visualization
51 | Regularization: True
52 | RegularizationRadius: 20
53 | RegularizationMinNeighbours: 32
54 | RegularizationMinCloseNeighbours: 32
55 | bVisualizeGlobalPC: True
56 | visualizeGPC_interval: 0.5 #2[second]
57 | NumGPC_added_per_refresh: 20
58 | visualize_range: 30
59 |
60 | # Configuration for mapping system
61 | TS_HISTORY_LENGTH: 100
62 | USE_IMU: True
63 | INIT_SGM_DP_NUM_THRESHOLD: 500
64 | mapping_rate_hz: 10
65 | large_scale: False
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_dsec_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.02
2 | invDepth_max_range: 0.25
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_dvx_AA_mapping.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.05
2 | invDepth_max_range: 0.25
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_dvx_AA_tracking.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.02
2 | invDepth_max_range: 0.33
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 40
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_online_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.2
2 | invDepth_max_range: 2
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: False
21 |
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_rpg_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.25
2 | invDepth_max_range: 2
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 20
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: False
21 |
22 |
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_tum_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 1
2 | invDepth_max_range: 3
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 20
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_upenn_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.16
2 | invDepth_max_range: 1
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 7
9 | MAX_REGISTRATION_POINTS: 4000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
21 |
--------------------------------------------------------------------------------
/esvo2_core/cfg/tracking/tracking_vector_AA.yaml:
--------------------------------------------------------------------------------
1 | invDepth_min_range: 0.1
2 | invDepth_max_range: 2
3 | TS_HISTORY_LENGTH: 100
4 | REF_HISTORY_LENGTH: 10
5 | tracking_rate_hz: 100
6 | patch_size_X: 1
7 | patch_size_Y: 1
8 | kernelSize: 5
9 | MAX_REGISTRATION_POINTS: 2000
10 | BATCH_SIZE: 300
11 | MAX_ITERATION: 10
12 | LSnorm: Huber #Huber #L2, Huber
13 | huber_threshold: 50 #50
14 | MIN_NUM_EVENTS: 1000
15 | RegProblemType: 1 # 0 numerical, 1 analytical
16 | SAVE_TRAJECTORY: True
17 | # PATH_TO_SAVE_TRAJECTORY: "/home/bell/data/ESVO2_result/"
18 | PATH_TO_SAVE_TRAJECTORY: "/home/njk/output/ESVO2/"
19 | VISUALIZE_TRAJECTORY: True
20 | USE_IMU: True
--------------------------------------------------------------------------------
/esvo2_core/esvo2_mvstereo.rviz:
--------------------------------------------------------------------------------
1 | Panels:
2 | - Class: rviz/Displays
3 | Help Height: 78
4 | Name: Displays
5 | Property Tree Widget:
6 | Expanded:
7 | - /Global Options1
8 | - /Status1
9 | - /TF1
10 | - /TF1/Frames1
11 | - /TF1/Tree1
12 | - /Pose1
13 | - /PointCloud21
14 | Splitter Ratio: 0.5
15 | Tree Height: 1762
16 | - Class: rviz/Selection
17 | Name: Selection
18 | - Class: rviz/Tool Properties
19 | Expanded:
20 | - /2D Pose Estimate1
21 | - /2D Nav Goal1
22 | - /Publish Point1
23 | Name: Tool Properties
24 | Splitter Ratio: 0.5886790156364441
25 | - Class: rviz/Views
26 | Expanded:
27 | - /Current View1
28 | Name: Views
29 | Splitter Ratio: 0.5
30 | - Class: rviz/Time
31 | Experimental: false
32 | Name: Time
33 | SyncMode: 0
34 | SyncSource: PointCloud2
35 | Preferences:
36 | PromptSaveOnExit: true
37 | Toolbars:
38 | toolButtonStyle: 2
39 | Visualization Manager:
40 | Class: ""
41 | Displays:
42 | - Alpha: 0.5
43 | Cell Size: 1
44 | Class: rviz/Grid
45 | Color: 160; 160; 164
46 | Enabled: true
47 | Line Style:
48 | Line Width: 0.029999999329447746
49 | Value: Lines
50 | Name: Grid
51 | Normal Cell Count: 0
52 | Offset:
53 | X: 0
54 | Y: 0
55 | Z: 0
56 | Plane: XY
57 | Plane Cell Count: 10
58 | Reference Frame:
59 | Value: true
60 | - Class: rviz/TF
61 | Enabled: true
62 | Frame Timeout: 999
63 | Frames:
64 | All Enabled: true
65 | Marker Scale: 1
66 | Name: TF
67 | Show Arrows: true
68 | Show Axes: true
69 | Show Names: true
70 | Tree:
71 | {}
72 | Update Interval: 0
73 | Value: true
74 | - Alpha: 1
75 | Axes Length: 0.15000000596046448
76 | Axes Radius: 0.019999999552965164
77 | Class: rviz/Pose
78 | Color: 255; 25; 0
79 | Enabled: true
80 | Head Length: 0.30000001192092896
81 | Head Radius: 0.10000000149011612
82 | Name: Pose
83 | Shaft Length: 1
84 | Shaft Radius: 0.05000000074505806
85 | Shape: Axes
86 | Topic: /optitrack/davis_stereo
87 | Unreliable: false
88 | Value: true
89 | - Class: rviz/Axes
90 | Enabled: false
91 | Length: 1
92 | Name: Axes
93 | Radius: 0.10000000149011612
94 | Reference Frame:
95 | Value: false
96 | - Alpha: 1
97 | Autocompute Intensity Bounds: true
98 | Autocompute Value Bounds:
99 | Max Value: 10
100 | Min Value: -10
101 | Value: true
102 | Axis: Z
103 | Channel Name: z
104 | Class: rviz/PointCloud2
105 | Color: 255; 255; 255
106 | Color Transformer: Intensity
107 | Decay Time: 0
108 | Enabled: true
109 | Invert Rainbow: true
110 | Max Color: 255; 255; 255
111 | Max Intensity: 1.0458288192749023
112 | Min Color: 0; 0; 0
113 | Min Intensity: -29.558752059936523
114 | Name: PointCloud2
115 | Position Transformer: XYZ
116 | Queue Size: 10
117 | Selectable: true
118 | Size (Pixels): 3
119 | Size (m): 0.05000000074505806
120 | Style: Points
121 | Topic: /esvo2_mvstereo/pointcloud_world
122 | Unreliable: false
123 | Use Fixed Frame: true
124 | Use rainbow: true
125 | Value: true
126 | Enabled: true
127 | Global Options:
128 | Background Color: 255; 255; 255
129 | Default Light: true
130 | Fixed Frame: map
131 | Frame Rate: 30
132 | Name: root
133 | Tools:
134 | - Class: rviz/Interact
135 | Hide Inactive Objects: true
136 | - Class: rviz/MoveCamera
137 | - Class: rviz/Select
138 | - Class: rviz/FocusCamera
139 | - Class: rviz/Measure
140 | - Class: rviz/SetInitialPose
141 | Theta std deviation: 0.2617993950843811
142 | Topic: /initialpose
143 | X std deviation: 0.5
144 | Y std deviation: 0.5
145 | - Class: rviz/SetGoal
146 | Topic: /move_base_simple/goal
147 | - Class: rviz/PublishPoint
148 | Single click: true
149 | Topic: /clicked_point
150 | Value: true
151 | Views:
152 | Current:
153 | Class: rviz/Orbit
154 | Distance: 4.184921741485596
155 | Enable Stereo Rendering:
156 | Stereo Eye Separation: 0.05999999865889549
157 | Stereo Focal Distance: 1
158 | Swap Stereo Eyes: false
159 | Value: false
160 | Focal Point:
161 | X: 1.4528931379318237
162 | Y: 0.03556236997246742
163 | Z: 0.8511919975280762
164 | Focal Shape Fixed Size: true
165 | Focal Shape Size: 0.05000000074505806
166 | Invert Z Axis: false
167 | Name: Current View
168 | Near Clip Distance: 0.009999999776482582
169 | Pitch: 0.2197979986667633
170 | Target Frame:
171 | Value: Orbit (rviz)
172 | Yaw: 2.5921530723571777
173 | Saved: ~
174 | Window Geometry:
175 | Displays:
176 | collapsed: false
177 | Height: 2088
178 | Hide Left Dock: false
179 | Hide Right Dock: false
180 | QMainWindow State: 000000ff00000000fd00000004000000000000031900000778fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000004300000778000000d400fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000778fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000004300000778000000b500fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000ebd00000044fc0100000002fb0000000800540069006d0065010000000000000ebd000003b700fffffffb0000000800540069006d0065010000000000000450000000000000000000000a890000077800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
181 | Selection:
182 | collapsed: false
183 | Time:
184 | collapsed: false
185 | Tool Properties:
186 | collapsed: false
187 | Views:
188 | collapsed: false
189 | Width: 3773
190 | X: 67
191 | Y: 37
192 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/container/CameraSystem.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CONTAINER_CAMERASYSTEM_H
2 | #define ESVO2_CORE_CONTAINER_CAMERASYSTEM_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | namespace esvo2_core
11 | {
12 | namespace container
13 | {
14 | class PerspectiveCamera
15 | {
16 | public:
17 | PerspectiveCamera();
18 | virtual ~PerspectiveCamera();
19 | using Ptr = std::shared_ptr;
20 |
21 | void setIntrinsicParameters(
22 | size_t width, size_t height,
23 | std::string& cameraName,
24 | std::string& distortion_model,
25 | std::vector& vD,
26 | std::vector& vK,
27 | std::vector& vRectMat,
28 | std::vector& vP,
29 | std::vector &vT_b_c);
30 |
31 | void preComputeRectifiedCoordinate();
32 |
33 | Eigen::Matrix getRectifiedUndistortedCoordinate(int xcoor, int ycoor);
34 |
35 | void cam2World(const Eigen::Vector2d &x, double invDepth, Eigen::Vector3d &p);
36 |
37 | void world2Cam(const Eigen::Vector3d &p, Eigen::Vector2d &x);
38 |
39 | public:
40 | size_t width_, height_;
41 | std::string cameraName_;
42 | std::string distortion_model_;
43 | Eigen::Matrix D_;
44 | Eigen::Matrix3d K_, K_inv_;
45 | Eigen::Matrix3d RectMat_;
46 | Eigen::Matrix P_;
47 | Eigen::Matrix T_b_c_;
48 |
49 | Eigen::Matrix2Xd precomputed_rectified_points_;
50 | cv::Mat undistort_map1_, undistort_map2_;
51 | Eigen::MatrixXi UndistortRectify_mask_;
52 | };
53 |
54 | class CameraSystem
55 | {
56 | public:
57 | CameraSystem(const std::string& calibInfoDir, bool bPrintCalibInfo = false);
58 | virtual ~CameraSystem();
59 | using Ptr = std::shared_ptr;
60 |
61 | void computeBaseline();
62 | void loadCalibInfo(const std::string & cameraSystemDir, bool bPrintCalibInfo = false);
63 | void printCalibInfo();
64 |
65 | PerspectiveCamera::Ptr cam_left_ptr_, cam_right_ptr_; // intrinsics
66 | Eigen::Matrix T_right_left_;// extrinsics
67 | double baseline_;
68 | };
69 | }
70 | }
71 |
72 | #endif //ESVO2_CORE_CONTAINER_CAMERASYSTEM_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/container/DepthMap.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_DEPTHMAP_H
2 | #define ESVO2_CORE_DEPTHMAP_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | namespace esvo2_core
9 | {
10 | using namespace tools;
11 | namespace container
12 | {
13 | using DepthMap = SmartGrid;
14 |
15 | struct DepthFrame
16 | {
17 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
18 | typedef std::shared_ptr Ptr;
19 |
20 | DepthFrame(size_t row, size_t col)
21 | {
22 | dMap_ = std::make_shared(row, col);
23 | id_ = 0;
24 | T_world_frame_.setIdentity();
25 | }
26 |
27 | void setId(size_t id)
28 | {
29 | id_ = id;
30 | }
31 |
32 | void setTransformation(Transformation &T_world_frame)
33 | {
34 | T_world_frame_ = T_world_frame;
35 | }
36 |
37 | void clear()
38 | {
39 | dMap_->reset();
40 | id_ = 0;
41 | T_world_frame_.setIdentity();
42 | }
43 |
44 | DepthMap::Ptr dMap_;
45 | size_t id_;
46 | Transformation T_world_frame_;
47 | };
48 | }
49 | }
50 | #endif //ESVO2_CORE_DEPTHMAP_H
51 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/container/DepthPoint.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CONTAINER_DEPTHPOINT_H
2 | #define ESVO2_CORE_CONTAINER_DEPTHPOINT_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | namespace esvo2_core
9 | {
10 | namespace container
11 | {
12 | class DepthPoint
13 | {
14 | public:
15 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
16 | typedef std::shared_ptr Ptr;
17 |
18 | DepthPoint();
19 |
20 | DepthPoint(size_t row, size_t col);
21 | virtual ~DepthPoint();
22 |
23 | size_t row() const;
24 | size_t col() const;
25 |
26 | void update_x(const Eigen::Vector2d &x);
27 | const Eigen::Vector2d &x() const;
28 |
29 | double &invDepth();
30 | const double &invDepth() const;
31 |
32 | double &scaleSquared();
33 | const double &scaleSquared() const;
34 |
35 | double &nu();
36 | const double &nu() const;
37 |
38 | double &variance();
39 | const double &variance() const;
40 |
41 | double &residual();
42 | const double &residual() const;
43 |
44 | size_t &age();
45 | const size_t &age() const;
46 |
47 | void boundVariance();
48 |
49 | void update(double invDepth, double variance);// Gaussian distribution
50 | void update_studentT(double invDepth, double scale2, double variance, double nu); // T distribution
51 |
52 | void update_p_cam(const Eigen::Vector3d &p);
53 | const Eigen::Vector3d &p_cam() const;
54 |
55 | void updatePose(Eigen::Matrix &T_world_cam);// used in the fusion of each newly estimate.
56 | // Therefore, it is not necessary to call updatePose for those created in the fusion. Because those share
57 | // the pose of the fused depthFrame.
58 |
59 | const Eigen::Matrix &T_world_cam() const;
60 |
61 | bool valid() const;
62 | bool valid(double var_threshold,
63 | double age_threshold,
64 | double invDepth_max,
65 | double invDepth_min) const;
66 |
67 | //copy an element without the location
68 | void copy(const DepthPoint ©);
69 |
70 | private:
71 | //coordinates in the image
72 | size_t row_;
73 | size_t col_;
74 | Eigen::Vector2d x_;
75 |
76 | //inverse depth parameters
77 | double invDepth_;
78 | double scaleSquared_;// squared scale
79 | double nu_;
80 | double variance_;
81 | double residual_;
82 |
83 | // count the number of fusion has been applied on a depth point
84 | size_t age_;
85 |
86 | //3D point (updated in reference frame before tracking)
87 | Eigen::Vector3d p_cam_;
88 | Eigen::Matrix T_world_cam_;
89 | };
90 | }
91 | }
92 |
93 | #endif //ESVO2_CORE_CONTAINER_DEPTHPOINT_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/container/EventMatchPair.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_EVENTMATCHPAIR_H
2 | #define ESVO2_CORE_CORE_EVENTMATCHPAIR_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | namespace esvo2_core
11 | {
12 | using namespace container;
13 | using namespace tools;
14 | namespace core
15 | {
16 | struct EventMatchPair
17 | {
18 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
19 |
20 | EventMatchPair() {}
21 |
22 | // raw event coordinate
23 | Eigen::Vector2d x_left_raw_;
24 | // rectified_event coordinate (left, right)
25 | Eigen::Vector2d x_left_, x_right_;
26 | // timestamp
27 | ros::Time t_;
28 | // pose of virtual view (T_world_virtual)
29 | Transformation trans_;
30 | // inverse depth
31 | double invDepth_;
32 | // match cost
33 | double cost_;
34 | // gradient (left)
35 | double gx_, gy_;
36 | // disparity
37 | double disp_;
38 |
39 | // for debug
40 | Eigen::Vector2d x_last_;
41 | double error_ = 10000;
42 | double lr_cost;
43 | double lr_depth;
44 | double ln_cost;
45 | double ln_depth;
46 | vector costs_;
47 | };
48 | }
49 | }
50 |
51 | #endif //ESVO2_CORE_CORE_EVENTMATCHPAIR_H
52 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/container/ResidualItem.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CONTAINER_RESIDUALITEM_H
2 | #define ESVO2_CORE_CONTAINER_RESIDUALITEM_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | namespace esvo2_core
9 | {
10 | namespace container
11 | {
12 | struct ResidualItem
13 | {
14 | public:
15 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
16 | Eigen::Vector3d p_;// 3D coordinate in the reference frame
17 | Eigen::Vector2d p_img_;// 2D coordinate in the image plane
18 |
19 | // double IRLS_weight_;
20 | // double variance_;
21 | Eigen::VectorXd residual_;
22 | // bool bOutlier_;
23 |
24 | ResidualItem();
25 | ResidualItem(const double x,const double y,const double z);
26 | void initialize(const double x,const double y,const double z);
27 | };
28 |
29 | using ResidualItems = std::vector >;
30 | }// namespace container
31 | }// namespace esvo2_core
32 |
33 | #endif //ESVO2_CORE_CONTAINER_RESIDUALITEM_H
34 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/BackendOptimization.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_BACKEND_H
2 | #define ESVO2_CORE_CORE_BACKEND_H
3 |
4 | // #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 |
19 | namespace esvo2_core
20 | {
21 | using namespace container;
22 | using namespace tools;
23 | using namespace factor;
24 | namespace core
25 | {
26 |
27 | const int WINDOW_SIZE = 4;
28 | struct DepthPointFrame
29 | {
30 | ros::Time timestamp_;
31 | std::vector DepthPoints_;
32 |
33 | DepthPointFrame(ros::Time t, std::vector DepthPoints)
34 | {
35 | timestamp_ = t;
36 | DepthPoints_ = DepthPoints;
37 | }
38 |
39 | int size()
40 | {
41 | return DepthPoints_.size();
42 | }
43 | };
44 |
45 | class BackendOptimization
46 | {
47 | public:
48 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
49 |
50 | BackendOptimization(const CameraSystem::Ptr &camSysPtr);
51 |
52 | void setProblem(std::deque *dqvDepthPoints,
53 | TimeSurfaceHistory *pTS_history,
54 | ros::Publisher *pV_ba_bg_pub,
55 | bool bUSE_IMU);
56 | void sloveProblem();
57 |
58 | void double2Vector(double para_Pose[][7], double para_SpeedBias[][9]);
59 | void Tcam2Timu(esvo2_core::container::TimeSurfaceHistory::iterator ts_obs,
60 | esvo2_core::container::TimeSurfaceHistory::iterator last_obs,
61 | double para_Pose[][7],
62 | int i);
63 | void vector2Double(esvo2_core::container::TimeSurfaceHistory::iterator ts_obs,
64 | esvo2_core::container::TimeSurfaceHistory::iterator last_obs,
65 | double para_Pose[][7],
66 | double para_SpeedBias[][9],
67 | int i);
68 | void publishVBaBg(double time_v);
69 | bool CalibrationExRotation(Eigen::Matrix3d &calib_ric_result);
70 | bool LinearAlignment(Eigen::Vector3d &g, Eigen::VectorXd &x);
71 | void solveGyroscopeBias(Eigen::Vector3d &Bgs);
72 | void RefineGravity(Eigen::Vector3d &g, Eigen::VectorXd &x);
73 | void slideWindow();
74 | bool isOrthogonal(const Eigen::Matrix3d &matrix);
75 | Eigen::Matrix3d fixRotationMatrix(const Eigen::Matrix3d &R);
76 | // bool getPoseAt(const ros::Time &t, esvo2_core::Transformation &Tr, const std::string& source_frame);
77 |
78 | private:
79 | CameraSystem::Ptr camSysPtr_;
80 | std::deque *pDepthPoints_;
81 | TimeSurfaceHistory *pTS_history_;
82 | ros::Publisher *pV_ba_bg_pub_;
83 | bool initVsFlag, bUSE_IMU_;
84 |
85 | Eigen::Vector3d TIC_ = Eigen::Vector3d::Zero();
86 | Eigen::Matrix3d RIC_;
87 | Eigen::Matrix4d T_i_c_;
88 |
89 | public:
90 | int frame_count;
91 | Eigen::Vector3d g_optimal;
92 | Eigen::Vector3d Ps[(WINDOW_SIZE + 1)];
93 | Eigen::Vector3d Ps_before[(WINDOW_SIZE + 1)];
94 | Eigen::Vector3d Vs[(WINDOW_SIZE + 1)];
95 | Eigen::Matrix3d Rs[(WINDOW_SIZE + 1)];
96 | Eigen::Vector3d Bas[(WINDOW_SIZE + 1)];
97 | Eigen::Vector3d Bgs[(WINDOW_SIZE + 1)];
98 |
99 | IntegrationBase *pre_integrations[(WINDOW_SIZE + 1)];
100 | Eigen::Vector3d acc_0, gyr_0;
101 | std::shared_ptr tf_;
102 | std::vector time_of_pts_;
103 | Eigen::Matrix3d K_, K_of_pts_, K_pts_inv_;
104 | Eigen::Matrix4d T_rect_raw_;
105 | const string world_frame_id_ = "world";
106 | const std::string dvs_frame_id_ = "dvs";
107 | Eigen::Matrix4d T_wopt_window0_;
108 | };
109 | }
110 | }
111 |
112 | #endif // ESVO2_CORE_CORE_DEPTHPROBLEM_H
113 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/DepthFusion.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_DEPTHFUSION_H
2 | #define ESVO2_CORE_CORE_DEPTHFUSION_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 |
11 | namespace esvo2_core
12 | {
13 | using namespace container;
14 | namespace core
15 | {
16 | class DepthFusion
17 | {
18 | public:
19 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
20 |
21 | DepthFusion(
22 | CameraSystem::Ptr &camSysPtr,
23 | std::shared_ptr & dpConfigPtr);
24 |
25 | virtual ~DepthFusion();
26 |
27 | bool propagate_one_point(
28 | DepthPoint &dp_prior,
29 | DepthPoint &dp_prop,
30 | Eigen::Matrix &T_prop_prior);
31 |
32 | int fusion(
33 | DepthPoint &dp_prop,
34 | DepthMap::Ptr &dm,
35 | int fusion_radius = 0);
36 |
37 | int update(
38 | std::vector &dp_obs,
39 | DepthFrame::Ptr &df,
40 | int fusion_radius = 0);
41 |
42 | bool boundaryCheck(
43 | double xcoor,
44 | double ycoor,
45 | size_t width,
46 | size_t height);
47 |
48 | bool chiSquareTest(
49 | double invD1, double invD2,
50 | double var1, double var2);
51 |
52 | bool studentTCompatibleTest(
53 | double invD1, double invD2,
54 | double var1, double var2);
55 |
56 | // Used by GTL and SGM for comparison, and also used in the initialization.
57 | void naive_propagation(
58 | std::vector &dp_obs,
59 | DepthFrame::Ptr &df);
60 |
61 | bool naive_propagate_one_point(
62 | DepthPoint &dp_prior,
63 | DepthPoint &dp_prop,
64 | Eigen::Matrix &T_prop_prior);
65 |
66 | private:
67 | CameraSystem::Ptr camSysPtr_;
68 | std::shared_ptr dpConfigPtr_;
69 | };
70 | }
71 | }
72 |
73 | #endif //ESVO2_CORE_CORE_DEPTHFUSION_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/DepthProblem.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_DEPTHPROBLEM_H
2 | #define ESVO2_CORE_CORE_DEPTHPROBLEM_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | namespace esvo2_core
10 | {
11 | using namespace container;
12 | using namespace tools;
13 | namespace core
14 | {
15 | struct DepthProblemConfig
16 | {
17 | using Ptr = std::shared_ptr;
18 | DepthProblemConfig(
19 | size_t patchSize_X,
20 | size_t patchSize_Y,
21 | const std::string &LSnorm,
22 | double td_nu,
23 | double td_scale,
24 | size_t MAX_ITERATION,
25 | size_t RegularizationRadius,
26 | size_t RegularizationMinNeighbours,
27 | size_t RegularizationMinCloseNeighbours):
28 | patchSize_X_(patchSize_X),
29 | patchSize_Y_(patchSize_Y),
30 | LSnorm_(LSnorm),
31 | td_nu_(td_nu),
32 | td_scale_(td_scale),
33 | td_scaleSquared_(pow(td_scale,2)),
34 | td_stdvar_(sqrt(td_nu / (td_nu - 2) * td_scaleSquared_)),
35 | MAX_ITERATION_(MAX_ITERATION),
36 | RegularizationRadius_(RegularizationRadius),
37 | RegularizationMinNeighbours_(RegularizationMinNeighbours),
38 | RegularizationMinCloseNeighbours_(RegularizationMinCloseNeighbours)
39 | {}
40 |
41 | size_t patchSize_X_, patchSize_Y_;
42 | std::string LSnorm_;
43 | double td_nu_;
44 | double td_scale_;
45 | double td_scaleSquared_;// td_scale_^2
46 | double td_stdvar_;// sigma
47 | size_t MAX_ITERATION_;
48 | size_t RegularizationRadius_;
49 | size_t RegularizationMinNeighbours_;
50 | size_t RegularizationMinCloseNeighbours_;
51 | };
52 |
53 | struct DepthProblem : public factor::OptimizationFunctor
54 | {
55 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
56 | DepthProblem(
57 | const DepthProblemConfig::Ptr & dpConfig_ptr,
58 | const CameraSystem::Ptr & camSysPtr );
59 |
60 | void setProblem(Eigen::Vector2d & coor);
61 |
62 | void setProblem(
63 | Eigen::Vector2d & coor,
64 | Eigen::Matrix & T_world_virtual,
65 | constStampedTimeSurfaceObs* pStampedTsObs,
66 | bool problem_lr);
67 |
68 |
69 | // function that is inherited from factor::OptimizationFunctor
70 | int operator()( const Eigen::VectorXd &x, Eigen::VectorXd & fvec ) const;
71 |
72 | int df(const Eigen::VectorXd &x, Eigen::MatrixXd &fjac) const;
73 |
74 | // int inputs() const {return 1;}
75 | // int values() const {return 1;}
76 | // utils
77 | bool warping(
78 | const Eigen::Vector2d &x,
79 | double d,
80 | const Eigen::Matrix &T_left_virtual,
81 | Eigen::Vector2d &x1_s,
82 | Eigen::Vector2d &x2_s) const;
83 |
84 | bool patchInterpolation(
85 | const Eigen::MatrixXd &img,
86 | const Eigen::Vector2d &location,
87 | Eigen::MatrixXd &patch,
88 | bool debug = false) const;
89 |
90 | bool patchInterpolation(
91 | const Eigen::MatrixXd &img,
92 | const Eigen::Vector2d &location,
93 | Eigen::MatrixXd &patch,
94 | int wx,
95 | int wy,
96 | bool debug = false) const;
97 |
98 |
99 | // variables
100 | CameraSystem::Ptr camSysPtr_;
101 | DepthProblemConfig::Ptr dpConfigPtr_;
102 | Eigen::Vector2d coordinate_;
103 | Eigen::Matrix T_world_virtual_;
104 | std::vector,
105 | Eigen::aligned_allocator > > vT_left_virtual_;
106 | constStampedTimeSurfaceObs* pStampedTsObs_;
107 | bool problem_lr_;
108 | Eigen::Matrix4d T_last_now_;
109 | };
110 | }
111 | }
112 |
113 |
114 | #endif //ESVO2_CORE_CORE_DEPTHPROBLEM_H
115 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/DepthProblemSolver.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_DEPTHPROBLEMSOLVER2_H
2 | #define ESVO2_CORE_CORE_DEPTHPROBLEMSOLVER2_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 |
11 | namespace esvo2_core
12 | {
13 | namespace core
14 | {
15 | enum DepthProblemType
16 | {
17 | ANALYTICAL,
18 | NUMERICAL
19 | };
20 | class DepthProblemSolver
21 | {
22 | struct Job
23 | {
24 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
25 | size_t i_thread_;
26 | std::vector *pvEMP_;
27 | constStampedTimeSurfaceObs* pStamped_TS_obs_;
28 | std::shared_ptr dProblemPtr_;
29 | std::shared_ptr< Eigen::NumericalDiff > numDiff_dProblemPtr_;
30 | std::shared_ptr< std::vector > vdpPtr_;
31 | };
32 |
33 | public:
34 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
35 | DepthProblemSolver(
36 | CameraSystem::Ptr & camSysPtr,
37 | std::shared_ptr & dpConfigPtr,
38 | DepthProblemType dpType = NUMERICAL, // we only provide the numerical (jacobian) solver here, because the analytical one will not show remarkable efficiency.
39 | size_t numThread = 1,
40 | bool slove_lr = true);
41 |
42 | virtual ~DepthProblemSolver();
43 |
44 | void solve(
45 | std::vector* pvEMP,
46 | constStampedTimeSurfaceObs* pStampedTsObs,
47 | std::vector &vdp );
48 |
49 | void solve_multiple_problems(Job &job);
50 |
51 | bool solve_single_problem_numerical(
52 | double d_init,
53 | std::shared_ptr< Eigen::NumericalDiff > & dProblemPtr,
54 | double* result);
55 |
56 | bool solve_single_problem_analytical(
57 | double d_init,
58 | std::shared_ptr< DepthProblem > & dProblemPtr,
59 | double* result);
60 |
61 | bool init_single_point(
62 | Job & job);
63 |
64 | void pointCulling(
65 | std::vector &vdp,
66 | double std_variance_threshold,
67 | double cost_threshold,
68 | double invDepth_min_range,
69 | double invDepth_max_range);
70 |
71 | DepthProblemType getProblemType();
72 |
73 | private:
74 | CameraSystem::Ptr & camSysPtr_;
75 | std::shared_ptr dpConfigPtr_;
76 | size_t NUM_THREAD_;
77 | DepthProblemType dpType_;
78 | bool slove_lr_;
79 | };
80 | }
81 | }
82 | #endif //ESVO2_CORE_CORE_DEPTHPROBLEMSOLVER2_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/DepthRegularization.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_DEPTHREGULARIZATION_H
2 | #define ESVO2_CORE_CORE_DEPTHREGULARIZATION_H
3 |
4 | #include
5 | #include
6 | #include
7 | namespace esvo2_core
8 | {
9 | using namespace container;
10 | namespace core
11 | {
12 | class DepthRegularization
13 | {
14 | public:
15 | typedef std::shared_ptr Ptr;
16 |
17 | DepthRegularization(std::shared_ptr & dpConfigPtr);
18 | virtual ~DepthRegularization();
19 |
20 | void apply( DepthMap::Ptr & depthMapPtr );
21 |
22 | private:
23 | std::shared_ptr dpConfigPtr_;
24 | size_t _regularizationRadius;
25 | size_t _regularizationMinNeighbours;
26 | size_t _regularizationMinCloseNeighbours;
27 | };
28 | }// core
29 | }// esvo2_core
30 |
31 | #endif //ESVO2_CORE_CORE_DEPTHREGULARIZATION_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/EventBM.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_EVENTBM_H
2 | #define ESVO2_CORE_CORE_EVENTBM_H
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | namespace esvo2_core
11 | {
12 | using namespace tools;
13 | using namespace container;
14 | namespace core
15 | {
16 | class EventBM
17 | {
18 | struct Job
19 | {
20 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
21 | size_t i_thread_;
22 | std::vector* pvEventPtr_;
23 | std::vector >* pvpDisparitySearchBound_;
24 | std::shared_ptr > pvEventMatchPair_;
25 | };
26 |
27 | struct Job2
28 | {
29 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
30 | size_t i_thread_;
31 | std::vector* pvEventPairPtr_;
32 | std::vector >* pvpDisparitySearchBound_;
33 | std::shared_ptr > pvEventMatchPair_;
34 | };
35 |
36 | public:
37 | EventBM(
38 | CameraSystem::Ptr camSysPtr,
39 | size_t numThread = 1,
40 | bool bSmoothTS = false,
41 | size_t patch_size_X = 25,
42 | size_t patch_size_Y = 25,
43 | size_t min_disparity = 1,
44 | size_t max_disparity = 40,
45 | size_t step = 1,
46 | double ZNCC_Threshold = 0.1,
47 | bool bUpDownConfiguration = false);// bUpDownConfiguration determines the epipolar searching direction (UpDown or LeftRight).
48 | virtual ~EventBM();
49 |
50 | void resetParameters(
51 | size_t patch_size_X,
52 | size_t patch_size_Y,
53 | size_t min_disparity,
54 | size_t max_disparity,
55 | size_t step,
56 | double ZNCC_Threshold,
57 | bool bDonwUpConfiguration,
58 | size_t patch_size_X_2 = 5,
59 | size_t patch_size_Y_2 = 31);
60 |
61 | void createMatchProblem(
62 | constStampedTimeSurfaceObs * pStampedTsObs,
63 | StampTransformationMap * pSt_map,
64 | std::vector* pvEventsPtr);
65 | void createMatchProblemTwoFrames(
66 | constStampedTimeSurfaceObs * pStampedTsObs,
67 | StampTransformationMap * pSt_map,
68 | std::vector* pvEventsPtr,
69 | std::vector * vEMP);
70 |
71 | bool match_an_event(
72 | dvs_msgs::Event *pEvent,
73 | std::pair& pDisparityBound,
74 | EventMatchPair &emPair);
75 | bool match_an_event2(
76 | const dvs_msgs::Event *pEvent,
77 | std::pair& pDisparityBound,
78 | EventMatchPair &emPair);
79 | bool match_an_event3(
80 | dvs_msgs::Event *pEvent,
81 | std::pair& pDisparityBound,
82 | EventMatchPair &emPair,
83 | Eigen::MatrixXd& TS_left,
84 | Eigen::MatrixXd& TS_right);
85 | bool match_an_eventTwoFrames(
86 | EventMatchPair EMP_lr,
87 | std::pair& pDisparityBound,
88 | EventMatchPair &emPair);
89 |
90 | void match_all_SingleThread(std::vector &vEMP);
91 | void match_all_SingleThreadTwoFrames(std::vector &vEMP, std::vector &vEMP_fail);
92 | void match_all_HyperThread(std::vector &vEMP);
93 | void match_all_HyperThreadTwoFrames(std::vector &vEMP, std::vector &vEMP_fail);
94 |
95 | static double zncc_cost(Eigen::MatrixXd &patch_left, Eigen::MatrixXd &patch_right, bool normalized = false);
96 | double zncc_cost_fast(Eigen::VectorXd &colSum, Eigen::VectorXd &varSum, Eigen::MatrixXd &patch_left,
97 | Eigen::MatrixXd &patch_right, int &disp_to_rm, int &step_to_rm, double &mean_l, double &Tl_2, double &Tr, double &Tr_quare);
98 | double zncc_cost2(Eigen::MatrixXd &patch_left, Eigen::MatrixXd &patch_right, double &var_l, double &mean_l);
99 | float getMSSIM( const cv::Mat& i1, const cv::Mat& i2);
100 | private:
101 | void match(EventBM::Job &job);
102 | void match2(EventBM::Job &job);
103 | void match2_TwoFrames(EventBM::Job2& job);
104 | bool epipolarSearching(double& min_cost, Eigen::Vector2i& bestMatch, size_t& bestDisp, Eigen::MatrixXd& patch_dst,
105 | size_t searching_start_pos, size_t searching_end_pos, size_t searching_step,
106 | Eigen::Vector2i& x1, Eigen::MatrixXd& patch_src, bool bDownUpConfiguration = false);
107 | bool epipolarSearchingTwoFrames(double& min_cost, Eigen::Vector2i& bestMatch, int & bestDisp, Eigen::MatrixXd& patch_dst,
108 | int searching_start_pos, int searching_end_pos, size_t searching_step,
109 | Eigen::Vector2i& x1, Eigen::MatrixXd& patch_src, double dx, double dy, std::vector& costs,
110 | std::vector& fine_search, bool bDownUpConfiguration = false);
111 |
112 |
113 | bool epipolarSearchingCoarse(
114 | double& min_cost, Eigen::Vector2i& bestMatch, size_t& bestDisp, Eigen::MatrixXd& patch_dst,
115 | size_t searching_start_pos, size_t searching_end_pos, size_t searching_step,
116 | Eigen::Vector2i& x1, Eigen::MatrixXd& patch_src, bool bUpDownConfiguration, vector& searching_or_not,
117 | Eigen::VectorXd &colSum, Eigen::VectorXd &varSum, double &mean_l, double &Tl_2, double &Tr, double &Tr_quare);
118 |
119 | bool epipolarSearchingFine(double& min_cost, Eigen::Vector2i& bestMatch, size_t& bestDisp, Eigen::MatrixXd& patch_dst,
120 | vector& searching_radius,
121 | Eigen::Vector2i& x1, Eigen::MatrixXd& patch_src, bool bUpDownConfiguration);
122 |
123 | bool isNeedSSIM(std::vector& costs);
124 | bool isValidPatch(Eigen::Vector2i& x, Eigen::Vector2i& left_top, int size_y, int size_x);
125 | double triangulatePoint(Eigen::Vector2d &point0, Eigen::Vector2d &point1, double depth);
126 | private:
127 | CameraSystem::Ptr camSysPtr_;
128 | constStampedTimeSurfaceObs* pStampedTsObs_;
129 | StampTransformationMap * pSt_map_;
130 | std::vector vEventsPtr_;
131 | std::vector > vpDisparitySearchBound_;
132 | Sobel sb_;
133 |
134 | size_t NUM_THREAD_;
135 | bool bSmoothTS_;
136 | size_t patch_size_X_;
137 | size_t patch_size_Y_;
138 | size_t min_disparity_;
139 | size_t max_disparity_;
140 | size_t step_;
141 | double ZNCC_Threshold_;
142 | double ZNCC_MAX_;
143 | bool bUpDownConfiguration_;
144 |
145 | size_t coarseSearchingFailNum_, fineSearchingFailNum_, infoNoiseRatioLowNum_, outsideNum_, dxdyBigNum_;
146 | int coarseSearchingNum_ = 0;
147 |
148 | //to rm
149 | cv::Mat DispMap_;
150 | std::vector vEMP_lr_;
151 | Eigen::Matrix4d T_last_now_;
152 | Eigen::Matrix3d K_inv_;
153 | Eigen::Matrix3d K_rtf_, K_rtf_inv_, R_ori_rtf_;
154 | size_t patch_size_X_2_, patch_size_Y_2_;
155 | int num_of_need_ssim_, num_of_success_ssim_, avg_num_of_ssim_;
156 | double fine_searching_time_, croase_searching_time_;// croase_searching_time_1, croase_searching_time_2, croase_searching_time_3, croase_searching_time_4, pre_time_;
157 | int zncc_num_;
158 | bool use_fast_zncc_;
159 | std::mutex time_mutex_;
160 | };
161 | }// core
162 | }// esvo2_core
163 |
164 | #endif //ESVO2_CORE_CORE_EVENTBM_H
165 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/RegProblemLM.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_REGPROBLEMLM_H
2 | #define ESVO2_CORE_CORE_REGPROBLEMLM_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 |
10 | #include
11 | #include
12 |
13 | namespace esvo2_core
14 | {
15 | using namespace container;
16 | using namespace tools;
17 | namespace core
18 | {
19 | struct RegProblemConfig
20 | {
21 | using Ptr = std::shared_ptr;
22 | RegProblemConfig(
23 | size_t patchSize_X,
24 | size_t patchSize_Y,
25 | size_t kernelSize,
26 | const std::string &LSnorm,
27 | double huber_threshold,
28 | double invDepth_min_range = 0.2,
29 | double invDepth_max_range = 2.0,
30 | const size_t MIN_NUM_EVENTS = 1000,
31 | const size_t MAX_REGISTRATION_POINTS = 500,
32 | const size_t BATCH_SIZE = 200,
33 | const size_t MAX_ITERATION = 10):
34 | patchSize_X_(patchSize_X),
35 | patchSize_Y_(patchSize_Y),
36 | kernelSize_(kernelSize),
37 | LSnorm_(LSnorm),
38 | huber_threshold_(huber_threshold),
39 | invDepth_min_range_(invDepth_min_range),
40 | invDepth_max_range_(invDepth_max_range),
41 | MIN_NUM_EVENTS_(MIN_NUM_EVENTS),
42 | MAX_REGISTRATION_POINTS_(MAX_REGISTRATION_POINTS),
43 | BATCH_SIZE_(BATCH_SIZE),
44 | MAX_ITERATION_(MAX_ITERATION)
45 | {}
46 |
47 | size_t patchSize_X_, patchSize_Y_;
48 | size_t kernelSize_;
49 | std::string LSnorm_;
50 | double huber_threshold_;
51 | double invDepth_min_range_;
52 | double invDepth_max_range_;
53 | size_t MIN_NUM_EVENTS_;
54 | size_t MAX_REGISTRATION_POINTS_;
55 | size_t BATCH_SIZE_;
56 | size_t MAX_ITERATION_;
57 | };
58 |
59 | struct RefFrame
60 | {
61 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
62 | ros::Time t_;
63 | std::vector vPointXYZPtr_;
64 | Transformation tr_;
65 | };
66 |
67 | struct CurFrame
68 | {
69 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
70 | ros::Time t_;
71 | TimeSurfaceObservation* pTsObs_;
72 | Transformation tr_;
73 | Transformation tr_old_;
74 | size_t numEventsSinceLastObs_;
75 | };
76 |
77 | struct RegProblemLM : public factor::OptimizationFunctor
78 | {
79 | struct Job
80 | {
81 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
82 | ResidualItems* pvRI_;
83 | const TimeSurfaceObservation* pTsObs_;
84 | const Eigen::Matrix4d* T_left_ref_;
85 | size_t i_thread_;
86 | };
87 |
88 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
89 | RegProblemLM(
90 | const CameraSystem::Ptr& camSysPtr,
91 | const RegProblemConfig::Ptr& rpConfig_ptr,
92 | size_t numThread = 1);
93 | void setProblem(RefFrame* ref, CurFrame* cur, bool bComputeGrad = false);
94 | void setStochasticSampling(size_t offset, size_t N);
95 |
96 | void getWarpingTransformation(
97 | Eigen::Matrix4d& warpingTransf,
98 | const Eigen::Matrix& x) const;
99 | void addMotionUpdate( const Eigen::Matrix& dx );
100 | void setPose();
101 | Eigen::Matrix4d getPose();
102 |
103 | // optimization
104 | int operator()( const Eigen::Matrix& x, Eigen::VectorXd& fvec ) const;
105 | void thread( Job& job ) const;
106 | int df( const Eigen::Matrix& x, Eigen::MatrixXd& fjac ) const;
107 | void computeJ_G(const Eigen::Matrix&x, Eigen::Matrix& J_G);
108 |
109 | // utils
110 | bool isValidPatch(
111 | Eigen::Vector2d& patchCentreCoord,
112 | Eigen::MatrixXi& mask,
113 | size_t wx,
114 | size_t wy) const;
115 |
116 | bool reprojection(
117 | const Eigen::Vector3d& p,
118 | const Eigen::Matrix4d& warpingTransf,
119 | Eigen::Vector2d &x1_s) const;
120 |
121 | bool patchInterpolation(
122 | const Eigen::MatrixXd &img,
123 | const Eigen::Vector2d &location,
124 | Eigen::MatrixXd &patch,
125 | bool debug = false) const;
126 | //
127 | CameraSystem::Ptr camSysPtr_;
128 | RegProblemConfig::Ptr rpConfigPtr_;
129 | size_t patchSize_;
130 |
131 | size_t NUM_THREAD_;
132 | size_t numPoints_;
133 | size_t numBatches_;
134 |
135 | ResidualItems ResItems_, ResItemsStochSampled_;
136 | std::vector VisualizationIdx_;
137 | TimeSurfaceObservation* pTsObs_;
138 | RefFrame* ref_;
139 | CurFrame* cur_;
140 |
141 | Eigen::Matrix T_world_left_;// to record the current pose
142 | Eigen::Matrix T_world_ref_;// to record the ref pose (local ref map)
143 | Eigen::Matrix3d R_;//R_ref_cur_;
144 | Eigen::Vector3d t_;//t_ref_cur
145 |
146 | // Jacobian Constant
147 | Eigen::Matrix J_G_0_;
148 | // debug
149 | bool bPrint_;
150 | };// struct RegProblemLM
151 | }// namespace core
152 | }// namespace esvo2_core
153 |
154 | #endif //ESVO2_CORE_CORE_REGPROBLEMLM_H
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/core/RegProblemSolverLM.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_CORE_REGPROBLEMSOLVERLM_H
2 | #define ESVO2_CORE_CORE_REGPROBLEMSOLVERLM_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 |
9 | #include
10 | #include
11 |
12 | #include
13 | #include
14 | #include
15 |
16 | namespace esvo2_core
17 | {
18 | namespace core
19 | {
20 | enum RegProblemType
21 | {
22 | REG_NUMERICAL,
23 | REG_ANALYTICAL
24 | };
25 |
26 | struct LM_statics
27 | {
28 | size_t nPoints_;
29 | size_t nfev_;
30 | size_t nIter_;
31 | };
32 |
33 | class RegProblemSolverLM
34 | {
35 | public:
36 | EIGEN_MAKE_ALIGNED_OPERATOR_NEW
37 | RegProblemSolverLM(
38 | CameraSystem::Ptr& camSysPtr,
39 | std::shared_ptr& rpConfigPtr,
40 | RegProblemType rpType = REG_NUMERICAL,
41 | size_t numThread = 1);
42 | virtual ~RegProblemSolverLM();
43 |
44 | bool resetRegProblem(RefFrame* ref, CurFrame* cur);
45 | bool resetRegProblem(shared_ptr &rpConfigPtr, CameraSystem::Ptr& camSysPtr, RefFrame* ref, CurFrame* cur);
46 | bool solve_numerical();// relatively slower
47 | bool solve_analytical();// faster
48 |
49 | // For test and visualization
50 | void setRegPublisher(image_transport::Publisher* reprojMap_pub);
51 | LM_statics lmStatics_;// record LevenburgMarquardt log.
52 |
53 | // variables
54 | private:
55 | CameraSystem::Ptr& camSysPtr_;
56 | std::shared_ptr rpConfigPtr_;
57 | size_t NUM_THREAD_;
58 | RegProblemType rpType_;
59 |
60 | std::shared_ptr regProblemPtr_;
61 | std::shared_ptr > numDiff_regProblemPtr_;
62 |
63 | // For test
64 | double z_min_, z_max_;
65 | image_transport::Publisher *reprojMap_pub_;
66 | Visualization visualizor_;
67 | bool bPrint_, bVisualize_;
68 | };
69 | }//namespace core
70 | }//namespace esvo2_core
71 | #endif //ESVO2_CORE_CORE_REGPROBLEMSOLVER2_H
72 |
--------------------------------------------------------------------------------
/esvo2_core/include/esvo2_core/esvo2_Tracking.h:
--------------------------------------------------------------------------------
1 | #ifndef ESVO2_CORE_TRACKING_H
2 | #define ESVO2_CORE_TRACKING_H
3 |
4 | #include
5 |
6 | #include
7 | #include
8 |
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 |
15 | #include
16 |
17 | #include
18 | #include
19 | #include
20 | #include
21 | #include
22 |
23 | #include
24 | #include
25 | #include
26 | #include
27 |
28 | #include