├── .clang-format ├── .github ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .gitmodules ├── CONTRIBUTORS.md ├── LICENSE ├── README.md ├── algorithms ├── ceres-error-terms │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── ceres-error-terms │ │ │ ├── block-pose-prior-error-term-v2-inl.h │ │ │ ├── block-pose-prior-error-term-v2.h │ │ │ ├── block-pose-prior-error-term.h │ │ │ ├── ceres-signal-handler.h │ │ │ ├── common.h │ │ │ ├── generic-prior-error-term.h │ │ │ ├── inertial-error-term.h │ │ │ ├── landmark-common-inl.h │ │ │ ├── landmark-common.h │ │ │ ├── lidar-error-term-inl.h │ │ │ ├── lidar-error-term.h │ │ │ ├── loop-closure-block-pose-error-term-inl.h │ │ │ ├── loop-closure-block-pose-error-term.h │ │ │ ├── loop-closure-edge-error-term-inl.h │ │ │ ├── loop-closure-edge-error-term.h │ │ │ ├── parameterization │ │ │ ├── pose-param-jpl.h │ │ │ ├── quaternion-param-hamilton.h │ │ │ └── quaternion-param-jpl.h │ │ │ ├── pose-prior-error-term.h │ │ │ ├── position-error-term.h │ │ │ ├── problem-information.h │ │ │ ├── residual-information.h │ │ │ ├── six-dof-block-pose-error-term-autodiff-inl.h │ │ │ ├── six-dof-block-pose-error-term-autodiff.h │ │ │ ├── six-dof-block-pose-error-term-with-extrinsics-autodiff-inl.h │ │ │ ├── six-dof-block-pose-error-term-with-extrinsics-autodiff.h │ │ │ ├── switch-prior-error-term-inl.h │ │ │ ├── switch-prior-error-term.h │ │ │ ├── test │ │ │ ├── parameterization-numerical-diff-inl.h │ │ │ └── parameterization-numerical-diff.h │ │ │ ├── test_posegraph │ │ │ ├── loop_closure_constraint.h │ │ │ ├── posegraph.h │ │ │ └── posegraph_constraint.h │ │ │ ├── visual-error-term-factory-inl.h │ │ │ ├── visual-error-term-factory.h │ │ │ ├── visual-error-term-inl.h │ │ │ └── visual-error-term.h │ ├── package.xml │ ├── src │ │ ├── block-pose-prior-error-term-v2.cc │ │ ├── block-pose-prior-error-term.cc │ │ ├── ceres-signal-handler.cc │ │ ├── inertial-error-term.cc │ │ ├── parameterization │ │ │ ├── quaternion-param-hamilton.cc │ │ │ └── quaternion-param-jpl.cc │ │ ├── pose-prior-error-term.cc │ │ ├── position-error-term.cc │ │ └── problem-information.cc │ └── test │ │ ├── test_3keyframe_inertial_term_test.cc │ │ ├── test_block_pose_prior_error_term.cc │ │ ├── test_few_points_quaternion_test.cc │ │ ├── test_generic_prior_error_term.cc │ │ ├── test_inertial_term_test.cc │ │ ├── test_mission_baseframe_visual_term_test.cc │ │ ├── test_pose_parameterization_test.cc │ │ ├── test_pose_prior_error_term.cc │ │ ├── test_position_error_term.cc │ │ ├── test_quaternion_parameterization_test.cc │ │ ├── test_six_dof_block_transformation_error_term.cc │ │ ├── test_six_dof_block_transformation_error_term_with_extrinsics.cc │ │ ├── test_switchable_constraints_block_pose_baseframe_test.cc │ │ ├── test_switchable_constraints_block_pose_test.cc │ │ └── test_visual_term_test.cc ├── dense-reconstruction │ ├── depth_integration │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── include │ │ │ └── depth-integration │ │ │ │ ├── depth-integration-inl.h │ │ │ │ └── depth-integration.h │ │ ├── package.xml │ │ ├── src │ │ │ └── depth-integration.cc │ │ └── test │ │ │ ├── test-point-cloud-integration.cc │ │ │ └── test-voxblox-depth-integration.cc │ └── stereo-dense-reconstruction │ │ ├── CMakeLists.txt │ │ ├── include │ │ └── dense-reconstruction │ │ │ ├── aslam-cv-interface.h │ │ │ ├── disparity-conversion-utils.h │ │ │ ├── stereo-camera-utils.h │ │ │ ├── stereo-dense-reconstruction.h │ │ │ ├── stereo-matcher.h │ │ │ └── stereo-pair-detection.h │ │ ├── package.xml │ │ ├── parameter │ │ └── stereo_params.gflags │ │ ├── src │ │ ├── aslam-cv-interface.cpp │ │ ├── disparity-conversion-utils.cpp │ │ ├── stereo-camera-utils.cpp │ │ ├── stereo-dense-reconstruction.cpp │ │ ├── stereo-matcher.cpp │ │ └── stereo-pair-detection.cpp │ │ └── test │ │ └── test-stereo-dense-reconstruction.cpp ├── feature-tracking │ ├── CMakeLists.txt │ ├── include │ │ └── feature-tracking │ │ │ ├── feature-detection-extraction.h │ │ │ ├── feature-tracking-pipeline.h │ │ │ ├── feature-tracking-types.h │ │ │ ├── gridded-detector.h │ │ │ ├── vo-feature-tracking-pipeline.h │ │ │ └── vo-outlier-rejection-pipeline.h │ ├── package.xml │ └── src │ │ ├── feature-detection-extraction.cc │ │ ├── feature-tracking-pipeline.cc │ │ ├── feature-tracking-types.cc │ │ ├── vo-feature-tracking-pipeline.cc │ │ └── vo-outlier-rejection-pipeline.cc ├── imu-integrator-rk4 │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── imu-integrator │ │ │ ├── common.h │ │ │ ├── imu-integrator-inl.h │ │ │ └── imu-integrator.h │ ├── package.xml │ ├── src │ │ └── imu-integrator.cc │ └── test │ │ ├── imu_integrator_test_fixture.cc │ │ ├── matlab-imu-integrator │ │ ├── get_phi_cov_der.m │ │ ├── get_state_der.m │ │ ├── gyro_omega.m │ │ ├── integrate.m │ │ ├── interpolate_imu.m │ │ ├── q_to_rot_mat.m │ │ └── skew3.m │ │ ├── test_imu_integrator_basic_test.cc │ │ ├── test_imu_integrator_cov_phi_test.cc │ │ └── test_imu_integrator_trajectory_test.cc ├── landmark-triangulation │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── landmark-triangulation │ │ │ ├── landmark-triangulation.h │ │ │ └── pose-interpolator.h │ ├── package.xml │ ├── src │ │ ├── landmark-triangulation.cc │ │ └── pose-interpolator.cc │ └── test │ │ ├── test_landmark_triangulation.cc │ │ └── test_pose_interpolator_test.cc ├── loopclosure │ ├── descriptor-projection │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── include │ │ │ └── descriptor-projection │ │ │ │ ├── build-projection-matrix.h │ │ │ │ ├── descriptor-projection.h │ │ │ │ ├── flags.h │ │ │ │ ├── map-track-extractor.h │ │ │ │ └── train-projection-matrix.h │ │ ├── package.xml │ │ ├── src │ │ │ ├── build-projection-matrix.cc │ │ │ ├── descriptor-projection.cc │ │ │ ├── flags.cc │ │ │ ├── map-track-extractor.cc │ │ │ └── train-projection-matrix.cc │ │ └── test │ │ │ └── test_build-projection-matrix.cc │ ├── loop-closure-handler │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── include │ │ │ └── loop-closure-handler │ │ │ │ ├── inlier-index-with-reprojection-error.h │ │ │ │ ├── loop-closure-constraint.h │ │ │ │ ├── loop-closure-handler.h │ │ │ │ ├── loop-detector-node.h │ │ │ │ └── visualization │ │ │ │ └── loop-closure-visualizer.h │ │ ├── package.xml │ │ ├── src │ │ │ ├── inlier-index-with-reprojection-error.cc │ │ │ ├── loop-closure-handler.cc │ │ │ ├── loop-detector-node.cc │ │ │ └── visualization │ │ │ │ └── loop-closure-visualizer.cc │ │ └── test │ │ │ └── test_loop_closure_handling_test.cc │ ├── loopclosure-common │ │ ├── CMakeLists.txt │ │ ├── include │ │ │ └── loopclosure-common │ │ │ │ ├── flags.h │ │ │ │ └── types.h │ │ ├── package.xml │ │ └── src │ │ │ └── flags.cc │ ├── matching-based-loopclosure │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── env-hooks │ │ │ └── 40.loopclosure.sh.em │ │ ├── include │ │ │ └── matching-based-loopclosure │ │ │ │ ├── detector-settings.h │ │ │ │ ├── helpers.h │ │ │ │ ├── hnsw-index-interface.h │ │ │ │ ├── hnswlib │ │ │ │ ├── bruteforce.h │ │ │ │ ├── hnswalg.h │ │ │ │ ├── hnswlib.h │ │ │ │ ├── space_ip.h │ │ │ │ ├── space_l2.h │ │ │ │ └── visited_list_pool.h │ │ │ │ ├── imilib │ │ │ │ ├── inverted-multi-index-common.h │ │ │ │ ├── inverted-multi-index.h │ │ │ │ ├── inverted-multi-product-quantization-index.h │ │ │ │ └── product-quantization.h │ │ │ │ ├── index-interface.h │ │ │ │ ├── inverted-multi-index-interface.h │ │ │ │ ├── matching-based-engine-inl.h │ │ │ │ ├── matching-based-engine.h │ │ │ │ ├── scoring.h │ │ │ │ └── train-vocabulary.h │ │ ├── package.xml │ │ ├── share │ │ │ ├── inverted_multi_index_quantizer_brisk.dat │ │ │ ├── inverted_multi_index_quantizer_freak.dat │ │ │ ├── projection_matrix_brisk.dat │ │ │ └── projection_matrix_freak.dat │ │ ├── src │ │ │ ├── detector-settings.cc │ │ │ ├── matching-based-engine.cc │ │ │ └── train-vocabulary.cc │ │ └── test │ │ │ ├── test_hnsw.cc │ │ │ ├── test_inverted-multi-index-common.cc │ │ │ ├── test_inverted-multi-index-product-quantization.cc │ │ │ ├── test_inverted-multi-index.cc │ │ │ ├── test_product-quantization.cc │ │ │ └── test_scoring.cc │ └── vocabulary-tree │ │ ├── CMakeLists.txt │ │ ├── README.md │ │ ├── include │ │ └── vocabulary-tree │ │ │ ├── distance.h │ │ │ ├── feature-allocator.h │ │ │ ├── hamming.h │ │ │ ├── helpers.h │ │ │ ├── impl │ │ │ ├── hamming-inl.h │ │ │ ├── simple-kmeans-inl.h │ │ │ ├── tree-builder-inl.h │ │ │ └── vocabulary-tree-inl.h │ │ │ ├── mutable-tree.h │ │ │ ├── simple-kmeans.h │ │ │ ├── tree-builder.h │ │ │ ├── types.h │ │ │ ├── vocabulary-tree-maker.h │ │ │ └── vocabulary-tree.h │ │ ├── package.xml │ │ ├── src │ │ ├── helpers.cc │ │ └── vocabulary-tree-maker.cc │ │ └── test │ │ ├── floating-point-test-helpers.h │ │ ├── test_accelerated-kmeans.cc │ │ ├── test_accelerated-quantization.cc │ │ ├── test_binary-descriptor.cc │ │ ├── test_binary-kmeans.cc │ │ ├── test_binary-tree-builder.cc │ │ ├── test_binary-tree-serialization.cc │ │ └── test_bucketized-tree.cc ├── map-anchoring │ ├── CMakeLists.txt │ ├── include │ │ └── map-anchoring │ │ │ └── map-anchoring.h │ ├── package.xml │ └── src │ │ └── map-anchoring.cc ├── map-optimization │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── map-optimization │ │ │ ├── augment-loopclosure.h │ │ │ ├── callbacks.h │ │ │ ├── mission-cluster-gauge-fixes-inl.h │ │ │ ├── mission-cluster-gauge-fixes.h │ │ │ ├── optimization-problem.h │ │ │ ├── optimization-state-buffer.h │ │ │ ├── optimization-state-fixing.h │ │ │ ├── optimization-terms-addition.h │ │ │ ├── outlier-rejection-solver.h │ │ │ ├── solver-options.h │ │ │ ├── solver.h │ │ │ ├── vi-map-optimizer.h │ │ │ ├── vi-map-relaxation.h │ │ │ └── vi-optimization-builder.h │ ├── package.xml │ ├── src │ │ ├── augment-loopclosure.cc │ │ ├── optimization-problem.cc │ │ ├── optimization-state-buffer.cc │ │ ├── optimization-terms-addition.cc │ │ ├── outlier-rejection-solver.cc │ │ ├── solver-options.cc │ │ ├── solver.cc │ │ ├── vi-map-optimizer.cc │ │ ├── vi-map-relaxation.cc │ │ └── vi-optimization-builder.cc │ └── test │ │ ├── test-optimization-terms-addition.cc │ │ └── test-optimization.cc ├── map-sparsification │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── map-sparsification │ │ │ ├── graph-partition-sampler.h │ │ │ ├── heuristic │ │ │ ├── cost-functions │ │ │ │ ├── min-keypoints-per-keyframe-cost.h │ │ │ │ └── sampling-cost.h │ │ │ ├── heuristic-sampling.h │ │ │ ├── no-sampling.h │ │ │ ├── random-sampling.h │ │ │ └── scoring │ │ │ │ ├── descriptor-variance-scoring.h │ │ │ │ ├── observation-count-scoring.h │ │ │ │ └── scoring-function.h │ │ │ ├── keyframe-pruning.h │ │ │ ├── landmark-sparsifier-base.h │ │ │ ├── optimization │ │ │ ├── lp-solve-sparsification.h │ │ │ ├── lprec-wrapper.h │ │ │ └── quadratic-term.h │ │ │ ├── sampler-base.h │ │ │ ├── sampler-factory.h │ │ │ └── visualization │ │ │ └── map-sparsification-visualization.h │ ├── package.xml │ ├── proto │ │ └── map-sparsification │ │ │ └── keyframing-heuristics-options.proto │ ├── src │ │ ├── graph-partition-sampler.cc │ │ ├── heuristic │ │ │ ├── heuristic-sampling.cc │ │ │ ├── no-sampling.cc │ │ │ └── random-sampling.cc │ │ ├── keyframe-pruning.cc │ │ ├── landmark-sparsifier-base.cc │ │ ├── optimization │ │ │ ├── lp-solve-sparsification.cc │ │ │ └── quadratic-term.cc │ │ ├── sampler-base.cc │ │ ├── sampler-factory.cc │ │ └── visualization │ │ │ └── map-sparsification-visualization.cc │ └── test │ │ ├── test_heuristic_landmark_sparsification.cc │ │ ├── test_lpsolve_api.cc │ │ └── test_lpsolve_landmark_sparsification.cc ├── online-map-builders │ ├── CMakeLists.txt │ ├── include │ │ └── online-map-builders │ │ │ └── stream-map-builder.h │ ├── package.xml │ └── src │ │ └── stream-map-builder.cc ├── simulation │ ├── CMakeLists.txt │ ├── README.md │ ├── data │ │ └── polv326w.15n │ ├── env-hooks │ │ └── 40.simulation.sh.em │ ├── include │ │ ├── mav_planning_utils │ │ │ ├── mav_state.h │ │ │ ├── motion4D.h │ │ │ ├── motion_defines.h │ │ │ ├── path_planning.h │ │ │ ├── path_serialization.h │ │ │ ├── polynomial.h │ │ │ ├── sincos.h │ │ │ └── solvers.h │ │ └── simulation │ │ │ ├── eigen-visualization.h │ │ │ ├── generic-path-generator-demo.h │ │ │ ├── generic-path-generator.h │ │ │ ├── visual-inertial-path-generator.h │ │ │ ├── visual-nframe-simulator-channels.h │ │ │ └── visual-nframe-simulator.h │ ├── package.xml │ ├── proto │ │ └── path-4d.proto │ ├── src │ │ ├── generic-path-generator-demo.cc │ │ ├── generic-path-generator.cc │ │ ├── path_serialization.cc │ │ ├── visual-inertial-path-generator.cc │ │ └── visual-nframe-simulator.cc │ └── test │ │ ├── test-gps-simulator.cc │ │ ├── test-magnetometer-simulator.cc │ │ └── test-nframe-simulator.cc ├── vi-map-data-import-export │ ├── CMakeLists.txt │ ├── include │ │ └── vi-map-data-import-export │ │ │ ├── export-ncamera-calibration.h │ │ │ ├── export-vertex-data.h │ │ │ └── import-loop-closure-edges.h │ ├── package.xml │ └── src │ │ ├── export-ncamera-calibration.cc │ │ ├── export-vertex-data.cc │ │ └── import-loop-closure-edges.cpp └── vi-map-helpers │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── vi-map-helpers │ │ ├── mission-clustering-coobservation.h │ │ ├── vi-map-geometry-inl.h │ │ ├── vi-map-geometry.h │ │ ├── vi-map-landmark-quality-evaluation.h │ │ ├── vi-map-manipulation.h │ │ ├── vi-map-nearest-neighbor-lookup-inl.h │ │ ├── vi-map-nearest-neighbor-lookup.h │ │ ├── vi-map-partitioner.h │ │ ├── vi-map-queries-inl.h │ │ ├── vi-map-queries.h │ │ ├── vi-map-stats.h │ │ └── vi-map-vertex-time-queries.h │ ├── package.xml │ ├── src │ ├── mission-clustering-coobservation.cc │ ├── vi-map-geometry.cc │ ├── vi-map-landmark-quality-evaluation.cc │ ├── vi-map-manipulation.cc │ ├── vi-map-partitioner.cc │ ├── vi-map-queries.cc │ ├── vi-map-stats.cc │ └── vi-map-vertex-time-queries.cc │ └── test │ ├── test_landmark_quality_evaluation.cc │ ├── test_map_geometry_test.cc │ ├── test_mission_clustering_coobservation.cc │ ├── test_mission_observer_clustering.cc │ ├── test_nearest_neighbor_lookup_test.cc │ ├── test_queries_vertex_getter.cc │ └── test_vertex_time_queries_test.cc ├── applications ├── maplab-console-full │ ├── CMakeLists.txt │ └── package.xml ├── maplab-console │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── maplab-console │ │ │ └── maplab-console.h │ ├── package.xml │ ├── share │ │ ├── batch-runner-example.yaml │ │ └── maplab_console.rviz │ └── src │ │ ├── batch-runner.cc │ │ ├── maplab-console-app.cc │ │ └── maplab-console.cc ├── maplab-node │ ├── CMakeLists.txt │ ├── README.md │ ├── app │ │ └── maplab-ros-node-app.cc │ ├── include │ │ └── maplab-node │ │ │ ├── data-publisher-flow.h │ │ │ ├── datasource-factory.h │ │ │ ├── datasource-flow.h │ │ │ ├── datasource-rosbag.h │ │ │ ├── datasource-rostopic.h │ │ │ ├── datasource.h │ │ │ ├── feature-tracking-flow.h │ │ │ ├── feature-tracking.h │ │ │ ├── flow-topics.h │ │ │ ├── map-builder-flow.h │ │ │ ├── map-update-builder.h │ │ │ ├── maplab-node.h │ │ │ ├── maplab-ros-node.h │ │ │ ├── odometry-estimate.h │ │ │ ├── ros-helpers.h │ │ │ ├── synchronizer-flow.h │ │ │ ├── synchronizer-stats.h │ │ │ ├── synchronizer.h │ │ │ └── vi-map-with-mutex.h │ ├── launch │ │ └── euroc │ │ │ ├── calib │ │ │ └── euroc.yaml │ │ │ ├── euroc-maplab-node-w-rovioli.launch │ │ │ └── ros │ │ │ ├── euroc-maplab-node-rosparam.yaml │ │ │ └── euroc-rovioli-rosparam.yaml │ ├── package.xml │ ├── scripts │ │ └── absolute_pose_test_publisher.py │ ├── share │ │ └── maplab.rviz │ ├── src │ │ ├── data-publisher-flow.cc │ │ ├── datasource-factory.cc │ │ ├── datasource-rosbag.cc │ │ ├── datasource-rostopic.cc │ │ ├── datasource.cc │ │ ├── feature-tracking.cc │ │ ├── map-builder-flow.cc │ │ ├── map-update-builder.cc │ │ ├── maplab-node.cc │ │ ├── maplab-ros-node.cc │ │ ├── ros-helpers.cc │ │ └── synchronizer.cc │ └── test │ │ ├── end_to_end_test.py │ │ ├── test-feature-tracking.cc │ │ └── test-map-update-builder.cc ├── maplab-server-node │ ├── CMakeLists.txt │ ├── README.md │ ├── app │ │ └── maplab-server-ros-node-app.cc │ ├── cfg │ │ └── maplab_server_ros_params.yaml │ ├── include │ │ └── maplab-server-node │ │ │ ├── maplab-server-node.h │ │ │ └── maplab-server-ros-node.h │ ├── launch │ │ └── euroc │ │ │ ├── calib │ │ │ ├── euroc-stereo-mh1.yaml │ │ │ ├── euroc-stereo-mh2.yaml │ │ │ ├── euroc-stereo-mh3.yaml │ │ │ ├── euroc-stereo-mh4.yaml │ │ │ └── euroc-stereo-mh5.yaml │ │ │ ├── euroc-maplab-node-w-rovioli.launch │ │ │ ├── euroc-maplab-server-base-station.launch │ │ │ ├── euroc-maplab-server-robots.launch │ │ │ └── ros │ │ │ ├── euroc-maplab-node-rosparam.yaml │ │ │ ├── euroc-maplab-server-minimal.rviz │ │ │ └── euroc-rovioli-rosparam.yaml │ ├── package.xml │ ├── src │ │ ├── maplab-server-node.cc │ │ └── maplab-server-ros-node.cc │ └── test │ │ └── test-maplab-server-node.cc └── rovioli │ ├── CMakeLists.txt │ ├── README.md │ ├── app │ └── rovioli-app.cc │ ├── env-hooks │ └── 10.rovio-config-template.sh.em │ ├── include │ └── rovioli │ │ ├── data-publisher-flow.h │ │ ├── datasource-factory.h │ │ ├── datasource-flow.h │ │ ├── datasource-rosbag.h │ │ ├── datasource-rostopic.h │ │ ├── datasource.h │ │ ├── feature-tracking-flow.h │ │ ├── feature-tracking.h │ │ ├── flow-topics.h │ │ ├── imu-camera-synchronizer-flow.h │ │ ├── imu-camera-synchronizer.h │ │ ├── localizer-flow.h │ │ ├── localizer-helpers.h │ │ ├── localizer.h │ │ ├── map-builder-flow.h │ │ ├── ros-helpers.h │ │ ├── rovio-estimate.h │ │ ├── rovio-factory.h │ │ ├── rovio-flow.h │ │ ├── rovio-health-monitor.h │ │ ├── rovio-localization-handler.h │ │ ├── rovio-maplab-timetranslation.h │ │ ├── rovioli-node.h │ │ ├── vi-map-with-mutex.h │ │ └── vio-update-builder.h │ ├── launch │ ├── rovioli.launch │ ├── rovioli_rgbdi.launch │ ├── rovioli_tango_coconut.launch │ └── rovioli_template.launch │ ├── package.xml │ ├── scripts │ ├── run_rovioli │ ├── run_rovioli_live │ └── tutorials │ │ ├── tutorial_euroc │ │ ├── tutorial_euroc_live │ │ └── tutorial_euroc_localization │ ├── share │ ├── euroc-mono.yaml │ ├── euroc-stereo.yaml │ ├── imu-adis16488.yaml │ ├── imu-realsense-zr300.yaml │ ├── imu-tango-tablet-yellowstone.yaml │ ├── ncamera-euroc-stereo.yaml │ ├── ncamera-euroc.yaml │ ├── ncamera-zr300.yaml │ ├── rovio_default_config.info │ └── rovioli-rosparams.yaml │ ├── src │ ├── data-publisher-flow.cc │ ├── datasource-factory.cc │ ├── datasource-rosbag.cc │ ├── datasource-rostopic.cc │ ├── datasource.cc │ ├── feature-tracking.cc │ ├── imu-camera-synchronizer.cc │ ├── localizer-flow.cc │ ├── localizer-helpers.cc │ ├── localizer.cc │ ├── map-builder-flow.cc │ ├── ros-helpers.cc │ ├── rovio-factory.cc │ ├── rovio-flow.cc │ ├── rovio-localization-handler.cc │ ├── rovioli-node.cc │ └── vio-update-builder.cc │ └── test │ ├── test-feature-tracking.cc │ ├── test-ros-helpers.cc │ └── test-vio-update-builder.cc ├── aslam_cv2 ├── CONTRIBUTORS.md ├── README.md ├── aslam_cv_cameras │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── cameras │ │ │ ├── camera-3d-lidar-inl.h │ │ │ ├── camera-3d-lidar.h │ │ │ ├── camera-factory.h │ │ │ ├── camera-inl.h │ │ │ ├── camera-pinhole-inl.h │ │ │ ├── camera-pinhole.h │ │ │ ├── camera-unified-projection.h │ │ │ ├── camera.h │ │ │ ├── distortion-equidistant.h │ │ │ ├── distortion-fisheye-inl.h │ │ │ ├── distortion-fisheye.h │ │ │ ├── distortion-inl.h │ │ │ ├── distortion-null.h │ │ │ ├── distortion-radtan.h │ │ │ ├── distortion.h │ │ │ ├── ncamera.h │ │ │ └── random-camera-generator.h │ ├── package.xml │ ├── src │ │ ├── camera-3d-lidar.cc │ │ ├── camera-factory.cc │ │ ├── camera-pinhole.cc │ │ ├── camera-unified-projection.cc │ │ ├── camera.cc │ │ ├── distortion-equidistant.cc │ │ ├── distortion-fisheye.cc │ │ ├── distortion-radtan.cc │ │ ├── distortion.cc │ │ ├── ncamera.cc │ │ └── random-camera-generator.cc │ └── test │ │ ├── test-camera-3d-lidar.cc │ │ ├── test-cameras.cc │ │ ├── test-distortions.cc │ │ └── test-ncamera.cc ├── aslam_cv_common │ ├── CMakeLists.txt │ ├── cmake │ │ ├── detect_simd.cmake │ │ ├── export_flags.cmake │ │ └── setup_openmp.cmake │ ├── include │ │ └── aslam │ │ │ └── common │ │ │ ├── channel-declaration.h │ │ │ ├── channel-definitions.h │ │ │ ├── channel-external-declaration.h │ │ │ ├── channel-serialization.h │ │ │ ├── channel.h │ │ │ ├── covariance-helpers.h │ │ │ ├── crtp-clone.h │ │ │ ├── descriptor-utils.h │ │ │ ├── eigen-hash.h │ │ │ ├── entrypoint.h │ │ │ ├── feature-descriptor-ref-inl.h │ │ │ ├── feature-descriptor-ref.h │ │ │ ├── hamming-inl.h │ │ │ ├── hamming.h │ │ │ ├── hash-id.h │ │ │ ├── internal │ │ │ └── unique-id.h │ │ │ ├── macros.h │ │ │ ├── memory.h │ │ │ ├── meta.h │ │ │ ├── neon-helpers.h │ │ │ ├── numdiff-jacobian-tester.h │ │ │ ├── occupancy-grid-inl.h │ │ │ ├── occupancy-grid.h │ │ │ ├── opencv-predicates.h │ │ │ ├── pose-types.h │ │ │ ├── predicates.h │ │ │ ├── reader-first-reader-writer-lock.h │ │ │ ├── reader-writer-lock.h │ │ │ ├── sensor.h │ │ │ ├── statistics │ │ │ ├── accumulator.h │ │ │ └── statistics.h │ │ │ ├── stl-helpers-inl.h │ │ │ ├── stl-helpers.h │ │ │ ├── thread-pool.h │ │ │ ├── time.h │ │ │ ├── timer.h │ │ │ ├── types.h │ │ │ ├── unique-id.h │ │ │ ├── yaml-file-serialization.h │ │ │ ├── yaml-serialization-eigen.h │ │ │ └── yaml-serialization.h │ ├── package.xml │ ├── proto │ │ └── aslam │ │ │ └── common │ │ │ └── id.proto │ ├── src │ │ ├── channel-serialization.cc │ │ ├── channel.cc │ │ ├── covariance-helpers.cc │ │ ├── hash-id.cc │ │ ├── internal │ │ │ └── unique-id.cc │ │ ├── reader-first-reader-writer-lock.cc │ │ ├── reader-writer-lock.cc │ │ ├── sensor.cc │ │ ├── statistics.cc │ │ ├── thread-pool.cc │ │ └── timer.cc │ └── test │ │ ├── reader_writer_lock_test.cc │ │ ├── reader_writer_mutex_fixture.h │ │ ├── reader_writer_mutex_fixture_inl.h │ │ ├── test-channel-serialization.cc │ │ ├── test-channels.cc │ │ ├── test-covariance-helpers.cc │ │ ├── test-descriptor-utils.cc │ │ ├── test-eigen-yaml-serialization.cc │ │ ├── test-hash-id.cc │ │ ├── test-occupancy-grid.cc │ │ ├── test-stl-helpers.cc │ │ ├── test-thread-pool.cc │ │ └── test-time.cc ├── aslam_cv_detector │ ├── CMakeLists.txt │ ├── include │ │ ├── aslam │ │ │ └── detectors │ │ │ │ ├── line-segment-detector.h │ │ │ │ └── line.h │ │ ├── kaze │ │ │ ├── KAZE.h │ │ │ ├── KAZEConfig.h │ │ │ ├── fed.h │ │ │ ├── nldiffusion_functions.h │ │ │ └── utils.h │ │ └── lsd │ │ │ └── lsd-opencv.h │ ├── package.xml │ └── src │ │ ├── kaze │ │ ├── KAZE.cpp │ │ ├── LICENSE │ │ ├── fed.cpp │ │ ├── nldiffusion_functions.cpp │ │ └── utils.cpp │ │ ├── line-segment-detector.cc │ │ └── lsd │ │ └── lsd-opencv.cc ├── aslam_cv_frames │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── frames │ │ │ ├── feature-track-inl.h │ │ │ ├── feature-track.h │ │ │ ├── keypoint-identifier.h │ │ │ ├── visual-frame.h │ │ │ └── visual-nframe.h │ ├── package.xml │ ├── src │ │ ├── visual-frame.cc │ │ └── visual-nframe.cc │ └── test │ │ ├── test-visual-frame.cc │ │ └── test-visual-nframe.cc ├── aslam_cv_geometric_vision │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── geometric-vision │ │ │ ├── match-outlier-rejection-twopt.h │ │ │ └── pnp-pose-estimator.h │ ├── package.xml │ ├── src │ │ ├── match-outlier-rejection-twopt.cc │ │ └── pnp-pose-estimator.cc │ └── test │ │ └── test_pnp_pose_estimator_test.cc ├── aslam_cv_matcher │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── matcher │ │ │ ├── gyro-two-frame-matcher.h │ │ │ ├── match-helpers.h │ │ │ └── match.h │ ├── package.xml │ └── src │ │ ├── gyro-two-frame-matcher.cc │ │ └── match-helpers.cc ├── aslam_cv_pipeline │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── pipeline │ │ │ ├── visual-npipeline.h │ │ │ ├── visual-pipeline-null.h │ │ │ └── visual-pipeline.h │ ├── package.xml │ ├── src │ │ ├── visual-npipeline.cc │ │ ├── visual-pipeline-null.cc │ │ └── visual-pipeline.cc │ └── test │ │ └── test-visual-npipeline.cc ├── aslam_cv_tracker │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── tracker │ │ │ ├── feature-tracker-gyro.h │ │ │ ├── feature-tracker.h │ │ │ ├── track-manager.h │ │ │ └── tracking-helpers.h │ ├── package.xml │ ├── src │ │ ├── feature-tracker-gyro.cc │ │ ├── track-manager.cc │ │ └── tracking-helpers.cc │ └── test │ │ └── test-track-manager.cc ├── aslam_cv_triangulation │ ├── CMakeLists.txt │ ├── include │ │ └── aslam │ │ │ └── triangulation │ │ │ ├── test │ │ │ └── triangulation-fixture.h │ │ │ └── triangulation.h │ ├── package.xml │ ├── src │ │ ├── benchmark │ │ │ └── triangulation-benchmark.cc │ │ └── triangulation.cc │ └── test │ │ └── test-triangulation.cc └── aslam_cv_visualization │ ├── CMakeLists.txt │ ├── include │ └── aslam │ │ └── visualization │ │ └── basic-visualization.h │ ├── package.xml │ └── src │ └── basic-visualization.cc ├── backend ├── map-manager │ ├── CMakeLists.txt │ ├── include │ │ └── map-manager │ │ │ ├── map-manager-inl.h │ │ │ ├── map-manager.h │ │ │ ├── map-storage-inl.h │ │ │ ├── map-storage.h │ │ │ └── test │ │ │ ├── test-map-type.h │ │ │ └── test-strings.h │ ├── package.xml │ ├── src │ │ └── dummy-src.cc │ └── test │ │ └── map-manager-basic-test.cc └── map-resources │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── map-resources │ │ ├── resource-cache-inl.h │ │ ├── resource-cache.h │ │ ├── resource-common.h │ │ ├── resource-conversion-inl.h │ │ ├── resource-conversion.h │ │ ├── resource-loader-inl.h │ │ ├── resource-loader.h │ │ ├── resource-map-inl.h │ │ ├── resource-map-serialization.h │ │ ├── resource-map.h │ │ ├── resource-typedefs.h │ │ ├── temporal-resource-id-buffer.h │ │ └── test │ │ ├── resource-template.h │ │ └── resources-test.h │ ├── package.xml │ ├── proto │ └── map-resources │ │ ├── resource_info_map.proto │ │ ├── resource_metadata.proto │ │ └── resource_object_instance_bbox.proto │ ├── src │ ├── resource-cache.cc │ ├── resource-common.cc │ ├── resource-conversion.cc │ ├── resource-loader.cc │ ├── resource-map-serialization.cc │ └── resource-map.cc │ └── test │ ├── test-temporal-resource-id-buffer.cc │ ├── test_resource_conversion.cc │ ├── test_resource_loader.cc │ └── test_resource_map.cc ├── common ├── aslam-serialization │ ├── CMakeLists.txt │ ├── cmake │ │ └── aslam_serialization-extras.cmake.in │ ├── include │ │ └── aslam-serialization │ │ │ ├── camera-serialization.h │ │ │ └── visual-frame-serialization.h │ ├── package.xml │ ├── proto │ │ └── aslam-serialization │ │ │ ├── camera.proto │ │ │ └── visual-frame.proto │ ├── src │ │ ├── camera-serialization.cc │ │ └── visual-frame-serialization.cc │ └── test │ │ ├── test-camera-serialization.cc │ │ └── test-visual-frame-serialization.cc ├── console-common │ ├── CMakeLists.txt │ ├── cmake │ │ └── create-console-plugin.cmake │ ├── env-hooks │ │ └── 50.maplab-console-plugin-common.sh │ ├── include │ │ └── console-common │ │ │ ├── basic-console-plugin.h │ │ │ ├── command-registerer.h │ │ │ ├── console-plugin-base-with-plotter.h │ │ │ ├── console-plugin-base.h │ │ │ ├── console.h │ │ │ └── safe-gflags-parser.h │ ├── package.xml │ └── src │ │ ├── basic-console-plugin.cc │ │ ├── command-registerer.cc │ │ ├── console-plugin-base.cc │ │ ├── console.cc │ │ └── safe-gflags-parser.cc ├── dense-reconstruction-common │ ├── CMakeLists.txt │ ├── include │ │ └── dense-reconstruction │ │ │ ├── conversion-tools.h │ │ │ └── resource-utils.h │ ├── package.xml │ └── src │ │ ├── conversion-tools.cc │ │ └── resource-utils.cc ├── maplab-common │ ├── .gitignore │ ├── CMakeLists.txt │ ├── include │ │ └── maplab-common │ │ │ ├── accessors.h │ │ │ ├── bidirectional-map.h │ │ │ ├── binary-serialization.h │ │ │ ├── conversions.h │ │ │ ├── eigen-proto-inl.h │ │ │ ├── eigen-proto.h │ │ │ ├── eigen-yaml-serialization.h │ │ │ ├── feature-descriptor-ref.h │ │ │ ├── file-logger-inl.h │ │ │ ├── file-logger.h │ │ │ ├── file-system-tools-inl.h │ │ │ ├── file-system-tools.h │ │ │ ├── fixed-size-queue.h │ │ │ ├── frequency-enforcer.h │ │ │ ├── geometry-inl.h │ │ │ ├── geometry.h │ │ │ ├── global-coordinate-tools.h │ │ │ ├── glog-helpers.h │ │ │ ├── gravity-provider.h │ │ │ ├── interpolation-helpers.h │ │ │ ├── localization-result.h │ │ │ ├── macros.h │ │ │ ├── map-manager-config.h │ │ │ ├── map-traits.h │ │ │ ├── monitor.h │ │ │ ├── multi-threaded-progress-bar.h │ │ │ ├── parallel-process.h │ │ │ ├── pose_types.h │ │ │ ├── progress-bar.h │ │ │ ├── proto-helpers.h │ │ │ ├── proto-serialization-helper.h │ │ │ ├── quaternion-math-inl.h │ │ │ ├── quaternion-math.h │ │ │ ├── sigint-breaker.h │ │ │ ├── signals.h │ │ │ ├── string-tools.h │ │ │ ├── stringprintf.h │ │ │ ├── temporal-buffer-inl.h │ │ │ ├── temporal-buffer.h │ │ │ ├── test │ │ │ ├── serialization-macros.h │ │ │ ├── testing-entrypoint.h │ │ │ └── testing-predicates.h │ │ │ ├── text-formatting.h │ │ │ ├── threading-helpers.h │ │ │ ├── timeout-counter.h │ │ │ ├── traits.h │ │ │ ├── ui-utility.h │ │ │ └── yaml-serialization.h │ ├── package.xml │ ├── proto │ │ └── maplab-common │ │ │ └── eigen.proto │ ├── python │ │ └── maplab_common │ │ │ ├── __init__.py │ │ │ ├── bash_utils.py │ │ │ └── roscore_handling.py │ ├── setup.py │ ├── src │ │ ├── binary-serialization.cc │ │ ├── feature-descriptor-ref.cc │ │ ├── file-logger.cc │ │ ├── file-system-tools.cc │ │ ├── geometry.cc │ │ ├── global-coordinate-tools.cc │ │ ├── gravity-provider.cc │ │ ├── map-manager-config.cc │ │ ├── multi-threaded-progress-bar.cc │ │ ├── progress-bar.cc │ │ ├── proto-serialization-helper.cc │ │ ├── shared-gflags.cc │ │ ├── sigint-breaker.cc │ │ ├── signals.cc │ │ ├── stringprintf.cc │ │ ├── test │ │ │ └── testing-entrypoint.cc │ │ └── threading-helpers.cc │ └── test │ │ ├── test-interpolation-helpers.cc │ │ ├── test-quaternion-math.cc │ │ ├── test-signals.cc │ │ ├── test-timeout-counter.cc │ │ ├── test_accessors.cc │ │ ├── test_bidirectional_map.cc │ │ ├── test_eigen_proto_test.cc │ │ ├── test_eigen_yaml_serialization.cc │ │ ├── test_feature-descriptor-ref.cc │ │ ├── test_file_logger.cc │ │ ├── test_file_system_tools.cc │ │ ├── test_fixed_size_queue.cc │ │ ├── test_geometry.cc │ │ ├── test_global-coordinate-tools.cc │ │ ├── test_monitor.cc │ │ ├── test_multi_threaded_progress_bar.cc │ │ ├── test_parallel_process.cc │ │ ├── test_progress_bar.cc │ │ ├── test_stl_yaml_serialization.cc │ │ ├── test_string_tools.cc │ │ └── test_temporal_buffer.cc ├── maplab-ros-common │ ├── CMakeLists.txt │ ├── include │ │ └── maplab-ros-common │ │ │ ├── gflags-interface.h │ │ │ ├── image-conversion.h │ │ │ ├── implementation │ │ │ └── rosbag-tools.h │ │ │ └── rosbag-tools.h │ ├── package.xml │ └── src │ │ └── gflags-interface.cc ├── message-flow │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── message-flow │ │ │ ├── callback-types.h │ │ │ ├── message-delivery-queue.h │ │ │ ├── message-dispatcher-fifo.h │ │ │ ├── message-dispatcher.h │ │ │ ├── message-flow-inl.h │ │ │ ├── message-flow.h │ │ │ ├── message-topic-registration.h │ │ │ ├── publisher.h │ │ │ ├── subscriber-list.h │ │ │ └── subscriber-network.h │ ├── package.xml │ ├── src │ │ └── message-flow.cc │ └── test │ │ └── test-message-flow.cc ├── resources-common │ ├── .gitignore │ ├── CMakeLists.txt │ ├── include │ │ └── resources-common │ │ │ ├── point-cloud.h │ │ │ └── tinyply │ │ │ └── tinyply.h │ ├── package.xml │ └── src │ │ └── tinyply │ │ └── tinyply.cc └── vio-common │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── vio-common │ │ ├── imu-forward-propagation.h │ │ ├── imu-measurements-buffer.h │ │ ├── internal │ │ ├── imu-measurements-buffer-inl.h │ │ └── vio-types-inl.h │ │ ├── map-update.h │ │ ├── pose-lookup-buffer.h │ │ ├── rostopic-settings.h │ │ ├── test │ │ └── vio-update-simulation.h │ │ ├── vio-types.h │ │ └── vio-update.h │ ├── package.xml │ ├── src │ ├── imu-forward-propagation.cc │ ├── imu-measurements-buffer.cc │ ├── pose-lookup-buffer.cc │ ├── rostopic-settings.cc │ └── test │ │ └── vio-update-simulation.cc │ └── test │ └── test-imu-measurements-buffer.cc ├── console-plugins ├── dense-reconstruction-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── dense-reconstruction │ │ │ ├── dense-reconstruction-plugin.h │ │ │ └── voxblox-params.h │ ├── package.xml │ └── src │ │ ├── dense-reconstruction-plugin.cc │ │ └── voxblox-params.cc ├── landmark-manipulation-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── landmark-manipulation-plugin │ │ │ └── landmark-manipulation-plugin.h │ ├── package.xml │ └── src │ │ └── landmark-manipulation-plugin.cc ├── loop-closure-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── loop-closure-plugin │ │ │ ├── loop-closure-plugin.h │ │ │ └── vi-map-merger.h │ ├── package.xml │ └── src │ │ ├── loop-closure-plugin.cc │ │ └── vi-map-merger.cc ├── map-anchoring-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── map-anchoring-plugin │ │ │ └── anchoring-plugin.h │ ├── package.xml │ └── src │ │ └── anchoring-plugin.cc ├── map-optimization-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── map-optimization-plugin │ │ │ └── optimizer-plugin.h │ ├── package.xml │ └── src │ │ └── optimizer-plugin.cc ├── map-sparsification-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── map-sparsification-plugin │ │ │ ├── keyframe-pruning.h │ │ │ ├── landmark-sparsification.h │ │ │ └── map-sparsification-plugin.h │ ├── package.xml │ └── src │ │ ├── keyframe-pruning.cc │ │ ├── landmark-sparsification.cc │ │ └── map-sparsification-plugin.cc ├── mapping-workflows-plugin │ ├── .gitignore │ ├── CMakeLists.txt │ ├── include │ │ └── mapping-workflows-plugin │ │ │ ├── localization-map-creation.h │ │ │ └── mapping-workflows-plugin.h │ ├── package.xml │ └── src │ │ ├── localization-map-creation.cc │ │ └── mapping-workflows-plugin.cc ├── pose-graph-manipulation-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── pose-graph-manipulation-plugin │ │ │ ├── edge-manipulation.h │ │ │ └── pose-graph-manipulation-plugin.h │ ├── package.xml │ └── src │ │ ├── edge-manipulation.cc │ │ └── pose-graph-manipulation-plugin.cc ├── rosbag-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── rosbag-plugin │ │ │ └── rosbag-plugin.h │ ├── package.xml │ └── src │ │ └── rosbag-plugin.cc ├── statistics-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── statistics-plugin │ │ │ └── statistics-plugin.h │ ├── package.xml │ └── src │ │ └── statistics-plugin.cc ├── vi-map-basic-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── vi-map-basic-plugin │ │ │ └── vi-map-basic-plugin.h │ ├── package.xml │ ├── src │ │ └── vi-map-basic-plugin.cc │ └── test │ │ ├── map-manager-file-io-test.cc │ │ └── map-manager-vi-map-test.cc ├── vi-map-data-import-export-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── vi-map-data-import-export-plugin │ │ │ └── data-import-export-plugin.h │ ├── package.xml │ └── src │ │ └── data-import-export-plugin.cc ├── vi-map-summarization-plugin │ ├── CMakeLists.txt │ ├── include │ │ └── vi-map-summarization-plugin │ │ │ └── summarization-plugin.h │ ├── package.xml │ └── src │ │ └── summarization-plugin.cc └── vi-map-visualization-plugin │ ├── CMakeLists.txt │ ├── include │ └── vi-map-visualization-plugin │ │ └── visualization-plugin.h │ ├── package.xml │ └── src │ └── visualization-plugin.cc ├── deploy ├── Dockerfile ├── build_docker.sh ├── build_docker_with_rviz.sh ├── compile.sh ├── copy_to_ctx.sh ├── docker-compose.yml ├── install_base.sh ├── install_packages.sh ├── install_ros.sh └── set_env.sh ├── docs ├── Doxyfile ├── Makefile ├── _templates │ ├── versioning.html │ └── versions.html ├── conf.py ├── index.rst ├── logo.png ├── pages │ ├── additional-formats │ │ └── A_CSV-Dataset-Format.md │ ├── datasets │ │ └── A_Sample-Datasets.md │ ├── development-guidelines │ │ ├── A_Importing-maplab-to-Eclipse.md │ │ ├── B_Contributing-to-Maplab.md │ │ ├── C_Header-Include-Guide.md │ │ ├── D_Debugging-applications.md │ │ ├── E_Expressing-frame-transformations-in-code.md │ │ └── F_Verbosity-Policy.md │ ├── hardware-integration-and-sensor-calibration │ │ ├── A_Sensor-Calibration-Format.md │ │ ├── B_Initial-sensor-calibration-with-Kalibr.md │ │ ├── C_Sensor-calibration-refinement.md │ │ ├── D_Intel-Realsense-ZR300.md │ │ └── E_VersaVIS.md │ ├── images │ │ ├── cla │ │ │ ├── cla_1.png │ │ │ ├── cla_2.png │ │ │ ├── cla_3.png │ │ │ ├── cla_4.png │ │ │ ├── cla_5.png │ │ │ ├── cla_6.png │ │ │ └── cla_7.png │ │ ├── cool_sheep.gif │ │ ├── dense │ │ │ ├── mono_dense.png │ │ │ ├── pmvs.png │ │ │ ├── pmvs_large.png │ │ │ ├── stereo_dense.png │ │ │ ├── stereo_dense_2.png │ │ │ ├── stereo_dense_reconstruction.png │ │ │ └── voxblox_img.jpeg │ │ ├── diagrams │ │ │ ├── lc_dataflow.png │ │ │ └── maplab_dataflow.png │ │ ├── maplab-console-prompt.png │ │ ├── maplab-help-plugin.png │ │ ├── maplab-help.png │ │ ├── maplab-ls.png │ │ ├── maplab-new-map.png │ │ ├── maplab-rovioli-workflow.eps │ │ ├── maplab-rovioli-workflow.png │ │ ├── maplab-select.png │ │ ├── maplab-v-rviz.png │ │ ├── multi-map-after-aam.png │ │ ├── multi-map-after-optvi.png │ │ ├── multi-map-initial.png │ │ ├── rovioli-overview.eps │ │ ├── rovioli-overview.png │ │ ├── rovioli_viz_debug_markers.png │ │ ├── rovioli_viz_localization_results.png │ │ ├── rovioli_viz_maplab_tracking.png │ │ ├── rovioli_viz_pose_graph.png │ │ ├── rovioli_viz_rovio.png │ │ ├── sparsification │ │ │ ├── init.png │ │ │ ├── kfh.png │ │ │ └── lsparsify.png │ │ ├── system-overview.png │ │ ├── visualization │ │ │ ├── lc.png │ │ │ ├── lc_edges.png │ │ │ ├── lc_edges_after.png │ │ │ ├── plot_vi_states.png │ │ │ ├── rviz_add.png │ │ │ ├── rviz_by_topic.png │ │ │ ├── salt_1.png │ │ │ ├── salt_70.png │ │ │ ├── vimap.png │ │ │ ├── vimap_edges.png │ │ │ ├── vimap_edges_vertices.png │ │ │ ├── vimap_edges_vertices_landmarks.png │ │ │ ├── vis_color_by_height.png │ │ │ └── vis_scale.png │ │ ├── zurich_old_town_landmarks_optimized.gif │ │ └── zurich_oldtown_vs.gif │ ├── installation │ │ ├── A_Installation-Ubuntu.md │ │ └── B_Compilation-and-Debugging.md │ ├── logos │ │ ├── maplab_new.png │ │ ├── maplab_old.png │ │ └── rovioli.png │ ├── overview_and_introduction │ │ ├── A_The-Maplab-Framework.md │ │ ├── B_Citing-Maplab.md │ │ ├── C_Related-Research.md │ │ ├── D_FAQ.md │ │ └── E_Known-Issues.md │ ├── readme_images │ │ ├── arche.jpg │ │ ├── cla.png │ │ ├── largescale.gif │ │ ├── maplab_video_thumbnail.png │ │ ├── multirobot.gif │ │ ├── pmvs.png │ │ ├── robots.jpg │ │ ├── rovio_stairs.gif │ │ ├── rviz_cla_vs.gif │ │ ├── stereo.png │ │ └── topomap.png │ ├── tutorials-extending-maplab │ │ ├── A_Using-the-MapManager.md │ │ ├── B_Using-Timing-and-Statistics.md │ │ ├── C_Coding-Examples:-Creating-a-custom-console-plugin.md │ │ ├── D_Coding-Examples:-Working-with-the-VI-Map.md │ │ └── E_Console-Plugin-System.md │ ├── tutorials-maplab-server │ │ └── B_Euroc_Experiment.md │ ├── tutorials-maplab │ │ ├── basics │ │ │ ├── A_Basic-Console-Usage.md │ │ │ ├── B_Parameters-(Gflags).md │ │ │ ├── C_Console-map-management.md │ │ │ ├── D_Map-visualization.md │ │ │ ├── E_Preparing-a-single-session-map.md │ │ │ ├── F_Understanding-loop-closure.md │ │ │ ├── G_Optimizing-VI-Maps.md │ │ │ ├── H_Preparing-a-multi-session-map.md │ │ │ ├── I_Dense-Reconstruction.md │ │ │ └── J_Resource-Importer.md │ │ └── use-cases │ │ │ ├── A_Multi-session-use-case.md │ │ │ ├── B_Map-sparsification.md │ │ │ ├── C_Stereo-Dense-Reconstruction.md │ │ │ └── D_External_Features.md │ └── tutorials-rovioli │ │ ├── A_ROVIOLI-Introduction.md │ │ ├── B_Running-ROVIOLI-in-VIO-mode.md │ │ ├── C_Running-ROVIOLI-in-Localization-mode.md │ │ └── D_Multi-session-mapping-with-ROVIOLI.md └── requirements.txt ├── interfaces └── pmvs-interface │ ├── CATKIN_IGNORE │ ├── CMakeLists.txt │ ├── include │ └── dense-reconstruction │ │ ├── pmvs-common.h │ │ ├── pmvs-config.h │ │ ├── pmvs-file-utils.h │ │ └── pmvs-interface.h │ ├── package.xml │ ├── src │ ├── pmvs-common.cc │ ├── pmvs-config.cc │ ├── pmvs-file-utils.cc │ └── pmvs-interface.cc │ └── test │ └── test_pmvs_interface.cc ├── map-structure ├── localization-summary-map │ ├── CMakeLists.txt │ ├── include │ │ └── localization-summary-map │ │ │ ├── localization-summary-map-cache.h │ │ │ ├── localization-summary-map-creation.h │ │ │ ├── localization-summary-map-queries.h │ │ │ ├── localization-summary-map.h │ │ │ └── unique-id.h │ ├── package.xml │ ├── proto │ │ └── localization-summary-map │ │ │ └── localization-summary-map.proto │ ├── src │ │ ├── localization-summary-map-creation.cc │ │ ├── localization-summary-map-queries.cc │ │ └── localization-summary-map.cc │ └── test │ │ ├── test_localization_summary_map_protobuf_test.cc │ │ └── test_localization_summary_map_test.cc ├── posegraph │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── posegraph │ │ │ ├── edge.h │ │ │ ├── example │ │ │ ├── edge.h │ │ │ ├── pose-graph.h │ │ │ └── vertex.h │ │ │ ├── pose-graph-inl.h │ │ │ ├── pose-graph.h │ │ │ ├── unique-id.h │ │ │ └── vertex.h │ ├── package.xml │ ├── setup.py │ ├── src │ │ ├── edge.cc │ │ ├── example │ │ │ ├── edge.cc │ │ │ ├── pose-graph.cc │ │ │ └── vertex.cc │ │ ├── pose-graph.cc │ │ └── vertex.cc │ └── test │ │ ├── test_id_test.cc │ │ ├── test_posegraph.cc │ │ └── test_posegraph_error_handling_test.cc ├── sensors │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── sensors │ │ │ ├── absolute-6dof-pose.h │ │ │ ├── external-features.h │ │ │ ├── gps-utm.h │ │ │ ├── gps-wgs.h │ │ │ ├── imu.h │ │ │ ├── lidar.h │ │ │ ├── loop-closure-sensor.h │ │ │ ├── measurement.h │ │ │ ├── odometry-6dof-pose.h │ │ │ ├── pointcloud-map-sensor.h │ │ │ ├── sensor-types.h │ │ │ └── wheel-odometry-sensor.h │ ├── package.xml │ ├── src │ │ ├── absolute-6dof-pose.cc │ │ ├── external-features.cc │ │ ├── gps-utm.cc │ │ ├── gps-wgs.cc │ │ ├── imu.cc │ │ ├── lidar.cc │ │ ├── loop-closure-sensor.cc │ │ ├── odometry-6dof-pose.cc │ │ ├── pointcloud-map-sensor.cc │ │ └── wheel-odometry-sensor.cc │ └── test │ │ ├── test-measurements.cc │ │ ├── test-sensor-serialization.cc │ │ └── test-sensors.cc └── vi-map │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── vi-map │ │ ├── check-map-consistency.h │ │ ├── cklam-edge.h │ │ ├── edge.h │ │ ├── landmark-index.h │ │ ├── landmark-quality-metrics.h │ │ ├── landmark-store.h │ │ ├── landmark.h │ │ ├── loop-constraint.h │ │ ├── loopclosure-edge.h │ │ ├── mission-baseframe.h │ │ ├── mission.h │ │ ├── pose-graph.h │ │ ├── sensor-manager-inl.h │ │ ├── sensor-manager.h │ │ ├── sensor-utils.h │ │ ├── test │ │ ├── vi-map-generator.h │ │ ├── vi-map-test-helpers-inl.h │ │ └── vi-map-test-helpers.h │ │ ├── transformation-edge.h │ │ ├── unique-id.h │ │ ├── vertex-inl.h │ │ ├── vertex.h │ │ ├── vi-map-inl.h │ │ ├── vi-map-metadata.h │ │ ├── vi-map-nabo.h │ │ ├── vi-map-serialization-inl.h │ │ ├── vi-map-serialization.h │ │ ├── vi-map.h │ │ ├── vi-mission-inl.h │ │ ├── vi-mission.h │ │ └── viwls-edge.h │ ├── package.xml │ ├── proto │ └── vi-map │ │ ├── sensor_resources.proto │ │ └── vi_map.proto │ ├── src │ ├── check-map-consistency.cc │ ├── cklam-edge.cc │ ├── edge.cc │ ├── landmark-quality-metrics.cc │ ├── landmark-store.cc │ ├── landmark-to-vertex-ref.cc │ ├── landmark.cc │ ├── loopclosure-edge.cc │ ├── mission-baseframe.cc │ ├── mission.cc │ ├── pose-graph.cc │ ├── sensor-manager.cc │ ├── sensor-utils.cc │ ├── test │ │ ├── vi-map-generator.cc │ │ └── vi-map-test-helpers.cc │ ├── transformation-edge.cc │ ├── vertex.cc │ ├── vi-map-serialization.cc │ ├── vi-map.cc │ ├── vi-mission.cc │ └── viwls-edge.cc │ └── test │ ├── test-metadata-serialization.cc │ ├── test-mission-selection.cc │ ├── test-remove-mission.cc │ ├── test-sensor-manager-serialization.cc │ ├── test-serialization.cc │ ├── test_data │ ├── 16bit.pgm │ ├── 8bit.pgm │ ├── color.png │ └── pmvs_path_file.txt │ ├── test_edge_merging.cc │ ├── test_edge_removal.cc │ ├── test_edge_serialization.cc │ ├── test_landmark.cc │ ├── test_map_consistency_check.cc │ ├── test_map_get_vertex_ids_in_mission_test.cc │ ├── test_merge_map.cc │ ├── test_pmvs_resources_test.cc │ ├── test_summary_landmark_accessors_test.cc │ ├── test_vertex_resources_test.cc │ ├── test_vi_baseframe_protobuf_test.cc │ ├── test_vi_mission_protobuf_test.cc │ ├── test_vi_mission_sensor_resources.cc │ └── test_viwls_vertex_protobuf_test.cc ├── maplab-launch ├── CMakeLists.txt ├── README.md ├── config │ ├── alphasense-dev-kit │ │ ├── calib │ │ │ ├── alphasense-dev-kit-okvis.yaml │ │ │ └── alphasense-dev-kit-sensors.yaml │ │ └── ros │ │ │ └── alphasense-dev-kit-rovioli-rosparam.yaml │ ├── hilti │ │ ├── calib │ │ │ ├── stick-sensors-2021-lidar.yaml │ │ │ ├── stick-sensors-2021.yaml │ │ │ ├── stick-sensors-2022.yaml │ │ │ ├── stick-sensors-okvis-2021.yaml │ │ │ └── stick-sensors-okvis-2022.yaml │ │ └── ros │ │ │ ├── maplab-node-hilti-2021.yaml │ │ │ └── maplab-node-hilti-2022.yaml │ ├── lidarmace │ │ ├── calib │ │ │ ├── lidarmace-okvis.yaml │ │ │ └── lidarmace-sensors.yaml │ │ └── ros │ │ │ └── lidarmace-rovioli-rosparam.yaml │ └── lidarstick │ │ ├── calib │ │ ├── lidarstick-150-deg-cams-okvis.yaml │ │ ├── lidarstick-150-deg-cams-sensors-w-lidar-camera.yaml │ │ ├── lidarstick-150-deg-cams-sensors.yaml │ │ └── lidarstick-180-deg-cams-sensors.yaml │ │ └── ros │ │ ├── lidarstick-maplab-node-rosparam.yaml │ │ └── lidarstick-rovioli-rosparam.yaml ├── launch │ ├── alphasense-dev-kit │ │ ├── alphasense-dev-kit-maplab-node-w-okvis.launch │ │ └── alphasense-dev-kit-maplab-node-w-rovioli.launch │ ├── hilti │ │ ├── stick-maplab-node-2021-lidar.launch │ │ ├── stick-maplab-node-2021.launch │ │ ├── stick-maplab-node-2022.launch │ │ ├── stick-okvis-synchronous-2021.launch │ │ └── stick-okvis-synchronous-2022.launch │ ├── lidarmace │ │ ├── lidarmace-maplab-node-w-okvis.launch │ │ └── lidarmace-maplab-node-w-rovioli.launch │ └── lidarstick │ │ ├── lidarstick-maplab-node-w-okvis.launch │ │ ├── lidarstick-maplab-node-w-rovioli-w-lidar-camera.launch │ │ └── lidarstick-maplab-node-w-rovioli.launch └── package.xml ├── maplab ├── CMakeLists.txt └── package.xml ├── test ├── vi-map-generator-6dof │ ├── CMakeLists.txt │ ├── include │ │ └── vi-map │ │ │ ├── 6dof-pose-graph-gen.h │ │ │ ├── 6dof-test-trajectory-gen.h │ │ │ ├── 6dof-vi-map-gen.h │ │ │ └── vi-optimization-test-helpers.h │ ├── package.xml │ └── src │ │ ├── 6dof-pose-graph-gen.cc │ │ ├── 6dof-test-trajectory-gen.cc │ │ └── 6dof-vi-map-gen.cc └── vi-mapping-test-app │ ├── CMakeLists.txt │ ├── include │ └── vi-mapping-test-app │ │ └── vi-mapping-test-app.h │ ├── package.xml │ └── src │ └── vi-mapping-test-app.cc ├── tools ├── ci │ └── prepare-jenkins-slave.sh ├── csv-export │ ├── CMakeLists.txt │ ├── include │ │ └── csv-export │ │ │ └── csv-export.h │ ├── package.xml │ └── src │ │ └── csv-export.cc └── resource-importer │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── resource-importer │ │ ├── message-conversion.h │ │ └── simple-rosbag-reader.h │ ├── package.xml │ ├── role │ └── resource-importer.cc │ ├── scripts │ ├── import_resources_w_camera_info.sh │ └── import_resources_w_sensor_yaml.sh │ └── src │ ├── message-conversion.cc │ └── simple-rosbag-reader.cc └── visualization ├── .gitignore ├── CMakeLists.txt ├── README.md ├── default.rviz ├── include └── visualization │ ├── color-palette.h │ ├── color.h │ ├── common-rviz-visualization.h │ ├── constant-velocity-smoother.h │ ├── debug-visualizer.h │ ├── eigen-visualization.h │ ├── internal │ ├── viz-channel.h │ └── viz-data-collector-inl.h │ ├── landmark-observer-plotter.h │ ├── patch-based-visualization.h │ ├── resource-visualization.h │ ├── rviz-visualization-sink-inl.h │ ├── rviz-visualization-sink.h │ ├── sequential-plotter.h │ ├── sliding-window-plotter.h │ ├── spatially-distribute-missions.h │ ├── vertex-landmark-visibility-plotter.h │ ├── viwls-graph-plotter.h │ ├── viz-data-collector.h │ └── viz-primitives.h ├── package.xml ├── src ├── color-palette.cc ├── common-rviz-visualization.cc ├── constant-velocity-smoother.cc ├── debug-visualizer.cc ├── landmark-observer-plotter.cc ├── patch-based-visualization.cc ├── resource-visualization.cc ├── rviz-visualization-sink.cc ├── sequential-plotter.cc ├── sliding-window-plotter.cc ├── spatially-distribute-missions.cc ├── vertex-landmark-visibility-plotter.cc ├── viwls-graph-plotter.cc └── viz-data-collector.cc └── test ├── test-viz-channels.cc └── test-viz-data-collector.cc /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: Google 4 | DerivePointerAlignment: false 5 | PointerAlignment: Left 6 | ColumnLimit: 80 7 | AllowShortFunctionsOnASingleLine: Empty 8 | AllowShortIfStatementsOnASingleLine: false 9 | AllowShortLoopsOnASingleLine: false 10 | AlignAfterOpenBracket: AlwaysBreak 11 | IncludeBlocks: Preserve 12 | IncludeCategories: 13 | - Regex: '^<.*' 14 | Priority: 1 15 | - Regex: '.*' 16 | Priority: 2 17 | --- 18 | Language: Proto 19 | BasedOnStyle: Google 20 | ... 21 | -------------------------------------------------------------------------------- /.github/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please have a look at: 2 | - [Development Guidelines](https://github.com/ethz-asl/maplab/wiki#development-guidelines) 3 | - [FAQ](https://github.com/ethz-asl/maplab/wiki/FAQ) 4 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | **TODO:** ADD YOUR DESCRIPTION HERE 4 | 5 | --- 6 | 7 | Before opening this pull request, please consider the following **checklist**: 8 | 9 | - For bug fixes: 10 | - Describe the bug or add a link to the maplab issue. 11 | - Ideally include instructions on how to reproduce it. 12 | - Describe your solution. 13 | - For new features: 14 | - Describe the new functionality and provide instructions on how to use it. 15 | - Add results (plots, pictures, videos). 16 | - Make sure this feature can be used on the existing maplab dataset, otherwise provide an example dataset. 17 | - Add a unit/integration/end-to-end test for this new feature. 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files. 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Compiled Dynamic libraries. 8 | *.so 9 | *.dylib 10 | *.dll 11 | 12 | # Compiled Static libraries. 13 | *.lai 14 | *.la 15 | *.a 16 | *.lib 17 | 18 | # Executables 19 | *.exe 20 | *.out 21 | *.app 22 | 23 | # Temporary editor files. 24 | *~ 25 | *.orig 26 | 27 | # Compiled python. 28 | tools/lint/autolintc 29 | *.pyc 30 | 31 | # Eclipse 32 | .pydevproject 33 | .project 34 | .cproject 35 | .settings 36 | CATKIN_IGNORE 37 | 38 | # CLion 39 | .idea 40 | cmake-build-debug 41 | 42 | # QtCreator 43 | CMakeLists.txt.user 44 | 45 | *.mat 46 | *.csv 47 | *.asv 48 | *.jpg 49 | 50 | # MacOS Desktop Services Store. 51 | .DS_Store 52 | 53 | # Maplab temporary files. 54 | *.vi_command_history 55 | .vscode/ 56 | 57 | # Documentation 58 | docs/build 59 | docs/doxyoutput 60 | docs/api 61 | 62 | # Docker 63 | docker_ctx/ 64 | -------------------------------------------------------------------------------- /CONTRIBUTORS.md: -------------------------------------------------------------------------------- 1 | # Contributors 2 | * Thomas Schneider 3 | * Marcin Dymczyk 4 | * Marius Fehr 5 | * Kevin Egger 6 | * Simon Lynen 7 | * Mathias Bürki 8 | * Titus Cieslewski 9 | * Timo Hinzmann 10 | * Mathias Gehrig 11 | * Florian Tschopp 12 | * Andrei Cramariuc 13 | * Lukas Bernreiter 14 | * Nicolas Degen 15 | * Andreas Pfrunder 16 | * Helen Oleynikova 17 | * Mohit Agarwal 18 | * Partha Ghosh 19 | * Andreas Forster 20 | * Fabian Blöchliger 21 | * Michael Burri 22 | * Mike Bosse 23 | * Manuel Werlberger 24 | * David Vogt 25 | * Renaud Dube 26 | * Hamza Merzic 27 | * Luc Oth 28 | * Igor Gilitschenski 29 | * Aman Jhunjhunwala 30 | * Jeff Schornick 31 | * Christian Forster 32 | * Gabriel Agamennoni 33 | * Adam Radomski 34 | * Paul Furgale 35 | * Florian Tschopp 36 | * Jörn Rehder 37 | * Anwar Quraishi 38 | * Rafael Gómez-Jordana 39 | * Abel Gawel 40 | * Pavel Vechersky 41 | * Matia Pizzoli 42 | * Fadri Furrer 43 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | 6 | # Compiled Dynamic libraries 7 | *.so 8 | *.dylib 9 | 10 | # Compiled Static libraries 11 | *.lai 12 | *.la 13 | *.a 14 | 15 | # Eclipse project files 16 | .cproject 17 | .project 18 | .settings 19 | 20 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/README.md: -------------------------------------------------------------------------------- 1 | ceres_error_terms 2 | ================= 3 | 4 | Contains the definition of error-terms for use in the ceres solver. These involve 5 | inertial error-terms, reprojection-error-terms as well as different parameterizations 6 | for parameters. 7 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/include/ceres-error-terms/landmark-common.h: -------------------------------------------------------------------------------- 1 | #ifndef CERES_ERROR_TERMS_LANDMARK_COMMON_H_ 2 | #define CERES_ERROR_TERMS_LANDMARK_COMMON_H_ 3 | 4 | #include 5 | 6 | #include "ceres-error-terms/common.h" 7 | 8 | namespace ceres_error_terms { 9 | 10 | void replaceUnusedArgumentsOfLandmarkCostFunctionWithDummies( 11 | ceres_error_terms::LandmarkErrorType error_term_type, 12 | std::vector* error_term_argument_list, 13 | std::vector* dummies_to_set_constant); 14 | 15 | } // namespace ceres_error_terms 16 | 17 | #include "ceres-error-terms/landmark-common-inl.h" 18 | 19 | #endif // CERES_ERROR_TERMS_LANDMARK_COMMON_H_ 20 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/include/ceres-error-terms/switch-prior-error-term-inl.h: -------------------------------------------------------------------------------- 1 | #ifndef CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_INL_H_ 2 | #define CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_INL_H_ 3 | 4 | namespace ceres_error_terms { 5 | template 6 | bool SwitchPriorErrorTerm::operator()( 7 | const T* const switch_variable, T* residual) const { 8 | CHECK_GE(*switch_variable, static_cast(0)); 9 | CHECK_LE(*switch_variable, static_cast(1)); 10 | 11 | *residual = (static_cast(prior_) - (*switch_variable)) * 12 | static_cast(sqrt_information_factor_); 13 | return true; 14 | } 15 | } // namespace ceres_error_terms 16 | 17 | #endif // CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_INL_H_ 18 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/include/ceres-error-terms/switch-prior-error-term.h: -------------------------------------------------------------------------------- 1 | #ifndef CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_H_ 2 | #define CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_H_ 3 | 4 | namespace ceres_error_terms { 5 | class SwitchPriorErrorTerm { 6 | public: 7 | SwitchPriorErrorTerm(double prior, double variance) : prior_(prior) { 8 | CHECK_GT(variance, 0.0); 9 | sqrt_information_factor_ = std::sqrt(1.0 / variance); 10 | } 11 | 12 | template 13 | bool operator()(const T* const switch_variable, T* residual) const; 14 | 15 | static constexpr int residualBlockSize = 1; 16 | static constexpr int switchVariableBlockSize = 1; 17 | 18 | private: 19 | double prior_; 20 | double sqrt_information_factor_; 21 | }; 22 | 23 | } // namespace ceres_error_terms 24 | #include "./ceres-error-terms/switch-prior-error-term-inl.h" 25 | #endif // CERES_ERROR_TERMS_SWITCH_PRIOR_ERROR_TERM_H_ 26 | -------------------------------------------------------------------------------- /algorithms/ceres-error-terms/include/ceres-error-terms/visual-error-term-factory.h: -------------------------------------------------------------------------------- 1 | #ifndef CERES_ERROR_TERMS_VISUAL_ERROR_TERM_FACTORY_H_ 2 | #define CERES_ERROR_TERMS_VISUAL_ERROR_TERM_FACTORY_H_ 3 | 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | namespace ceres_error_terms { 10 | 11 | template