Compare commits

..

No commits in common. "eb5d0b2218e839f754475eb2d352a995f0616970" and "b1b63a3cb1e24098b1473e79cc05be7116e2a48a" have entirely different histories.

19 changed files with 81 additions and 209 deletions

View File

@ -1,15 +0,0 @@
name: Debian Bullseye CI
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run the Dockerfile
run: docker build . -f Dockerfile.bullseye

View File

@ -1,15 +0,0 @@
name: Ubuntu 22.04 CI
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run the Dockerfile
run: docker build . -f Dockerfile.jammy

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
build build
bazel-* bazel-*
/scripts/abseil-cpp/

View File

@ -29,8 +29,6 @@ include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake")
google_initialize_cartographer_project() google_initialize_cartographer_project()
google_enable_testing() google_enable_testing()
list(APPEND CMAKE_PREFIX_PATH "/usr/local/stow/absl")
find_package(absl REQUIRED) find_package(absl REQUIRED)
set(BOOST_COMPONENTS iostreams) set(BOOST_COMPONENTS iostreams)
if(WIN32) if(WIN32)
@ -270,41 +268,6 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
${PROTOBUF_INCLUDE_DIR}) ${PROTOBUF_INCLUDE_DIR})
# TODO(hrapp): This should not explicitly list pthread and use # TODO(hrapp): This should not explicitly list pthread and use
# PROTOBUF_LIBRARIES, but that failed on first try. # PROTOBUF_LIBRARIES, but that failed on first try.
#
function(get_library_paths target)
get_target_property(LINK_LIBS ${target} INTERFACE_LINK_LIBRARIES)
if(NOT LINK_LIBS)
message(WARNING "Target ${target} has no INTERFACE_LINK_LIBRARIES")
return()
endif()
foreach(lib IN LISTS LINK_LIBS)
if(TARGET ${lib})
get_target_property(TYPE ${lib} TYPE)
if(TYPE STREQUAL "INTERFACE_LIBRARY")
get_library_paths(${lib})
elseif(TYPE STREQUAL "STATIC_LIBRARY" OR TYPE STREQUAL "SHARED_LIBRARY" OR TYPE STREQUAL "MODULE_LIBRARY")
get_target_property(LIB_PATH ${lib} LOCATION)
if(LIB_PATH)
message(STATUS "Library ${lib} is located at ${LIB_PATH}")
else()
message(WARNING "Library ${lib} has no LOCATION property")
endif()
endif()
else()
if("${lib}" MATCHES "-NOTFOUND$")
message(WARNING "Library ${lib} is NOTFOUND")
else()
message(STATUS "Linked library: ${lib}")
endif()
endif()
endforeach()
endfunction()
# absl::base
get_library_paths(absl::base)
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY} target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::algorithm absl::algorithm
absl::base absl::base

View File

