环境:ubuntu16
1
把github源码导入到gitee
搜索三个仓库:
cartographer
cartographer_ros
ceres-solver
之后下载需要。
2
https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#building-installation
sudo apt-get update
sudo apt-get install -y \
clang \
cmake \
g++ \
git \
google-mock \
libboost-all-dev \
libcairo2-dev \
libcurl4-openssl-dev \
libeigen3-dev \
libgflags-dev \
libgoogle-glog-dev \
liblua5.2-dev \
libsuitesparse-dev \
lsb-release \
ninja-build \
stow
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
注意
下载源码需要修改文件.rosinstall
仓库地址,根据自己导入的gitee仓库进行修改
# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2020-09-01
- git:
local-name: cartographer
uri: https://gitee.com/juzhango/cartographer.git
version: 1.0.0
- git:
local-name: cartographer_ros
uri: https://gitee.com/juzhango/cartographer_ros.git
version: 1.0.0
- git:
local-name: ceres-solver
uri: https://gitee.com/juzhango/ceres-solver.git
version: 1.13.0
源码下载完成。
3
导入protobuf
仓库到自己的gitee
修改install_proto3.sh
文件
#!/bin/sh
# Copyright 2016 The Cartographer Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -o errexit
set -o verbose
VERSION="v3.4.1"
# Build and install proto3.
#git clone https://github.com/google/protobuf.git
git clone https://gitee.com/juzhango/protobuf.git
cd protobuf
git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCMAKE_BUILD_TYPE=Release \
-Dprotobuf_BUILD_TESTS=OFF \
../cmake
ninja
sudo ninja install
src/cartographer/scripts/install_proto3.sh
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
4 build and install
catkin_make_isolated --install --use-ninja
5
src/
├── cartographer
│ ├── AUTHORS
│ ├── bazel
│ │ ├── repositories.bzl
│ │ └── third_party
│ │ ├── BUILD.bazel
│ │ ├── cairo
│ │ │ ├── BUILD.bazel
│ │ │ ├── cairo.BUILD
│ │ │ ├── cairo-features.h
│ │ │ └── config.h
│ │ ├── ceres.BUILD
│ │ ├── eigen.BUILD
│ │ ├── expat.BUILD
│ │ ├── fontconfig
│ │ │ ├── BUILD.bazel
│ │ │ ├── config.h
│ │ │ └── fontconfig.BUILD
│ │ ├── freetype2.BUILD
│ │ ├── gd.BUILD
│ │ ├── libjpeg.BUILD
│ │ ├── libpng.BUILD
│ │ ├── lua.BUILD
│ │ ├── pixman
│ │ │ ├── BUILD.bazel
│ │ │ ├── config.h
│ │ │ └── pixman.BUILD
│ │ └── zlib.BUILD
│ ├── BUILD.bazel
│ ├── cartographer
│ │ ├── BUILD.bazel
│ │ ├── cloud
│ │ │ ├── BUILD.bazel
│ │ │ ├── client
│ │ │ │ ├── map_builder_stub.cc
│ │ │ │ └── map_builder_stub.h
│ │ │ ├── internal
│ │ │ │ ├── client
│ │ │ │ │ ├── pose_graph_stub.cc
│ │ │ │ │ ├── pose_graph_stub.h
│ │ │ │ │ ├── trajectory_builder_stub.cc
│ │ │ │ │ └── trajectory_builder_stub.h
│ │ │ │ ├── client_server_test.cc
│ │ │ │ ├── handlers
│ │ │ │ │ ├── add_fixed_frame_pose_data_handler.cc
│ │ │ │ │ ├── add_fixed_frame_pose_data_handler.h
│ │ │ │ │ ├── add_fixed_frame_pose_data_handler_test.cc
│ │ │ │ │ ├── add_imu_data_handler.cc
│ │ │ │ │ ├── add_imu_data_handler.h
│ │ │ │ │ ├── add_imu_data_handler_test.cc
│ │ │ │ │ ├── add_landmark_data_handler.cc
│ │ │ │ │ ├── add_landmark_data_handler.h
│ │ │ │ │ ├── add_landmark_data_handler_test.cc
│ │ │ │ │ ├── add_odometry_data_handler.cc
│ │ │ │ │ ├── add_odometry_data_handler.h
│ │ │ │ │ ├── add_odometry_data_handler_test.cc
│ │ │ │ │ ├── add_rangefinder_data_handler.cc
│ │ │ │ │ ├── add_rangefinder_data_handler.h
│ │ │ │ │ ├── add_rangefinder_data_handler_test.cc
│ │ │ │ │ ├── add_sensor_data_batch_handler.cc
│ │ │ │ │ ├── add_sensor_data_batch_handler.h
│ │ │ │ │ ├── add_trajectory_handler.cc
│ │ │ │ │ ├── add_trajectory_handler.h
│ │ │ │ │ ├── add_trajectory_handler_test.cc
│ │ │ │ │ ├── finish_trajectory_handler.cc
│ │ │ │ │ ├── finish_trajectory_handler.h
│ │ │ │ │ ├── get_all_submap_poses.cc
│ │ │ │ │ ├── get_all_submap_poses.h
│ │ │ │ │ ├── get_constraints_handler.cc
│ │ │ │ │ ├── get_constraints_handler.h
│ │ │ │ │ ├── get_landmark_poses_handler.cc
│ │ │ │ │ ├── get_landmark_poses_handler.h
│ │ │ │ │ ├── get_landmark_poses_handler_test.cc
│ │ │ │ │ ├── get_local_to_global_transform_handler.cc
│ │ │ │ │ ├── get_local_to_global_transform_handler.h
│ │ │ │ │ ├── get_submap_handler.cc
│ │ │ │ │ ├── get_submap_handler.h
│ │ │ │ │ ├── get_trajectory_node_poses_handler.cc
│ │ │ │ │ ├── get_trajectory_node_poses_handler.h
│ │ │ │ │ ├── is_trajectory_finished_handler.cc
│ │ │ │ │ ├── is_trajectory_finished_handler.h
│ │ │ │ │ ├── is_trajectory_frozen_handler.cc
│ │ │ │ │ ├── is_trajectory_frozen_handler.h
│ │ │ │ │ ├── load_state_handler.cc
│ │ │ │ │ ├── load_state_handler.h
│ │ │ │ │ ├── receive_global_slam_optimizations_handler.cc
│ │ │ │ │ ├── receive_global_slam_optimizations_handler.h
│ │ │ │ │ ├── receive_local_slam_results_handler.cc
│ │ │ │ │ ├── receive_local_slam_results_handler.h
│ │ │ │ │ ├── run_final_optimization_handler.cc
│ │ │ │ │ ├── run_final_optimization_handler.h
│ │ │ │ │ ├── set_landmark_pose_handler.cc
│ │ │ │ │ ├── set_landmark_pose_handler.h
│ │ │ │ │ ├── set_landmark_pose_handler_test.cc
│ │ │ │ │ ├── write_state_handler.cc
│ │ │ │ │ └── write_state_handler.h
│ │ │ │ ├── local_trajectory_uploader.cc
│ │ │ │ ├── local_trajectory_uploader.h
│ │ │ │ ├── map_builder_context_impl.cc
│ │ │ │ ├── map_builder_context_impl.h
│ │ │ │ ├── map_builder_context_interface.h
│ │ │ │ ├── map_builder_server.cc
│ │ │ │ ├── map_builder_server.h
│ │ │ │ ├── sensor
│ │ │ │ │ ├── serialization.cc
│ │ │ │ │ └── serialization.h
│ │ │ │ └── testing
│ │ │ │ ├── handler_test.h
│ │ │ │ ├── mock_local_trajectory_uploader.h
│ │ │ │ ├── mock_map_builder_context.h
│ │ │ │ ├── test_helpers.cc
│ │ │ │ └── test_helpers.h
│ │ │ ├── map_builder_server_interface.cc
│ │ │ ├── map_builder_server_interface.h
│ │ │ ├── map_builder_server_main.cc
│ │ │ ├── map_builder_server_options.cc
│ │ │ ├── map_builder_server_options.h
│ │ │ ├── metrics
│ │ │ │ └── prometheus
│ │ │ │ ├── family_factory.cc
│ │ │ │ ├── family_factory.h
│ │ │ │ └── metrics_test.cc
│ │ │ └── proto
│ │ │ ├── map_builder_server_options.proto
│ │ │ └── map_builder_service.proto
│ │ ├── common
│ │ │ ├── blocking_queue.h
│ │ │ ├── blocking_queue_test.cc
│ │ │ ├── ceres_solver_options.cc
│ │ │ ├── ceres_solver_options.h
│ │ │ ├── config.h.cmake
│ │ │ ├── configuration_file_resolver.cc
│ │ │ ├── configuration_file_resolver.h
│ │ │ ├── configuration_files_test.cc
│ │ │ ├── fixed_ratio_sampler.cc
│ │ │ ├── fixed_ratio_sampler.h
│ │ │ ├── fixed_ratio_sampler_test.cc
│ │ │ ├── histogram.cc
│ │ │ ├── histogram.h
│ │ │ ├── internal
│ │ │ │ └── testing
│ │ │ │ ├── thread_pool_for_testing.cc
│ │ │ │ └── thread_pool_for_testing.h
│ │ │ ├── lockless_queue.h
│ │ │ ├── lockless_queue_test.cc
│ │ │ ├── lua.h
│ │ │ ├── lua_parameter_dictionary.cc
│ │ │ ├── lua_parameter_dictionary.h
│ │ │ ├── lua_parameter_dictionary_test.cc
│ │ │ ├── lua_parameter_dictionary_test_helpers.h
│ │ │ ├── make_unique.h
│ │ │ ├── math.h
│ │ │ ├── math_test.cc
│ │ │ ├── mutex.h
│ │ │ ├── optional.h
│ │ │ ├── optional_test.cc
│ │ │ ├── port.h
│ │ │ ├── proto
│ │ │ │ └── ceres_solver_options.proto
│ │ │ ├── rate_timer.h
│ │ │ ├── rate_timer_test.cc
│ │ │ ├── task.cc
│ │ │ ├── task.h
│ │ │ ├── task_test.cc
│ │ │ ├── thread_pool.cc
│ │ │ ├── thread_pool.h
│ │ │ ├── thread_pool_test.cc
│ │ │ ├── time.cc
│ │ │ └── time.h
│ │ ├── ground_truth
│ │ │ ├── autogenerate_ground_truth_main.cc
│ │ │ ├── compute_relations_metrics_main.cc
│ │ │ ├── proto
│ │ │ │ └── relations.proto
│ │ │ ├── relations_text_file.cc
│ │ │ └── relations_text_file.h
│ │ ├── io
│ │ │ ├── color.cc
│ │ │ ├── color.h
│ │ │ ├── coloring_points_processor.cc
│ │ │ ├── coloring_points_processor.h
│ │ │ ├── counting_points_processor.cc
│ │ │ ├── counting_points_processor.h
│ │ │ ├── draw_trajectories.cc
│ │ │ ├── draw_trajectories.h
│ │ │ ├── fake_file_writer.cc
│ │ │ ├── fake_file_writer.h
│ │ │ ├── fake_file_writer_test.cc
│ │ │ ├── file_writer.cc
│ │ │ ├── file_writer.h
│ │ │ ├── fixed_ratio_sampling_points_processor.cc
│ │ │ ├── fixed_ratio_sampling_points_processor.h
│ │ │ ├── frame_id_filtering_points_processor.cc
│ │ │ ├── frame_id_filtering_points_processor.h
│ │ │ ├── hybrid_grid_points_processor.cc
│ │ │ ├── hybrid_grid_points_processor.h
│ │ │ ├── image.cc
│ │ │ ├── image.h
│ │ │ ├── intensity_to_color_points_processor.cc
│ │ │ ├── intensity_to_color_points_processor.h
│ │ │ ├── internal
│ │ │ │ ├── in_memory_proto_stream.cc
│ │ │ │ ├── in_memory_proto_stream.h
│ │ │ │ ├── in_memory_proto_stream_test.cc
│ │ │ │ ├── mapping_state_serialization.cc
│ │ │ │ └── mapping_state_serialization.h
│ │ │ ├── migrate_serialization_format_main.cc
│ │ │ ├── min_max_range_filtering_points_processor.cc
│ │ │ ├── min_max_range_filtering_points_processor.h
│ │ │ ├── null_points_processor.h
│ │ │ ├── outlier_removing_points_processor.cc
│ │ │ ├── outlier_removing_points_processor.h
│ │ │ ├── pcd_writing_points_processor.cc
│ │ │ ├── pcd_writing_points_processor.h
│ │ │ ├── ply_writing_points_processor.cc
│ │ │ ├── ply_writing_points_processor.h
│ │ │ ├── points_batch.cc
│ │ │ ├── points_batch.h
│ │ │ ├── points_processor.h
│ │ │ ├── points_processor_pipeline_builder.cc
│ │ │ ├── points_processor_pipeline_builder.h
│ │ │ ├── points_processor_pipeline_builder_test.cc
│ │ │ ├── probability_grid_points_processor.cc
│ │ │ ├── probability_grid_points_processor.h
│ │ │ ├── proto_stream.cc
│ │ │ ├── proto_stream_deserializer.cc
│ │ │ ├── proto_stream_deserializer.h
│ │ │ ├── proto_stream_deserializer_test.cc
│ │ │ ├── proto_stream.h
│ │ │ ├── proto_stream_interface.h
│ │ │ ├── proto_stream_test.cc
│ │ │ ├── serialization_format_migration.cc
│ │ │ ├── serialization_format_migration.h
│ │ │ ├── serialization_format_migration_test.cc
│ │ │ ├── submap_painter.cc
│ │ │ ├── submap_painter.h
│ │ │ ├── xray_points_processor.cc
│ │ │ ├── xray_points_processor.h
│ │ │ ├── xyz_writing_points_processor.cc
│ │ │ └── xyz_writing_points_processor.h
│ │ ├── mapping
│ │ │ ├── 2d
│ │ │ │ ├── grid_2d.cc
│ │ │ │ ├── grid_2d.h
│ │ │ │ ├── map_limits.h
│ │ │ │ ├── map_limits_test.cc
│ │ │ │ ├── probability_grid.cc
│ │ │ │ ├── probability_grid.h
│ │ │ │ ├── probability_grid_range_data_inserter_2d.cc
│ │ │ │ ├── probability_grid_range_data_inserter_2d.h
│ │ │ │ ├── probability_grid_test.cc
│ │ │ │ ├── range_data_inserter_2d_test.cc
│ │ │ │ ├── submap_2d.cc
│ │ │ │ ├── submap_2d.h
│ │ │ │ ├── submap_2d_test.cc
│ │ │ │ ├── xy_index.h
│ │ │ │ └── xy_index_test.cc
│ │ │ ├── 3d
│ │ │ │ ├── hybrid_grid.h
│ │ │ │ ├── hybrid_grid_test.cc
│ │ │ │ ├── range_data_inserter_3d.cc
│ │ │ │ ├── range_data_inserter_3d.h
│ │ │ │ ├── range_data_inserter_3d_test.cc
│ │ │ │ ├── submap_3d.cc
│ │ │ │ ├── submap_3d.h
│ │ │ │ └── submap_3d_test.cc
│ │ │ ├── detect_floors.cc
│ │ │ ├── detect_floors.h
│ │ │ ├── grid_interface.h
│ │ │ ├── id.h
│ │ │ ├── id_test.cc
│ │ │ ├── imu_tracker.cc
│ │ │ ├── imu_tracker.h
│ │ │ ├── imu_tracker_test.cc
│ │ │ ├── internal
│ │ │ │ ├── 2d
│ │ │ │ │ ├── local_slam_result_2d.cc
│ │ │ │ │ ├── local_slam_result_2d.h
│ │ │ │ │ ├── local_trajectory_builder_2d.cc
│ │ │ │ │ ├── local_trajectory_builder_2d.h
│ │ │ │ │ ├── local_trajectory_builder_options_2d.cc
│ │ │ │ │ ├── local_trajectory_builder_options_2d.h
│ │ │ │ │ ├── overlapping_submaps_trimmer_2d.cc
│ │ │ │ │ ├── overlapping_submaps_trimmer_2d.h
│ │ │ │ │ ├── overlapping_submaps_trimmer_2d_test.cc
│ │ │ │ │ ├── pose_graph_2d.cc
│ │ │ │ │ ├── pose_graph_2d.h
│ │ │ │ │ ├── pose_graph_2d_test.cc
│ │ │ │ │ ├── ray_casting.cc
│ │ │ │ │ ├── ray_casting.h
│ │ │ │ │ └── scan_matching
│ │ │ │ │ ├── ceres_scan_matcher_2d.cc
│ │ │ │ │ ├── ceres_scan_matcher_2d.h
│ │ │ │ │ ├── ceres_scan_matcher_2d_test.cc
│ │ │ │ │ ├── correlative_scan_matcher_2d.cc
│ │ │ │ │ ├── correlative_scan_matcher_2d.h
│ │ │ │ │ ├── correlative_scan_matcher_test.cc
│ │ │ │ │ ├── fast_correlative_scan_matcher_2d.cc
│ │ │ │ │ ├── fast_correlative_scan_matcher_2d.h
│ │ │ │ │ ├── fast_correlative_scan_matcher_2d_test.cc
│ │ │ │ │ ├── occupied_space_cost_function_2d.h
│ │ │ │ │ ├── real_time_correlative_scan_matcher_2d.cc
│ │ │ │ │ ├── real_time_correlative_scan_matcher_2d.h
│ │ │ │ │ ├── real_time_correlative_scan_matcher_2d_test.cc
│ │ │ │ │ ├── rotation_delta_cost_functor_2d.h
│ │ │ │ │ └── translation_delta_cost_functor_2d.h
│ │ │ │ ├── 3d
│ │ │ │ │ ├── imu_integration.h
│ │ │ │ │ ├── local_slam_result_3d.cc
│ │ │ │ │ ├── local_slam_result_3d.h
│ │ │ │ │ ├── local_trajectory_builder_3d.cc
│ │ │ │ │ ├── local_trajectory_builder_3d.h
│ │ │ │ │ ├── local_trajectory_builder_3d_test.cc
│ │ │ │ │ ├── local_trajectory_builder_options_3d.cc
│ │ │ │ │ ├── local_trajectory_builder_options_3d.h
│ │ │ │ │ ├── pose_graph_3d.cc
│ │ │ │ │ ├── pose_graph_3d.h
│ │ │ │ │ ├── pose_graph_3d_test.cc
│ │ │ │ │ ├── rotation_parameterization.h
│ │ │ │ │ └── scan_matching
│ │ │ │ │ ├── ceres_scan_matcher_3d.cc
│ │ │ │ │ ├── ceres_scan_matcher_3d.h
│ │ │ │ │ ├── ceres_scan_matcher_3d_test.cc
│ │ │ │ │ ├── fast_correlative_scan_matcher_3d.cc
│ │ │ │ │ ├── fast_correlative_scan_matcher_3d.h
│ │ │ │ │ ├── fast_correlative_scan_matcher_3d_test.cc
│ │ │ │ │ ├── interpolated_grid.h
│ │ │ │ │ ├── interpolated_grid_test.cc
│ │ │ │ │ ├── low_resolution_matcher.cc
│ │ │ │ │ ├── low_resolution_matcher.h
│ │ │ │ │ ├── occupied_space_cost_function_3d.h
│ │ │ │ │ ├── precomputation_grid_3d.cc
│ │ │ │ │ ├── precomputation_grid_3d.h
│ │ │ │ │ ├── precomputation_grid_3d_test.cc
│ │ │ │ │ ├── real_time_correlative_scan_matcher_3d.cc
│ │ │ │ │ ├── real_time_correlative_scan_matcher_3d.h
│ │ │ │ │ ├── real_time_correlative_scan_matcher_3d_test.cc
│ │ │ │ │ ├── rotational_scan_matcher.cc
│ │ │ │ │ ├── rotational_scan_matcher.h
│ │ │ │ │ ├── rotational_scan_matcher_test.cc
│ │ │ │ │ ├── rotation_delta_cost_functor_3d.h
│ │ │ │ │ ├── rotation_delta_cost_functor_3d_test.cc
│ │ │ │ │ └── translation_delta_cost_functor_3d.h
│ │ │ │ ├── collated_trajectory_builder.cc
│ │ │ │ ├── collated_trajectory_builder.h
│ │ │ │ ├── connected_components.cc
│ │ │ │ ├── connected_components.h
│ │ │ │ ├── connected_components_test.cc
│ │ │ │ ├── constraints
│ │ │ │ │ ├── constraint_builder_2d.cc
│ │ │ │ │ ├── constraint_builder_2d.h
│ │ │ │ │ ├── constraint_builder_2d_test.cc
│ │ │ │ │ ├── constraint_builder_3d.cc
│ │ │ │ │ ├── constraint_builder_3d.h
│ │ │ │ │ ├── constraint_builder_3d_test.cc
│ │ │ │ │ ├── constraint_builder.cc
│ │ │ │ │ └── constraint_builder.h
│ │ │ │ ├── global_trajectory_builder.cc
│ │ │ │ ├── global_trajectory_builder.h
│ │ │ │ ├── motion_filter.cc
│ │ │ │ ├── motion_filter.h
│ │ │ │ ├── motion_filter_test.cc
│ │ │ │ ├── optimization
│ │ │ │ │ ├── ceres_pose.cc
│ │ │ │ │ ├── ceres_pose.h
│ │ │ │ │ ├── cost_functions
│ │ │ │ │ │ ├── acceleration_cost_function_3d.h
│ │ │ │ │ │ ├── cost_helpers.h
│ │ │ │ │ │ ├── cost_helpers_impl.h
│ │ │ │ │ │ ├── landmark_cost_function_2d.h
│ │ │ │ │ │ ├── landmark_cost_function_2d_test.cc
│ │ │ │ │ │ ├── landmark_cost_function_3d.h
│ │ │ │ │ │ ├── landmark_cost_function_3d_test.cc
│ │ │ │ │ │ ├── rotation_cost_function_3d.h
│ │ │ │ │ │ ├── spa_cost_function_2d.cc
│ │ │ │ │ │ ├── spa_cost_function_2d.h
│ │ │ │ │ │ ├── spa_cost_function_2d_test.cc
│ │ │ │ │ │ └── spa_cost_function_3d.h
│ │ │ │ │ ├── optimization_problem_2d.cc
│ │ │ │ │ ├── optimization_problem_2d.h
│ │ │ │ │ ├── optimization_problem_3d.cc
│ │ │ │ │ ├── optimization_problem_3d.h
│ │ │ │ │ ├── optimization_problem_3d_test.cc
│ │ │ │ │ ├── optimization_problem_interface.h
│ │ │ │ │ ├── optimization_problem_options.cc
│ │ │ │ │ └── optimization_problem_options.h
│ │ │ │ ├── range_data_collator.cc
│ │ │ │ ├── range_data_collator.h
│ │ │ │ ├── range_data_collator_test.cc
│ │ │ │ ├── scan_matching
│ │ │ │ │ ├── real_time_correlative_scan_matcher.cc
│ │ │ │ │ └── real_time_correlative_scan_matcher.h
│ │ │ │ ├── submap_controller.cc
│ │ │ │ ├── submap_controller.h
│ │ │ │ ├── testing
│ │ │ │ │ ├── fake_trimmable.h
│ │ │ │ │ ├── mock_map_builder.h
│ │ │ │ │ ├── mock_pose_graph.h
│ │ │ │ │ ├── mock_trajectory_builder.h
│ │ │ │ │ ├── test_helpers.cc
│ │ │ │ │ └── test_helpers.h
│ │ │ │ ├── trajectory_connectivity_state.cc
│ │ │ │ ├── trajectory_connectivity_state.h
│ │ │ │ └── trajectory_connectivity_state_test.cc
│ │ │ ├── local_slam_result_data.h
│ │ │ ├── map_builder.cc
│ │ │ ├── map_builder.h
│ │ │ ├── map_builder_interface.h
│ │ │ ├── map_builder_test.cc
│ │ │ ├── pose_extrapolator.cc
│ │ │ ├── pose_extrapolator.h
│ │ │ ├── pose_extrapolator_test.cc
│ │ │ ├── pose_graph.cc
│ │ │ ├── pose_graph.h
│ │ │ ├── pose_graph_interface.h
│ │ │ ├── pose_graph_test.cc
│ │ │ ├── pose_graph_trimmer.cc
│ │ │ ├── pose_graph_trimmer.h
│ │ │ ├── pose_graph_trimmer_test.cc
│ │ │ ├── probability_values.cc
│ │ │ ├── probability_values.h
│ │ │ ├── probability_values_test.cc
│ │ │ ├── proto
│ │ │ │ ├── 2d
│ │ │ │ │ ├── cell_limits.proto
│ │ │ │ │ ├── grid_2d_options.proto
│ │ │ │ │ ├── grid_2d.proto
│ │ │ │ │ ├── local_trajectory_builder_options_2d.proto
│ │ │ │ │ ├── map_limits.proto
│ │ │ │ │ ├── probability_grid.proto
│ │ │ │ │ ├── probability_grid_range_data_inserter_options_2d.proto
│ │ │ │ │ └── submaps_options_2d.proto
│ │ │ │ ├── 3d
│ │ │ │ │ ├── hybrid_grid.proto
│ │ │ │ │ ├── local_trajectory_builder_options_3d.proto
│ │ │ │ │ ├── range_data_inserter_options_3d.proto
│ │ │ │ │ └── submaps_options_3d.proto
│ │ │ │ ├── connected_components.proto
│ │ │ │ ├── internal
│ │ │ │ │ └── legacy_serialized_data.proto
│ │ │ │ ├── map_builder_options.proto
│ │ │ │ ├── motion_filter_options.proto
│ │ │ │ ├── pose_graph
│ │ │ │ │ ├── constraint_builder_options.proto
│ │ │ │ │ └── optimization_problem_options.proto
│ │ │ │ ├── pose_graph_options.proto
│ │ │ │ ├── pose_graph.proto
│ │ │ │ ├── range_data_inserter_options.proto
│ │ │ │ ├── scan_matching
│ │ │ │ │ ├── ceres_scan_matcher_options_2d.proto
│ │ │ │ │ ├── ceres_scan_matcher_options_3d.proto
│ │ │ │ │ ├── fast_correlative_scan_matcher_options_2d.proto
│ │ │ │ │ ├── fast_correlative_scan_matcher_options_3d.proto
│ │ │ │ │ └── real_time_correlative_scan_matcher_options.proto
│ │ │ │ ├── serialization.proto
│ │ │ │ ├── submap.proto
│ │ │ │ ├── submap_visualization.proto
│ │ │ │ ├── trajectory_builder_options.proto
│ │ │ │ ├── trajectory_node_data.proto
│ │ │ │ └── trajectory.proto
│ │ │ ├── range_data_inserter_interface.cc
│ │ │ ├── range_data_inserter_interface.h
│ │ │ ├── submaps.h
│ │ │ ├── submaps_test.cc
│ │ │ ├── trajectory_builder_interface.cc
│ │ │ ├── trajectory_builder_interface.h
│ │ │ ├── trajectory_node.cc
│ │ │ ├── trajectory_node.h
│ │ │ └── trajectory_node_test.cc
│ │ ├── metrics
│ │ │ ├── counter.cc
│ │ │ ├── counter.h
│ │ │ ├── family_factory.h
│ │ │ ├── gauge.cc
│ │ │ ├── gauge.h
│ │ │ ├── histogram.cc
│ │ │ ├── histogram.h
│ │ │ ├── register.cc
│ │ │ └── register.h
│ │ ├── sensor
│ │ │ ├── collator_interface.h
│ │ │ ├── compressed_point_cloud.cc
│ │ │ ├── compressed_point_cloud.h
│ │ │ ├── compressed_point_cloud_test.cc
│ │ │ ├── data.h
│ │ │ ├── fixed_frame_pose_data.cc
│ │ │ ├── fixed_frame_pose_data.h
│ │ │ ├── imu_data.cc
│ │ │ ├── imu_data.h
│ │ │ ├── internal
│ │ │ │ ├── collator.cc
│ │ │ │ ├── collator.h
│ │ │ │ ├── collator_test.cc
│ │ │ │ ├── dispatchable.h
│ │ │ │ ├── ordered_multi_queue.cc
│ │ │ │ ├── ordered_multi_queue.h
│ │ │ │ ├── ordered_multi_queue_test.cc
│ │ │ │ ├── test_helpers.h
│ │ │ │ ├── trajectory_collator.cc
│ │ │ │ ├── trajectory_collator.h
│ │ │ │ ├── trajectory_collator_test.cc
│ │ │ │ ├── voxel_filter.cc
│ │ │ │ ├── voxel_filter.h
│ │ │ │ └── voxel_filter_test.cc
│ │ │ ├── landmark_data.cc
│ │ │ ├── landmark_data.h
│ │ │ ├── landmark_data_test.cc
│ │ │ ├── map_by_time.h
│ │ │ ├── map_by_time_test.cc
│ │ │ ├── odometry_data.cc
│ │ │ ├── odometry_data.h
│ │ │ ├── point_cloud.cc
│ │ │ ├── point_cloud.h
│ │ │ ├── point_cloud_test.cc
│ │ │ ├── proto
│ │ │ │ ├── adaptive_voxel_filter_options.proto
│ │ │ │ └── sensor.proto
│ │ │ ├── range_data.cc
│ │ │ ├── range_data.h
│ │ │ ├── range_data_test.cc
│ │ │ ├── timed_point_cloud_data.cc
│ │ │ └── timed_point_cloud_data.h
│ │ └── transform
│ │ ├── proto
│ │ │ └── transform.proto
│ │ ├── rigid_transform.cc
│ │ ├── rigid_transform.h
│ │ ├── rigid_transform_test.cc
│ │ ├── rigid_transform_test_helpers.h
│ │ ├── timestamped_transform.cc
│ │ ├── timestamped_transform.h
│ │ ├── transform.cc
│ │ ├── transform.h
│ │ ├── transform_interpolation_buffer.cc
│ │ ├── transform_interpolation_buffer.h
│ │ ├── transform_interpolation_buffer_test.cc
│ │ └── transform_test.cc
│ ├── cartographer-config.cmake.in
│ ├── CHANGELOG.rst
│ ├── cmake
│ │ ├── functions.cmake
│ │ └── modules
│ │ ├── FindGMock.cmake
│ │ ├── FindLuaGoogle.cmake
│ │ └── FindSphinx.cmake
│ ├── CMakeLists.txt
│ ├── configuration_files
│ │ ├── map_builder.lua
│ │ ├── map_builder_server.lua
│ │ ├── pose_graph.lua
│ │ ├── trajectory_builder_2d.lua
│ │ ├── trajectory_builder_3d.lua
│ │ └── trajectory_builder.lua
│ ├── CONTRIBUTING.md
│ ├── Dockerfile.jessie
│ ├── Dockerfile.stretch
│ ├── Dockerfile.trusty
│ ├── Dockerfile.trusty.bazel
│ ├── Dockerfile.xenial
│ ├── docs
│ │ ├── assets
│ │ │ ├── logo_1024dp.png
│ │ │ ├── logo_128dp.png
│ │ │ ├── logo_16dp.png
│ │ │ ├── logo_16dp.svg
│ │ │ ├── logo_192dp.png
│ │ │ ├── logo_24dp.png
│ │ │ ├── logo_24dp.svg
│ │ │ ├── logo_32dp.png
│ │ │ ├── logo_32dp.svg
│ │ │ ├── logo_36dp.png
│ │ │ ├── logo_36dp.svg
│ │ │ ├── logo_48dp.png
│ │ │ ├── logo_48dp.svg
│ │ │ ├── logo_512dp.png
│ │ │ ├── logo_512dp.svg
│ │ │ ├── logo_64dp.png
│ │ │ ├── logo_64dp.svg
│ │ │ ├── logo_72dp.png
│ │ │ ├── logo_96dp.png
│ │ │ ├── logo_96dp.svg
│ │ │ └── t_shirt
│ │ │ ├── logo_cartographer_512dp_shaded.svg
│ │ │ ├── logo_cartographer.ai
│ │ │ ├── logo_cartographer.svg
│ │ │ ├── pantone_lookup.png
│ │ │ └── pantone_lookup.txt
│ │ ├── CMakeLists.txt
│ │ └── source
│ │ ├── autogenerate_groundtruth.png
│ │ ├── configuration.rst
│ │ ├── conf.py
│ │ ├── cost_functions.rst
│ │ ├── evaluation.rst
│ │ ├── high_level_system_overview.png
│ │ ├── index.rst
│ │ └── terminology.rst
│ ├── LICENSE
│ ├── package.xml
│ ├── README.rst
│ ├── RELEASING.rst
│ ├── scripts
│ │ ├── build_test_asan.sh
│ │ ├── install_async_grpc.sh
│ │ ├── install_cartographer_bazel.sh
│ │ ├── install_cartographer_cmake.sh
│ │ ├── install_cartographer_cmake_with_grpc.sh
│ │ ├── install_ceres.sh
│ │ ├── install_debs_bazel.sh
│ │ ├── install_debs_cmake.sh
│ │ ├── install_grpc.sh
│ │ ├── install_prometheus_cpp.sh
│ │ ├── install_proto3.sh
│ │ ├── load_docker_cache.sh
│ │ ├── save_docker_cache.sh
│ │ └── update_configuration_doc.py
│ ├── tools
│ │ └── bazel.rc
│ └── WORKSPACE
├── cartographer_ros
│ ├── AUTHORS
│ ├── cartographer_ros
│ │ ├── cartographer_ros
│ │ │ ├── assets_writer.cc
│ │ │ ├── assets_writer.h
│ │ │ ├── assets_writer_main.cc
│ │ │ ├── cartographer_grpc
│ │ │ │ ├── node_grpc_main.cc
│ │ │ │ └── offline_node_grpc_main.cc
│ │ │ ├── CMakeLists.txt
│ │ │ ├── configuration_files_test.cc
│ │ │ ├── dev
│ │ │ │ ├── rosbag_publisher_main.cc
│ │ │ │ └── trajectory_comparison_main.cc
│ │ │ ├── map_builder_bridge.cc
│ │ │ ├── map_builder_bridge.h
│ │ │ ├── msg_conversion.cc
│ │ │ ├── msg_conversion.h
│ │ │ ├── msg_conversion_test.cc
│ │ │ ├── node.cc
│ │ │ ├── node_constants.cc
│ │ │ ├── node_constants.h
│ │ │ ├── node.h
│ │ │ ├── node_main.cc
│ │ │ ├── node_options.cc
│ │ │ ├── node_options.h
│ │ │ ├── occupancy_grid_node_main.cc
│ │ │ ├── offline_node.cc
│ │ │ ├── offline_node.h
│ │ │ ├── offline_node_main.cc
│ │ │ ├── pbstream_map_publisher_main.cc
│ │ │ ├── pbstream_to_ros_map_main.cc
│ │ │ ├── playable_bag.cc
│ │ │ ├── playable_bag.h
│ │ │ ├── rosbag_validate_main.cc
│ │ │ ├── ros_log_sink.cc
│ │ │ ├── ros_log_sink.h
│ │ │ ├── ros_map.cc
│ │ │ ├── ros_map.h
│ │ │ ├── ros_map_writing_points_processor.cc
│ │ │ ├── ros_map_writing_points_processor.h
│ │ │ ├── sensor_bridge.cc
│ │ │ ├── sensor_bridge.h
│ │ │ ├── split_string.cc
│ │ │ ├── split_string.h
│ │ │ ├── start_trajectory_main.cc
│ │ │ ├── submap.cc
│ │ │ ├── submap.h
│ │ │ ├── tf_bridge.cc
│ │ │ ├── tf_bridge.h
│ │ │ ├── time_conversion.cc
│ │ │ ├── time_conversion.h
│ │ │ ├── time_conversion_test.cc
│ │ │ ├── trajectory_options.cc
│ │ │ ├── trajectory_options.h
│ │ │ ├── urdf_reader.cc
│ │ │ └── urdf_reader.h
│ │ ├── CHANGELOG.rst
│ │ ├── CMakeLists.txt
│ │ ├── configuration_files
│ │ │ ├── assets_writer_backpack_2d_ci.lua
│ │ │ ├── assets_writer_backpack_2d.lua
│ │ │ ├── assets_writer_backpack_3d.lua
│ │ │ ├── assets_writer_ros_map.lua
│ │ │ ├── backpack_2d_localization_evaluation.lua
│ │ │ ├── backpack_2d_localization.lua
│ │ │ ├── backpack_2d.lua
│ │ │ ├── backpack_2d_server.lua
│ │ │ ├── backpack_3d_localization.lua
│ │ │ ├── backpack_3d.lua
│ │ │ ├── demo_2d.rviz
│ │ │ ├── demo_3d.rviz
│ │ │ ├── pr2.lua
│ │ │ ├── revo_lds.lua
│ │ │ ├── taurob_tracker.lua
│ │ │ ├── transform.lua
│ │ │ └── visualize_pbstream.lua
│ │ ├── launch
│ │ │ ├── assets_writer_backpack_2d.launch
│ │ │ ├── assets_writer_backpack_3d.launch
│ │ │ ├── assets_writer_ros_map.launch
│ │ │ ├── backpack_2d.launch
│ │ │ ├── backpack_3d.launch
│ │ │ ├── demo_backpack_2d.launch
│ │ │ ├── demo_backpack_2d_localization.launch
│ │ │ ├── demo_backpack_3d.launch
│ │ │ ├── demo_backpack_3d_localization.launch
│ │ │ ├── demo_pr2.launch
│ │ │ ├── demo_revo_lds.launch
│ │ │ ├── demo_taurob_tracker.launch
│ │ │ ├── grpc_demo_backpack_2d.launch
│ │ │ ├── grpc_demo_backpack_2d_localization.launch
│ │ │ ├── offline_backpack_2d.launch
│ │ │ ├── offline_backpack_3d.launch
│ │ │ ├── taurob_tracker.launch
│ │ │ └── visualize_pbstream.launch
│ │ ├── package.xml
│ │ ├── scripts
│ │ │ ├── cartographer_grpc_server.sh
│ │ │ ├── dev
│ │ │ │ └── compare_localization_to_offline_trajectory.sh
│ │ │ ├── remove_leading_slashes.py
│ │ │ └── tf_remove_frames.py
│ │ └── urdf
│ │ ├── backpack_2d.urdf
│ │ └── backpack_3d.urdf
│ ├── cartographer_ros_msgs
│ │ ├── CHANGELOG.rst
│ │ ├── CMakeLists.txt
│ │ ├── msg
│ │ │ ├── LandmarkEntry.msg
│ │ │ ├── LandmarkList.msg
│ │ │ ├── SensorTopics.msg
│ │ │ ├── StatusCode.msg
│ │ │ ├── StatusResponse.msg
│ │ │ ├── SubmapEntry.msg
│ │ │ ├── SubmapList.msg
│ │ │ ├── SubmapTexture.msg
│ │ │ └── TrajectoryOptions.msg
│ │ ├── package.xml
│ │ └── srv
│ │ ├── FinishTrajectory.srv
│ │ ├── StartTrajectory.srv
│ │ ├── SubmapQuery.srv
│ │ └── WriteState.srv
│ ├── cartographer_ros.rosinstall
│ ├── cartographer_rviz
│ │ ├── cartographer_rviz
│ │ │ ├── drawable_submap.cc
│ │ │ ├── drawable_submap.h
│ │ │ ├── ogre_slice.cc
│ │ │ ├── ogre_slice.h
│ │ │ ├── submaps_display.cc
│ │ │ └── submaps_display.h
│ │ ├── CHANGELOG.rst
│ │ ├── CMakeLists.txt
│ │ ├── ogre_media
│ │ │ └── materials
│ │ │ ├── glsl120
│ │ │ │ ├── glsl120.program
│ │ │ │ ├── submap.frag
│ │ │ │ └── submap.vert
│ │ │ └── scripts
│ │ │ └── submap.material
│ │ ├── package.xml
│ │ └── rviz_plugin_description.xml
│ ├── CONTRIBUTING.md
│ ├── Dockerfile.indigo
│ ├── Dockerfile.kinetic
│ ├── Dockerfile.lunar
│ ├── Dockerfile.melodic
│ ├── docs
│ │ ├── CMakeLists.txt
│ │ └── source
│ │ ├── assets_writer.rst
│ │ ├── configuration.rst
│ │ ├── conf.py
│ │ ├── data.rst
│ │ ├── demos.rst
│ │ ├── faq.rst
│ │ ├── index.rst
│ │ ├── ros_api.rst
│ │ └── tuning.rst
│ ├── jenkins
│ │ ├── Dockerfile.kinetic
│ │ ├── Jenkinsfile
│ │ ├── jenkins-slave
│ │ └── worker.py
│ ├── LICENSE
│ ├── README.rst
│ └── scripts
│ ├── catkin_test_results.sh
│ ├── check_access_token.sh
│ ├── install_debs.sh
│ ├── install.sh
│ ├── load_docker_cache.sh
│ ├── prepare_catkin_workspace.sh
│ ├── prepare_jenkins_catkin_workspace.sh
│ ├── ros_entrypoint.sh
│ └── save_docker_cache.sh
├── ceres-solver
│ ├── cmake
│ │ ├── AddCeresCXX11RequirementsToTarget.cmake
│ │ ├── AddGerritCommitHook.cmake
│ │ ├── AppendTargetProperty.cmake
│ │ ├── CeresCompileOptionsToComponents.cmake
│ │ ├── CeresConfig.cmake.in
│ │ ├── CeresConfigVersion.cmake.in
│ │ ├── CheckIfUnderscorePrefixedBesselFunctionsExist.cmake
│ │ ├── config.h.in
│ │ ├── CreateCeresConfig.cmake
│ │ ├── FindCXSparse.cmake
│ │ ├── FindEigen.cmake
│ │ ├── FindGflags.cmake
│ │ ├── FindGlog.cmake
│ │ ├── FindSharedPtr.cmake
│ │ ├── FindSphinx.cmake
│ │ ├── FindSuiteSparse.cmake
│ │ ├── FindUnorderedMap.cmake
│ │ ├── iOS.cmake
│ │ ├── ReadCeresVersionFromSource.cmake
│ │ ├── uninstall.cmake.in
│ │ └── UpdateCacheVariable.cmake
│ ├── CMakeLists.txt
│ ├── config
│ │ └── ceres
│ │ └── internal
│ │ └── config.h
│ ├── data
│ │ ├── 2x2.foe
│ │ ├── 3x3.foe
│ │ ├── 5x5.foe
│ │ ├── ceres_noisy.pgm
│ │ ├── libmv-ba-problems
│ │ │ ├── problem_01.bin
│ │ │ ├── problem_02.bin
│ │ │ ├── problem_03.bin
│ │ │ └── Readme.txt
│ │ ├── nist
│ │ │ ├── Bennett5.dat
│ │ │ ├── BoxBOD.dat
│ │ │ ├── Chwirut1.dat
│ │ │ ├── Chwirut2.dat
│ │ │ ├── DanWood.dat
│ │ │ ├── Eckerle4.dat
│ │ │ ├── ENSO.dat
│ │ │ ├── Gauss1.dat
│ │ │ ├── Gauss2.dat
│ │ │ ├── Gauss3.dat
│ │ │ ├── Hahn1.dat
│ │ │ ├── Kirby2.dat
│ │ │ ├── Lanczos1.dat
│ │ │ ├── Lanczos2.dat
│ │ │ ├── Lanczos3.dat
│ │ │ ├── MGH09.dat
│ │ │ ├── MGH10.dat
│ │ │ ├── MGH17.dat
│ │ │ ├── Misra1a.dat
│ │ │ ├── Misra1b.dat
│ │ │ ├── Misra1c.dat
│ │ │ ├── Misra1d.dat
│ │ │ ├── Nelson.dat
│ │ │ ├── Rat42.dat
│ │ │ ├── Rat43.dat
│ │ │ ├── Roszman1.dat
│ │ │ └── Thurber.dat
│ │ ├── problem-16-22106-pre.txt
│ │ └── README.foe
│ ├── docs
│ │ ├── CMakeLists.txt
│ │ └── source
│ │ ├── analytical_derivatives.rst
│ │ ├── automatic_derivatives.rst
│ │ ├── bibliography.rst
│ │ ├── CMakeLists.txt
│ │ ├── conf.py
│ │ ├── contributing.rst
│ │ ├── derivatives.rst
│ │ ├── faqs.rst
│ │ ├── features.rst
│ │ ├── forward_central_error.png
│ │ ├── forward_central_ridders_error.png
│ │ ├── gradient_solver.rst
│ │ ├── gradient_tutorial.rst
│ │ ├── index.rst
│ │ ├── installation.rst
│ │ ├── interfacing_with_autodiff.rst
│ │ ├── least_squares_fit.png
│ │ ├── license.rst
│ │ ├── loss.png
│ │ ├── manhattan_olson_3500_result.png
│ │ ├── modeling_faqs.rst
│ │ ├── nnls_covariance.rst
│ │ ├── nnls_modeling.rst
│ │ ├── nnls_solving.rst
│ │ ├── nnls_tutorial.rst
│ │ ├── non_robust_least_squares_fit.png
│ │ ├── numerical_derivatives.rst
│ │ ├── pose_graph_3d_ex.png
│ │ ├── robust_least_squares_fit.png
│ │ ├── slam2d.png
│ │ ├── solving_faqs.rst
│ │ ├── spivak_notation.rst
│ │ ├── _templates
│ │ │ └── layout.html
│ │ ├── tutorial.rst
│ │ ├── users.rst
│ │ └── version_history.rst
│ ├── examples
│ │ ├── bal_problem.cc
│ │ ├── bal_problem.h
│ │ ├── bundle_adjuster.cc
│ │ ├── circle_fit.cc
│ │ ├── CMakeLists.txt
│ │ ├── curve_fitting.c
│ │ ├── curve_fitting.cc
│ │ ├── denoising.cc
│ │ ├── ellipse_approximation.cc
│ │ ├── fields_of_experts.cc
│ │ ├── fields_of_experts.h
│ │ ├── helloworld_analytic_diff.cc
│ │ ├── helloworld.cc
│ │ ├── helloworld_numeric_diff.cc
│ │ ├── libmv_bundle_adjuster.cc
│ │ ├── libmv_homography.cc
│ │ ├── Makefile.example
│ │ ├── more_garbow_hillstrom.cc
│ │ ├── nist.cc
│ │ ├── pgm_image.h
│ │ ├── powell.cc
│ │ ├── random.h
│ │ ├── robot_pose_mle.cc
│ │ ├── robust_curve_fitting.cc
│ │ ├── rosenbrock.cc
│ │ ├── sampled_function
│ │ │ ├── CMakeLists.txt
│ │ │ ├── README.md
│ │ │ └── sampled_function.cc
│ │ ├── simple_bundle_adjuster.cc
│ │ ├── slam
│ │ │ ├── CMakeLists.txt
│ │ │ ├── common
│ │ │ │ └── read_g2o.h
│ │ │ ├── pose_graph_2d
│ │ │ │ ├── angle_local_parameterization.h
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── normalize_angle.h
│ │ │ │ ├── plot_results.py
│ │ │ │ ├── pose_graph_2d.cc
│ │ │ │ ├── pose_graph_2d_error_term.h
│ │ │ │ ├── README.md
│ │ │ │ └── types.h
│ │ │ └── pose_graph_3d
│ │ │ ├── CMakeLists.txt
│ │ │ ├── plot_results.py
│ │ │ ├── pose_graph_3d.cc
│ │ │ ├── pose_graph_3d_error_term.h
│ │ │ ├── README.md
│ │ │ └── types.h
│ │ └── snavely_reprojection_error.h
│ ├── include
│ │ └── ceres
│ │ ├── autodiff_cost_function.h
│ │ ├── autodiff_local_parameterization.h
│ │ ├── c_api.h
│ │ ├── ceres.h
│ │ ├── conditioned_cost_function.h
│ │ ├── cost_function.h
│ │ ├── cost_function_to_functor.h
│ │ ├── covariance.h
│ │ ├── crs_matrix.h
│ │ ├── cubic_interpolation.h
│ │ ├── dynamic_autodiff_cost_function.h
│ │ ├── dynamic_cost_function.h
│ │ ├── dynamic_cost_function_to_functor.h
│ │ ├── dynamic_numeric_diff_cost_function.h
│ │ ├── fpclassify.h
│ │ ├── gradient_checker.h
│ │ ├── gradient_problem.h
│ │ ├── gradient_problem_solver.h
│ │ ├── internal
│ │ │ ├── autodiff.h
│ │ │ ├── disable_warnings.h
│ │ │ ├── eigen.h
│ │ │ ├── fixed_array.h
│ │ │ ├── macros.h
│ │ │ ├── manual_constructor.h
│ │ │ ├── numeric_diff.h
│ │ │ ├── port.h
│ │ │ ├── reenable_warnings.h
│ │ │ ├── scoped_ptr.h
│ │ │ └── variadic_evaluate.h
│ │ ├── iteration_callback.h
│ │ ├── jet.h
│ │ ├── local_parameterization.h
│ │ ├── loss_function.h
│ │ ├── normal_prior.h
│ │ ├── numeric_diff_cost_function.h
│ │ ├── numeric_diff_options.h
│ │ ├── ordered_groups.h
│ │ ├── problem.h
│ │ ├── rotation.h
│ │ ├── sized_cost_function.h
│ │ ├── solver.h
│ │ ├── types.h
│ │ └── version.h
│ ├── internal
│ │ └── ceres
│ │ ├── array_utils.cc
│ │ ├── array_utils.h
│ │ ├── array_utils_test.cc
│ │ ├── autodiff_cost_function_test.cc
│ │ ├── autodiff_local_parameterization_test.cc
│ │ ├── autodiff_test.cc
│ │ ├── blas.cc
│ │ ├── blas.h
│ │ ├── block_evaluate_preparer.cc
│ │ ├── block_evaluate_preparer.h
│ │ ├── block_jacobian_writer.cc
│ │ ├── block_jacobian_writer.h
│ │ ├── block_jacobi_preconditioner.cc
│ │ ├── block_jacobi_preconditioner.h
│ │ ├── block_jacobi_preconditioner_test.cc
│ │ ├── block_random_access_dense_matrix.cc
│ │ ├── block_random_access_dense_matrix.h
│ │ ├── block_random_access_dense_matrix_test.cc
│ │ ├── block_random_access_diagonal_matrix.cc
│ │ ├── block_random_access_diagonal_matrix.h
│ │ ├── block_random_access_diagonal_matrix_test.cc
│ │ ├── block_random_access_matrix.cc
│ │ ├── block_random_access_matrix.h
│ │ ├── block_random_access_sparse_matrix.cc
│ │ ├── block_random_access_sparse_matrix.h
│ │ ├── block_random_access_sparse_matrix_test.cc
│ │ ├── block_sparse_matrix.cc
│ │ ├── block_sparse_matrix.h
│ │ ├── block_sparse_matrix_test.cc
│ │ ├── block_structure.cc
│ │ ├── block_structure.h
│ │ ├── bundle_adjustment_test.cc
│ │ ├── callbacks.cc
│ │ ├── callbacks.h
│ │ ├── canonical_views_clustering.cc
│ │ ├── canonical_views_clustering.h
│ │ ├── canonical_views_clustering_test.cc
│ │ ├── c_api.cc
│ │ ├── c_api_test.cc
│ │ ├── casts.h
│ │ ├── cgnr_linear_operator.h
│ │ ├── cgnr_solver.cc
│ │ ├── cgnr_solver.h
│ │ ├── CMakeLists.txt
│ │ ├── collections_port.h
│ │ ├── compressed_col_sparse_matrix_utils.cc
│ │ ├── compressed_col_sparse_matrix_utils.h
│ │ ├── compressed_col_sparse_matrix_utils_test.cc
│ │ ├── compressed_row_jacobian_writer.cc
│ │ ├── compressed_row_jacobian_writer.h
│ │ ├── compressed_row_sparse_matrix.cc
│ │ ├── compressed_row_sparse_matrix.h
│ │ ├── compressed_row_sparse_matrix_test.cc
│ │ ├── conditioned_cost_function.cc
│ │ ├── conditioned_cost_function_test.cc
│ │ ├── conjugate_gradients_solver.cc
│ │ ├── conjugate_gradients_solver.h
│ │ ├── conjugate_gradients_solver_test.cc
│ │ ├── coordinate_descent_minimizer.cc
│ │ ├── coordinate_descent_minimizer.h
│ │ ├── corrector.cc
│ │ ├── corrector.h
│ │ ├── corrector_test.cc
│ │ ├── cost_function_to_functor_test.cc
│ │ ├── covariance.cc
│ │ ├── covariance_impl.cc
│ │ ├── covariance_impl.h
│ │ ├── covariance_test.cc
│ │ ├── cubic_interpolation_test.cc
│ │ ├── cxsparse.cc
│ │ ├── cxsparse.h
│ │ ├── dense_jacobian_writer.h
│ │ ├── dense_linear_solver_test.cc
│ │ ├── dense_normal_cholesky_solver.cc
│ │ ├── dense_normal_cholesky_solver.h
│ │ ├── dense_qr_solver.cc
│ │ ├── dense_qr_solver.h
│ │ ├── dense_sparse_matrix.cc
│ │ ├── dense_sparse_matrix.h
│ │ ├── dense_sparse_matrix_test.cc
│ │ ├── detect_structure.cc
│ │ ├── detect_structure.h
│ │ ├── detect_structure_test.cc
│ │ ├── dogleg_strategy.cc
│ │ ├── dogleg_strategy.h
│ │ ├── dogleg_strategy_test.cc
│ │ ├── dynamic_autodiff_cost_function_test.cc
│ │ ├── dynamic_compressed_row_finalizer.h
│ │ ├── dynamic_compressed_row_jacobian_writer.cc
│ │ ├── dynamic_compressed_row_jacobian_writer.h
│ │ ├── dynamic_compressed_row_sparse_matrix.cc
│ │ ├── dynamic_compressed_row_sparse_matrix.h
│ │ ├── dynamic_compressed_row_sparse_matrix_test.cc
│ │ ├── dynamic_numeric_diff_cost_function_test.cc
│ │ ├── dynamic_sparse_normal_cholesky_solver.cc
│ │ ├── dynamic_sparse_normal_cholesky_solver.h
│ │ ├── dynamic_sparse_normal_cholesky_solver_test.cc
│ │ ├── dynamic_sparsity_test.cc
│ │ ├── eigensparse.cc
│ │ ├── eigensparse.h
│ │ ├── evaluator.cc
│ │ ├── evaluator.h
│ │ ├── evaluator_test.cc
│ │ ├── evaluator_test_utils.cc
│ │ ├── evaluator_test_utils.h
│ │ ├── execution_summary.h
│ │ ├── file.cc
│ │ ├── file.h
│ │ ├── function_sample.cc
│ │ ├── function_sample.h
│ │ ├── generated
│ │ │ ├── partitioned_matrix_view_2_2_2.cc
│ │ │ ├── partitioned_matrix_view_2_2_3.cc
│ │ │ ├── partitioned_matrix_view_2_2_4.cc
│ │ │ ├── partitioned_matrix_view_2_2_d.cc
│ │ │ ├── partitioned_matrix_view_2_3_3.cc
│ │ │ ├── partitioned_matrix_view_2_3_4.cc
│ │ │ ├── partitioned_matrix_view_2_3_6.cc
│ │ │ ├── partitioned_matrix_view_2_3_9.cc
│ │ │ ├── partitioned_matrix_view_2_3_d.cc
│ │ │ ├── partitioned_matrix_view_2_4_3.cc
│ │ │ ├── partitioned_matrix_view_2_4_4.cc
│ │ │ ├── partitioned_matrix_view_2_4_8.cc
│ │ │ ├── partitioned_matrix_view_2_4_9.cc
│ │ │ ├── partitioned_matrix_view_2_4_d.cc
│ │ │ ├── partitioned_matrix_view_2_d_d.cc
│ │ │ ├── partitioned_matrix_view_4_4_2.cc
│ │ │ ├── partitioned_matrix_view_4_4_3.cc
│ │ │ ├── partitioned_matrix_view_4_4_4.cc
│ │ │ ├── partitioned_matrix_view_4_4_d.cc
│ │ │ ├── partitioned_matrix_view_d_d_d.cc
│ │ │ ├── schur_eliminator_2_2_2.cc
│ │ │ ├── schur_eliminator_2_2_3.cc
│ │ │ ├── schur_eliminator_2_2_4.cc
│ │ │ ├── schur_eliminator_2_2_d.cc
│ │ │ ├── schur_eliminator_2_3_3.cc
│ │ │ ├── schur_eliminator_2_3_4.cc
│ │ │ ├── schur_eliminator_2_3_6.cc
│ │ │ ├── schur_eliminator_2_3_9.cc
│ │ │ ├── schur_eliminator_2_3_d.cc
│ │ │ ├── schur_eliminator_2_4_3.cc
│ │ │ ├── schur_eliminator_2_4_4.cc
│ │ │ ├── schur_eliminator_2_4_8.cc
│ │ │ ├── schur_eliminator_2_4_9.cc
│ │ │ ├── schur_eliminator_2_4_d.cc
│ │ │ ├── schur_eliminator_2_d_d.cc
│ │ │ ├── schur_eliminator_4_4_2.cc
│ │ │ ├── schur_eliminator_4_4_3.cc
│ │ │ ├── schur_eliminator_4_4_4.cc
│ │ │ ├── schur_eliminator_4_4_d.cc
│ │ │ └── schur_eliminator_d_d_d.cc
│ │ ├── generate_template_specializations.py
│ │ ├── gmock
│ │ │ ├── gmock.h
│ │ │ └── mock-log.h
│ │ ├── gmock_gtest_all.cc
│ │ ├── gmock_main.cc
│ │ ├── gradient_checker.cc
│ │ ├── gradient_checker_test.cc
│ │ ├── gradient_checking_cost_function.cc
│ │ ├── gradient_checking_cost_function.h
│ │ ├── gradient_checking_cost_function_test.cc
│ │ ├── gradient_problem.cc
│ │ ├── gradient_problem_evaluator.h
│ │ ├── gradient_problem_solver.cc
│ │ ├── gradient_problem_solver_test.cc
│ │ ├── gradient_problem_test.cc
│ │ ├── graph_algorithms.h
│ │ ├── graph_algorithms_test.cc
│ │ ├── graph.h
│ │ ├── graph_test.cc
│ │ ├── gtest
│ │ │ └── gtest.h
│ │ ├── householder_vector.h
│ │ ├── householder_vector_test.cc
│ │ ├── implicit_schur_complement.cc
│ │ ├── implicit_schur_complement.h
│ │ ├── implicit_schur_complement_test.cc
│ │ ├── inner_product_computer.cc
│ │ ├── inner_product_computer.h
│ │ ├── inner_product_computer_test.cc
│ │ ├── integral_types.h
│ │ ├── invert_psd_matrix.h
│ │ ├── invert_psd_matrix_test.cc
│ │ ├── is_close.cc
│ │ ├── is_close.h
│ │ ├── is_close_test.cc
│ │ ├── iterative_schur_complement_solver.cc
│ │ ├── iterative_schur_complement_solver.h
│ │ ├── iterative_schur_complement_solver_test.cc
│ │ ├── jet_test.cc
│ │ ├── lapack.cc
│ │ ├── lapack.h
│ │ ├── levenberg_marquardt_strategy.cc
│ │ ├── levenberg_marquardt_strategy.h
│ │ ├── levenberg_marquardt_strategy_test.cc
│ │ ├── linear_least_squares_problems.cc
│ │ ├── linear_least_squares_problems.h
│ │ ├── linear_operator.cc
│ │ ├── linear_operator.h
│ │ ├── linear_solver.cc
│ │ ├── linear_solver.h
│ │ ├── line_search.cc
│ │ ├── line_search_direction.cc
│ │ ├── line_search_direction.h
│ │ ├── line_search.h
│ │ ├── line_search_minimizer.cc
│ │ ├── line_search_minimizer.h
│ │ ├── line_search_minimizer_test.cc
│ │ ├── line_search_preprocessor.cc
│ │ ├── line_search_preprocessor.h
│ │ ├── line_search_preprocessor_test.cc
│ │ ├── local_parameterization.cc
│ │ ├── local_parameterization_test.cc
│ │ ├── loss_function.cc
│ │ ├── loss_function_test.cc
│ │ ├── low_rank_inverse_hessian.cc
│ │ ├── low_rank_inverse_hessian.h
│ │ ├── map_util.h
│ │ ├── miniglog
│ │ │ └── glog
│ │ │ ├── logging.cc
│ │ │ └── logging.h
│ │ ├── minimizer.cc
│ │ ├── minimizer.h
│ │ ├── minimizer_test.cc
│ │ ├── mutex.h
│ │ ├── normal_prior.cc
│ │ ├── normal_prior_test.cc
│ │ ├── numeric_diff_cost_function_test.cc
│ │ ├── numeric_diff_test_utils.cc
│ │ ├── numeric_diff_test_utils.h
│ │ ├── ordered_groups_test.cc
│ │ ├── parameter_block.h
│ │ ├── parameter_block_ordering.cc
│ │ ├── parameter_block_ordering.h
│ │ ├── parameter_block_ordering_test.cc
│ │ ├── parameter_block_test.cc
│ │ ├── partitioned_matrix_view.cc
│ │ ├── partitioned_matrix_view.h
│ │ ├── partitioned_matrix_view_impl.h
│ │ ├── partitioned_matrix_view_template.py
│ │ ├── partitioned_matrix_view_test.cc
│ │ ├── polynomial.cc
│ │ ├── polynomial.h
│ │ ├── polynomial_test.cc
│ │ ├── preconditioner.cc
│ │ ├── preconditioner.h
│ │ ├── preprocessor.cc
│ │ ├── preprocessor.h
│ │ ├── problem.cc
│ │ ├── problem_impl.cc
│ │ ├── problem_impl.h
│ │ ├── problem_test.cc
│ │ ├── program.cc
│ │ ├── program_evaluator.h
│ │ ├── program.h
│ │ ├── program_test.cc
│ │ ├── random.h
│ │ ├── reorder_program.cc
│ │ ├── reorder_program.h
│ │ ├── reorder_program_test.cc
│ │ ├── residual_block.cc
│ │ ├── residual_block.h
│ │ ├── residual_block_test.cc
│ │ ├── residual_block_utils.cc
│ │ ├── residual_block_utils.h
│ │ ├── residual_block_utils_test.cc
│ │ ├── rotation_test.cc
│ │ ├── schur_complement_solver.cc
│ │ ├── schur_complement_solver.h
│ │ ├── schur_complement_solver_test.cc
│ │ ├── schur_eliminator.cc
│ │ ├── schur_eliminator.h
│ │ ├── schur_eliminator_impl.h
│ │ ├── schur_eliminator_template.py
│ │ ├── schur_eliminator_test.cc
│ │ ├── schur_jacobi_preconditioner.cc
│ │ ├── schur_jacobi_preconditioner.h
│ │ ├── schur_templates.cc
│ │ ├── schur_templates.h
│ │ ├── scratch_evaluate_preparer.cc
│ │ ├── scratch_evaluate_preparer.h
│ │ ├── single_linkage_clustering.cc
│ │ ├── single_linkage_clustering.h
│ │ ├── single_linkage_clustering_test.cc
│ │ ├── small_blas.h
│ │ ├── small_blas_test.cc
│ │ ├── solver.cc
│ │ ├── solver_test.cc
│ │ ├── solver_utils.cc
│ │ ├── solver_utils.h
│ │ ├── sparse_cholesky.cc
│ │ ├── sparse_cholesky.h
│ │ ├── sparse_cholesky_test.cc
│ │ ├── sparse_matrix.cc
│ │ ├── sparse_matrix.h
│ │ ├── sparse_normal_cholesky_solver.cc
│ │ ├── sparse_normal_cholesky_solver.h
│ │ ├── sparse_normal_cholesky_solver_test.cc
│ │ ├── split.cc
│ │ ├── split.h
│ │ ├── stl_util.h
│ │ ├── stringprintf.cc
│ │ ├── stringprintf.h
│ │ ├── suitesparse.cc
│ │ ├── suitesparse.h
│ │ ├── system_test.cc
│ │ ├── test_util.cc
│ │ ├── test_util.h
│ │ ├── triplet_sparse_matrix.cc
│ │ ├── triplet_sparse_matrix.h
│ │ ├── triplet_sparse_matrix_test.cc
│ │ ├── trust_region_minimizer.cc
│ │ ├── trust_region_minimizer.h
│ │ ├── trust_region_minimizer_test.cc
│ │ ├── trust_region_preprocessor.cc
│ │ ├── trust_region_preprocessor.h
│ │ ├── trust_region_preprocessor_test.cc
│ │ ├── trust_region_step_evaluator.cc
│ │ ├── trust_region_step_evaluator.h
│ │ ├── trust_region_strategy.cc
│ │ ├── trust_region_strategy.h
│ │ ├── types.cc
│ │ ├── visibility_based_preconditioner.cc
│ │ ├── visibility_based_preconditioner.h
│ │ ├── visibility_based_preconditioner_test.cc
│ │ ├── visibility.cc
│ │ ├── visibility.h
│ │ ├── visibility_test.cc
│ │ ├── wall_time.cc
│ │ └── wall_time.h
│ ├── jni
│ │ ├── Android.mk
│ │ ├── Application.mk
│ │ └── assert_ndk_version.sh
│ ├── LICENSE
│ ├── package.xml
│ ├── README.md
│ └── scripts
│ ├── make_docs.py
│ └── make_release
└── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
111 directories, 1240 files