@ -31,5 +31,11 @@ COPY scripts/install_abseil.sh cartographer/scripts/
RUN cartographer/scripts/install_abseil.sh && rm -rf /var/lib/apt/lists/* RUN cartographer/scripts/install_abseil.sh && rm -rf /var/lib/apt/lists/*
COPY scripts/install_proto3.sh cartographer/scripts/ COPY scripts/install_proto3.sh cartographer/scripts/
RUN cartographer/scripts/install_proto3.sh && rm -rf protobuf RUN cartographer/scripts/install_proto3.sh && rm -rf protobuf
COPY scripts/install_grpc.sh cartographer/scripts/
RUN cartographer/scripts/install_grpc.sh && rm -rf grpc
COPY scripts/install_async_grpc.sh cartographer/scripts/
RUN cartographer/scripts/install_async_grpc.sh && rm -rf async_grpc
COPY scripts/install_prometheus_cpp.sh cartographer/scripts/
RUN cartographer/scripts/install_prometheus_cpp.sh && rm -rf prometheus-cpp
COPY . cartographer COPY . cartographer
RUN cartographer/scripts/install_cartographer_cmake.sh && rm -rf cartographer RUN cartographer/scripts/install_cartographer_cmake_with_grpc.sh && rm -rf cartographer

View File

@ -1,41 +0,0 @@
# Copyright 2020 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.
FROM ubuntu:bionic
ARG cc
ARG cxx
# Set the preferred C/C++ compiler toolchain, if given (otherwise default).
ENV CC=$cc
ENV CXX=$cxx
# This base image doesn't ship with sudo, apt-utils. tzdata is installed here to avoid hanging later
# when it would wait for user input.
RUN apt-get update && apt-get install -y sudo apt-utils tzdata && rm -rf /var/lib/apt/lists/*
COPY scripts/install_debs_cmake.sh cartographer/scripts/
RUN cartographer/scripts/install_debs_cmake.sh && rm -rf /var/lib/apt/lists/*
COPY scripts/install_abseil.sh cartographer/scripts/
RUN cartographer/scripts/install_abseil.sh && rm -rf /var/lib/apt/lists/*
COPY scripts/install_proto3.sh cartographer/scripts/
RUN cartographer/scripts/install_proto3.sh && rm -rf protobuf
COPY scripts/install_grpc.sh cartographer/scripts/
RUN cartographer/scripts/install_grpc.sh && rm -rf grpc
COPY scripts/install_async_grpc.sh cartographer/scripts/
RUN cartographer/scripts/install_async_grpc.sh && rm -rf async_grpc
COPY scripts/install_prometheus_cpp.sh cartographer/scripts/
RUN cartographer/scripts/install_prometheus_cpp.sh && rm -rf prometheus-cpp
COPY . cartographer
RUN cartographer/scripts/install_cartographer_cmake_with_grpc.sh && rm -rf cartographer

View File

@ -1,31 +0,0 @@
# Copyright 2020 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.
FROM ubuntu:jammy
ARG cc
ARG cxx
# Set the preferred C/C++ compiler toolchain, if given (otherwise default).
ENV CC=$cc
ENV CXX=$cxx
# This base image doesn't ship with sudo, apt-utils. tzdata is installed here to avoid hanging later
# when it would wait for user input.
RUN apt-get update && apt-get install -y sudo apt-utils tzdata && rm -rf /var/lib/apt/lists/*
COPY scripts/install_debs_cmake.sh cartographer/scripts/
RUN cartographer/scripts/install_debs_cmake.sh && rm -rf /var/lib/apt/lists/*
COPY . cartographer
RUN cartographer/scripts/install_cartographer_cmake.sh && rm -rf cartographer

View File

@ -1,4 +1,4 @@
# Copyright 2022 The Cartographer Authors # Copyright 2016 The Cartographer Authors
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
FROM debian:bullseye FROM debian:stretch
ARG cc ARG cc
ARG cxx ARG cxx
@ -26,5 +26,11 @@ RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/*
COPY scripts/install_debs_cmake.sh cartographer/scripts/ COPY scripts/install_debs_cmake.sh cartographer/scripts/
RUN cartographer/scripts/install_debs_cmake.sh && rm -rf /var/lib/apt/lists/* RUN cartographer/scripts/install_debs_cmake.sh && rm -rf /var/lib/apt/lists/*
COPY scripts/install_abseil.sh cartographer/scripts/
RUN cartographer/scripts/install_abseil.sh && rm -rf /var/lib/apt/lists/*
COPY scripts/install_ceres.sh cartographer/scripts/
RUN cartographer/scripts/install_ceres.sh && rm -rf ceres-solver
COPY scripts/install_proto3.sh cartographer/scripts/
RUN cartographer/scripts/install_proto3.sh && rm -rf protobuf
COPY . cartographer COPY . cartographer
RUN cartographer/scripts/install_cartographer_cmake.sh && rm -rf cartographer RUN cartographer/scripts/install_cartographer_cmake.sh && rm -rf cartographer

View File

@ -16,7 +16,7 @@
Cartographer Cartographer
============ ============
|build-jammy| |build-focal| |build-bionic| |build-bullseye| |build-buster| |docs| |license| |build| |docs| |license|
Purpose Purpose
======= =======
@ -30,23 +30,6 @@ configurations.
.. _Cartographer: https://github.com/cartographer-project/cartographer .. _Cartographer: https://github.com/cartographer-project/cartographer
.. _SLAM: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping .. _SLAM: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping
A Note for ROS Users
====================
**Cartographer is no longer actively maintained.**
On rare occasions critical pull requests may be merged, but no new development is currently taking place, including issue response.
If you are installing Cartographer in ROS 1 / ROS 2 using a binary package that package is a fork of this repository.
The ROS fork of Cartographer is only maintained in a limited capacity.
No new development takes place on this fork, but pull requests may be merged at the maintainers' discretion.
The ROS fork of Cartographer, and the ROS wrapper library, can be found at these locations:
- `Cartographer Fork <https://github.com/ros2/cartographer>`_
- `Cartographer ROS <https://github.com/ros2/cartographer_ros>`_
Additional discussion can be found in `this ROS Discourse thread<https://discourse.ros.org/t/rolling-and-soon-humble-release-of-both-cartographer-and-cartographer-ros-v2-and-call-for-testing/25137>`_.
Getting started Getting started
=============== ===============
@ -100,26 +83,10 @@ Slides of these Cartographer Open House meetings are listed below.
- June 22, 2017: `Slides <https://storage.googleapis.com/cartographer-public-data/cartographer-open-house/170622/sildes.pdf>`_ - June 22, 2017: `Slides <https://storage.googleapis.com/cartographer-public-data/cartographer-open-house/170622/sildes.pdf>`_
- June 8, 2017: `Slides <https://storage.googleapis.com/cartographer-public-data/cartographer-open-house/170608/slides.pdf>`_ - June 8, 2017: `Slides <https://storage.googleapis.com/cartographer-public-data/cartographer-open-house/170608/slides.pdf>`_
.. |build-jammy| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-jammy.yaml/badge.svg .. |build| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-focal.yaml/badge.svg
:alt: Ubuntu 22.04 Build Status
:scale: 100%
:target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-jammy.yaml
.. |build-focal| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-focal.yaml/badge.svg
:alt: Ubuntu 20.04 Build Status :alt: Ubuntu 20.04 Build Status
:scale: 100% :scale: 100%
:target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-focal.yaml :target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-focal.yaml
.. |build-bionic| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-bionic.yaml/badge.svg
:alt: Ubuntu 18.04 Build Status
:scale: 100%
:target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-bionic.yaml
.. |build-bullseye| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-bullseye.yaml/badge.svg
:alt: Debian Bullseye Build Status
:scale: 100%
:target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-bullseye.yaml
.. |build-buster| image:: https://github.com/cartographer-project/cartographer/actions/workflows/ci-buster.yaml/badge.svg
:alt: Debian Buster Build Status
:scale: 100%
:target: https://github.com/cartographer-project/cartographer/actions/workflows/ci-buster.yaml
.. |docs| image:: https://readthedocs.org/projects/google-cartographer/badge/?version=latest .. |docs| image:: https://readthedocs.org/projects/google-cartographer/badge/?version=latest
:alt: Documentation Status :alt: Documentation Status
:scale: 100% :scale: 100%

View File

@ -20,10 +20,11 @@ def cartographer_repositories():
_maybe( _maybe(
http_archive, http_archive,
name = "com_github_nelhage_rules_boost", name = "com_github_nelhage_rules_boost",
sha256 = "f7d620c0061631d5b7685cd1065f2e2bf0768559555010a75e8e4720006f5867", sha256 = "371f49e7b29e44a718baf8b9a2dd3eca865005a851c9ecf8fb6a10a715aa58dd",
strip_prefix = "rules_boost-c3fae06e819ed8b93e31b150387dce4864758643", strip_prefix = "rules_boost-a5a95642f6097f8949020646ffe89d7243008981",
urls = [ urls = [
"https://github.com/nelhage/rules_boost/archive/c3fae06e819ed8b93e31b150387dce4864758643.tar.gz", "https://mirror.bazel.build/github.com/nelhage/rules_boost/archive/a5a95642f6097f8949020646ffe89d7243008981.tar.gz",
"https://github.com/nelhage/rules_boost/archive/a5a95642f6097f8949020646ffe89d7243008981.tar.gz",
], ],
) )

View File

@ -374,8 +374,6 @@ void OptimizationProblem3D::Solve(
auto imu_it = imu_data.begin(); auto imu_it = imu_data.begin();
auto prev_node_it = node_it; auto prev_node_it = node_it;
bool gravity_block_added = false;
for (++node_it; node_it != trajectory_end; ++node_it) { for (++node_it; node_it != trajectory_end; ++node_it) {
const NodeId first_node_id = prev_node_it->id; const NodeId first_node_id = prev_node_it->id;
const NodeSpec3D& first_node_data = prev_node_it->data; const NodeSpec3D& first_node_data = prev_node_it->data;
@ -434,7 +432,6 @@ void OptimizationProblem3D::Solve(
C_nodes.at(third_node_id).translation(), C_nodes.at(third_node_id).translation(),
&trajectory_data.gravity_constant, &trajectory_data.gravity_constant,
trajectory_data.imu_calibration.data()); trajectory_data.imu_calibration.data());
gravity_block_added = true;
} }
problem.AddResidualBlock( problem.AddResidualBlock(
RotationCostFunction3D::CreateAutoDiffCostFunction( RotationCostFunction3D::CreateAutoDiffCostFunction(
@ -445,11 +442,8 @@ void OptimizationProblem3D::Solve(
trajectory_data.imu_calibration.data()); trajectory_data.imu_calibration.data());
} }
if (gravity_block_added) {
// Force gravity constant to be positive. // Force gravity constant to be positive.
problem.SetParameterLowerBound(&trajectory_data.gravity_constant, 0, problem.SetParameterLowerBound(&trajectory_data.gravity_constant, 0, 0.0);
0.0);
}
} }
} }

View File

@ -22,7 +22,7 @@ macro(_parse_arguments ARGS)
"${OPTIONS}" "${ONE_VALUE_ARG}" "${MULTI_VALUE_ARGS}" ${ARGS}) "${OPTIONS}" "${ONE_VALUE_ARG}" "${MULTI_VALUE_ARGS}" ${ARGS})
endmacro(_parse_arguments) endmacro(_parse_arguments)
macro(_common_compile_stuff) macro(_common_compile_stuff VISIBILITY)
set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}") set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}")
set_target_properties(${NAME} PROPERTIES set_target_properties(${NAME} PROPERTIES
@ -34,7 +34,7 @@ endmacro(_common_compile_stuff)
function(google_test NAME ARG_SRC) function(google_test NAME ARG_SRC)
add_executable(${NAME} ${ARG_SRC}) add_executable(${NAME} ${ARG_SRC})
_common_compile_stuff() _common_compile_stuff("PRIVATE")
# Make sure that gmock always includes the correct gtest/gtest.h. # Make sure that gmock always includes the correct gtest/gtest.h.
target_include_directories("${NAME}" SYSTEM PRIVATE target_include_directories("${NAME}" SYSTEM PRIVATE
@ -49,7 +49,7 @@ function(google_binary NAME)
add_executable(${NAME} ${ARG_SRCS}) add_executable(${NAME} ${ARG_SRCS})
_common_compile_stuff() _common_compile_stuff("PRIVATE")
install(TARGETS "${NAME}" RUNTIME DESTINATION bin) install(TARGETS "${NAME}" RUNTIME DESTINATION bin)
endfunction() endfunction()

View File

@ -106,7 +106,7 @@ TRAJECTORY_BUILDER_3D = {
}, },
}, },
-- When setting use_intensities to true, the intensity_cost_function_options_0 -- When setting use_intensites to true, the intensity_cost_function_options_0
-- parameter in ceres_scan_matcher has to be set up as well or otherwise -- parameter in ceres_scan_matcher has to be set up as well or otherwise
-- CeresScanMatcher will CHECK-fail. -- CeresScanMatcher will CHECK-fail.
use_intensities = false, use_intensities = false,

View File

@ -75,6 +75,10 @@ On Ubuntu 18.04 (Bionic):
:language: bash :language: bash
:lines: 20- :lines: 20-
.. literalinclude:: ../../scripts/install_ceres.sh
:language: bash
:lines: 20-
.. literalinclude:: ../../scripts/install_proto3.sh .. literalinclude:: ../../scripts/install_proto3.sh
:language: bash :language: bash
:lines: 20- :lines: 20-
@ -93,8 +97,8 @@ on systems that meet the following requirements:
* 64-bit, modern CPU (e.g. 3rd generation i7) * 64-bit, modern CPU (e.g. 3rd generation i7)
* 16 GB RAM * 16 GB RAM
* Ubuntu 18.04 (Bionic), 20.04 (Focal), 22.04 (Jammy) * Ubuntu 18.04 (Bionic), 20.04 (Focal)
* gcc version 7.5.0, 8.3.0, 9.3.0, 10.2.1, 11.2.0 * gcc version 6.3.0, 7.5.0, 9.3.0
Known Issues Known Issues
------------ ------------

View File

@ -43,6 +43,7 @@
<depend>libboost-iostreams-dev</depend> <depend>libboost-iostreams-dev</depend>
<depend>eigen</depend> <depend>eigen</depend>
<depend>libabsl-dev</depend>
<depend>libcairo2-dev</depend> <depend>libcairo2-dev</depend>
<depend>libceres-dev</depend> <depend>libceres-dev</depend>
<depend>libgflags-dev</depend> <depend>libgflags-dev</depend>

View File

@ -19,7 +19,7 @@ set -o verbose
git clone https://github.com/abseil/abseil-cpp.git git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp cd abseil-cpp
git checkout 215105818dfde3174fe799600bb0f3cae233d0bf # 20211102.0 git checkout d902eb869bcfacc1bad14933ed9af4bed006d481
mkdir build mkdir build
cd build cd build
cmake -G Ninja \ cmake -G Ninja \

31
scripts/install_ceres.sh Executable file
View File

@ -0,0 +1,31 @@
#!/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="1.13.0"
# Build and install Ceres.
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout tags/${VERSION}
mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

View File

@ -27,7 +27,6 @@ sudo apt-get install -y \
google-mock \ google-mock \
libboost-all-dev \ libboost-all-dev \
libcairo2-dev \ libcairo2-dev \
libceres-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libeigen3-dev \ libeigen3-dev \
libgflags-dev \ libgflags-dev \
@ -36,16 +35,19 @@ sudo apt-get install -y \
libsuitesparse-dev \ libsuitesparse-dev \
lsb-release \ lsb-release \
ninja-build \ ninja-build \
python3-sphinx \
stow stow
# Install Protocol Buffers and Abseil if available. # Install Ceres Solver and Protocol Buffers support if available.
# No need to build it ourselves. # No need to build it ourselves.
case "$(lsb_release -sc)" in if [[ "$(lsb_release -sc)" = "focal" || "$(lsb_release -sc)" = "buster" ]]
jammy|bullseye) then
sudo apt-get install -y libgmock-dev protobuf-compiler libabsl-dev ;; sudo apt-get install -y python3-sphinx libgmock-dev libceres-dev protobuf-compiler
focal|buster) else
sudo apt-get install -y libgmock-dev protobuf-compiler ;; sudo apt-get install -y python-sphinx
bionic) if [[ "$(lsb_release -sc)" = "bionic" ]]
;; then
esac sudo apt-get install -y libceres-dev
fi
fi