├── .gitignore
├── AUTHORS
├── cartographer_magazino.rosinstall
├── scripts
├── check_access_token.sh
├── catkin_test_results.sh
├── ros_entrypoint.sh
├── prepare_catkin_workspace.sh
├── install_debs.sh
├── load_docker_cache.sh
├── save_docker_cache.sh
└── install.sh
├── cartographer_toru
├── configuration_files
│ ├── highres.lua
│ ├── mapping.lua
│ ├── imu.lua
│ ├── toru_compile.lua
│ ├── toru.lua
│ ├── toru_localization.lua
│ ├── toru_simulation.lua
│ ├── assets_writer_toru.lua
│ ├── localization.lua
│ ├── toru_base.lua
│ ├── demo_light.rviz
│ └── demo.rviz
├── launch
│ ├── demo_toru_simulation.launch
│ ├── assets_writer_toru.launch
│ ├── toru.launch
│ ├── toru_simulation.launch
│ ├── offline_toru_2d.launch
│ └── demo_toru_localization.launch
├── package.xml
├── cartographer_toru
│ └── configuration_files_test.cc
└── CMakeLists.txt
├── .travis.yml
├── Dockerfile.indigo
├── Dockerfile.kinetic
├── README.rst
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 |
3 | .vscode/
4 |
--------------------------------------------------------------------------------
/AUTHORS:
--------------------------------------------------------------------------------
1 | # This is the list of Cartographer authors for copyright purposes.
2 | #
3 | # This does not necessarily list everyone who has contributed code, since in
4 | # some cases, their employer may be the copyright holder. To see the full list
5 | # of contributors, see the revision history in source control.
6 | Google Inc.
7 | Magazino GmbH
8 |
--------------------------------------------------------------------------------
/cartographer_magazino.rosinstall:
--------------------------------------------------------------------------------
1 | - git: {local-name: cartographer, uri: 'https://github.com/googlecartographer/cartographer.git'}
2 | - git: {local-name: cartographer_ros, uri: 'https://github.com/googlecartographer/cartographer_ros.git'}
3 | - git: {local-name: cartographer_magazino, uri: 'https://github.com/magazino/cartographer_magazino.git'}
4 | - git: {local-name: ceres-solver, uri: 'https://ceres-solver.googlesource.com/ceres-solver.git', version: '1.12.0'}
5 |
--------------------------------------------------------------------------------
/scripts/check_access_token.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Usage: ./check_access_token.sh ACCESS_TOKEN
4 | # Returns non-zero exit code if ACCESS_TOKEN is invalid.
5 |
6 | if [ "$#" -ne 1 ]; then
7 | echo "Please provide an access token to $0" 1>&2
8 | exit 1
9 | fi
10 | token=$1
11 |
12 | set -e
13 | function on_error {
14 | echo "Failed to validate GitHub access token!" 1>&2
15 | exit 1
16 | }
17 | trap on_error ERR
18 |
19 | test_response=$(curl -s https://api.github.com/?access_token=${token})
20 |
21 | echo $test_response | grep -ivq "bad credentials"
22 | echo $"GitHub access token is valid."
23 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/highres.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.025
16 | TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.min_num_points = 400
17 |
--------------------------------------------------------------------------------
/scripts/catkin_test_results.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -o errexit
18 | set -o verbose
19 |
20 | . /opt/ros/${ROS_DISTRO}/setup.sh
21 | . /opt/cartographer_ros/setup.sh
22 |
23 | cd catkin_ws
24 |
25 | catkin_test_results $@
26 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/mapping.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | POSE_GRAPH.constraint_builder.max_constraint_distance = 1.5
16 | POSE_GRAPH.constraint_builder.sampling_ratio = 0.5
17 | POSE_GRAPH.global_sampling_ratio = 0.2
18 | POSE_GRAPH.optimize_every_n_nodes = 50
19 |
--------------------------------------------------------------------------------
/scripts/ros_entrypoint.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | # 2018 Magazino GmbH
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 |
18 | set -o errexit
19 | set -o verbose
20 |
21 | source "/opt/ros/${ROS_DISTRO}/setup.bash"
22 | source "/opt/cartographer_ros/setup.bash"
23 | source "/opt/cartographer_magazino/setup.bash"
24 | exec "$@"
25 |
--------------------------------------------------------------------------------
/scripts/prepare_catkin_workspace.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | # 2018 Magazino GmbH
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 |
18 | set -o errexit
19 | set -o verbose
20 |
21 | . /opt/ros/${ROS_DISTRO}/setup.sh
22 |
23 | # Create a new workspace in 'catkin_ws'.
24 | mkdir catkin_ws
25 | cd catkin_ws
26 | wstool init src
27 | ln -s /cartographer_magazino src/
28 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/imu.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | options.provide_odom_frame = true
16 | options.published_frame = "base_footprint"
17 |
18 | TRAJECTORY_BUILDER_2D.use_imu_data = true
19 | TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = false
20 | TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(1.)
21 |
--------------------------------------------------------------------------------
/scripts/install_debs.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | set -o errexit
18 | set -o verbose
19 |
20 | . /opt/ros/${ROS_DISTRO}/setup.sh
21 | . /opt/cartographer_ros/setup.sh
22 |
23 | cd catkin_ws
24 |
25 | apt-get update
26 |
27 | # Install rosdep dependencies.
28 | rosdep update
29 | rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
30 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/toru_compile.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | if toru.use_imu then
16 | include "imu.lua"
17 | end
18 |
19 | if toru.use_3d then
20 | include "3d.lua"
21 | end
22 |
23 | if toru.highres then
24 | include "highres.lua"
25 | end
26 |
27 | if toru.localization then
28 | include "localization.lua"
29 | else
30 | include "mapping.lua"
31 | end
32 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/toru.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | include "map_builder.lua"
16 | include "trajectory_builder.lua"
17 |
18 | include "toru_base.lua"
19 |
20 | toru = {
21 | use_3d = false, -- Currently not supported in public integrations.
22 | use_imu = true,
23 | localization = false,
24 | highres = true,
25 | }
26 | include "toru_compile.lua"
27 |
28 | return options
29 |
--------------------------------------------------------------------------------
/scripts/load_docker_cache.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | # Cache intermediate Docker layers. For a description of how this works, see:
18 | # https://giorgos.sealabs.net/docker-cache-on-travis-and-docker-112.html
19 |
20 | set -o errexit
21 | set -o verbose
22 | set -o pipefail
23 |
24 | if [ -f ${DOCKER_CACHE_FILE} ]; then
25 | gunzip -c ${DOCKER_CACHE_FILE} | docker load;
26 | fi
27 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/toru_localization.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | include "map_builder.lua"
16 | include "trajectory_builder.lua"
17 |
18 | include "toru_base.lua"
19 |
20 | toru = {
21 | use_3d = false, -- Currently not supported in public integrations.
22 | use_imu = true,
23 | localization = true,
24 | highres = true,
25 | }
26 | include "toru_compile.lua"
27 |
28 | return options
29 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/toru_simulation.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | include "map_builder.lua"
16 | include "trajectory_builder.lua"
17 |
18 | include "toru_base.lua"
19 |
20 | toru = {
21 | use_3d = false, -- Currently not supported in public integrations.
22 | use_imu = true,
23 | localization = false,
24 | highres = true,
25 | }
26 | include "toru_compile.lua"
27 |
28 | return options
29 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/demo_toru_simulation.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
26 |
27 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/assets_writer_toru.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/assets_writer_toru.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | options = {
16 | tracking_frame = "base_footprint",
17 | pipeline = {
18 | {
19 | action = "min_max_range_filter",
20 | min_range = 0.3,
21 | max_range = 5.,
22 | },
23 |
24 | {
25 | action = "dump_num_points",
26 | },
27 |
28 | -- The points in the PLY can be visualized using
29 | -- https://github.com/googlecartographer/point_cloud_viewer.
30 | {
31 | action = "write_ply",
32 | filename = "points.ply",
33 | }
34 |
35 | }
36 | }
37 |
38 | return options
39 |
--------------------------------------------------------------------------------
/scripts/save_docker_cache.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | # 2018 Magazino GmbH
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 |
18 | # Cache intermediate Docker layers. For a description of how this works, see:
19 | # https://giorgos.sealabs.net/docker-cache-on-travis-and-docker-112.html
20 |
21 | set -o errexit
22 | set -o verbose
23 | set -o pipefail
24 |
25 | if [[ ${TRAVIS_BRANCH} == "master" ]] &&
26 | [[ ${TRAVIS_PULL_REQUEST} == "false" ]]; then
27 | mkdir -p $(dirname ${DOCKER_CACHE_FILE});
28 | IMAGE_NAMES=$(docker history -q cartographer_magazino:${ROS_RELEASE} | grep -v '')
29 | docker save ${IMAGE_NAMES} | gzip > ${DOCKER_CACHE_FILE}.new
30 | mv ${DOCKER_CACHE_FILE}.new ${DOCKER_CACHE_FILE}
31 | fi
32 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/toru.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/toru_simulation.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
25 |
26 |
27 |
28 |
29 |
30 |
32 |
33 |
--------------------------------------------------------------------------------
/scripts/install.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Copyright 2016 The Cartographer Authors
4 | # 2018 Magazino GmbH
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # http://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 |
18 | set -o errexit
19 | set -o verbose
20 |
21 | . /opt/ros/${ROS_DISTRO}/setup.sh
22 | . /opt/cartographer_ros/setup.sh
23 |
24 | cd catkin_ws
25 |
26 | # Build, install, and test.
27 | #
28 | # It's necessary to use the '--install' flag for every call to
29 | # 'catkin_make_isolated' in order to avoid the use of 'devel_isolated' as the
30 | # 'CMAKE_INSTALL_PREFIX' for non-test targets. This in itself is important to
31 | # avoid any issues caused by using 'CMAKE_INSTALL_PREFIX' during the
32 | # configuration phase of the build (e.g. cartographer/common/config.h.cmake).
33 | export BUILD_FLAGS="--use-ninja --install-space /opt/cartographer_magazino --install"
34 | catkin_make_isolated ${BUILD_FLAGS} $@
35 |
--------------------------------------------------------------------------------
/cartographer_toru/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 | cartographer_toru
21 | 0.1.1
22 |
23 | Cartographer configurations and launch files for Magazino TORU robots.
24 |
25 |
26 | Michael Grupp
27 |
28 | Apache 2.0
29 |
30 | https://github.com/magazino
31 |
32 | catkin
33 |
34 | g++-static
35 |
36 | cartographer_ros
37 | message_runtime
38 | roscpp
39 | roslib
40 |
41 | rosunit
42 |
43 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/localization.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | TRAJECTORY_BUILDER.pure_localization_trimmer = {
16 | max_submaps_to_keep = 3,
17 | }
18 |
19 | TRAJECTORY_BUILDER_2D.max_range = 8.
20 | TRAJECTORY_BUILDER_2D.missing_data_ray_length = 5.
21 | TRAJECTORY_BUILDER_2D.submaps.num_range_data =
22 | 2 * TRAJECTORY_BUILDER_2D.submaps.num_range_data
23 |
24 | POSE_GRAPH.global_sampling_ratio = .005
25 | POSE_GRAPH.optimize_every_n_nodes = 2
26 | POSE_GRAPH.global_constraint_search_after_n_seconds = 60
27 |
28 | POSE_GRAPH.constraint_builder.min_score = .4
29 | POSE_GRAPH.constraint_builder.global_localization_min_score = .35
30 | POSE_GRAPH.constraint_builder.max_constraint_distance = 2.
31 | POSE_GRAPH.constraint_builder.sampling_ratio = 0.2
32 |
33 | POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.linear_search_window = 0.3
34 | POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.angular_search_window = math.rad(5.0)
35 |
--------------------------------------------------------------------------------
/cartographer_toru/cartographer_toru/configuration_files_test.cc:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2016 The Cartographer Authors
3 | * 2018 Magazino GmbH
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | #include
19 | #include
20 |
21 | #include "cartographer_ros/node_options.h"
22 | #include "gtest/gtest.h"
23 | #include "ros/package.h"
24 |
25 | namespace cartographer_ros {
26 | namespace {
27 |
28 | class ConfigurationFilesTest : public ::testing::TestWithParam {};
29 |
30 | TEST_P(ConfigurationFilesTest, ValidateNodeOptions) {
31 | EXPECT_NO_FATAL_FAILURE({
32 | LoadOptions(
33 | ::ros::package::getPath("cartographer_toru") + "/configuration_files",
34 | GetParam());
35 | });
36 | }
37 |
38 | INSTANTIATE_TEST_CASE_P(ValidateAllNodeOptions, ConfigurationFilesTest,
39 | ::testing::Values("toru.lua",
40 | "toru_simulation.lua",
41 | "toru_localization.lua"));
42 |
43 | } // namespace
44 | } // namespace cartographer_ros
45 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/offline_toru_2d.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
26 |
27 |
28 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | # Copyright 2016 The Cartographer Authors
2 | # 2018 Magazino GmbH
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | sudo: required
17 | services: docker
18 |
19 | # Cache intermediate Docker layers. For a description of how this works, see:
20 | # https://giorgos.sealabs.net/docker-cache-on-travis-and-docker-112.html
21 | cache:
22 | directories:
23 | - /home/travis/docker/
24 |
25 | env:
26 | - ROS_RELEASE=indigo DOCKER_CACHE_FILE=/home/travis/docker/indigo-cache.tar.gz
27 | - ROS_RELEASE=kinetic DOCKER_CACHE_FILE=/home/travis/docker/kinetic-cache.tar.gz
28 |
29 | before_install:
30 | - scripts/check_access_token.sh $GITHUB_TOKEN
31 | - scripts/load_docker_cache.sh
32 |
33 | install: true
34 | script:
35 | - git clone https://github.com/googlecartographer/cartographer_ros.git
36 | - docker build cartographer_ros -t cartographer_ros:${ROS_RELEASE} -f cartographer_ros/Dockerfile.${ROS_RELEASE} --build-arg github_token=${GITHUB_TOKEN}
37 | - rm -rf cartographer_ros
38 | - docker build ${TRAVIS_BUILD_DIR} -t cartographer_magazino:${ROS_RELEASE} -f Dockerfile.${ROS_RELEASE} --build-arg github_token=${GITHUB_TOKEN}
39 | - scripts/save_docker_cache.sh
40 |
--------------------------------------------------------------------------------
/Dockerfile.indigo:
--------------------------------------------------------------------------------
1 | # Copyright 2016 The Cartographer Authors
2 | # 2018 Magazino GmbH
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | FROM cartographer_ros:indigo
17 |
18 | # We require a GitHub access token to be passed.
19 | ARG github_token
20 |
21 | # First, we invalidate the entire cache if googlecartographer/cartographer_ros has
22 | # changed. This file's content changes whenever master changes. See:
23 | # http://stackoverflow.com/questions/36996046/how-to-prevent-dockerfile-caching-git-clone
24 | ADD https://api.github.com/repos/googlecartographer/cartographer_ros/git/refs/heads/master?access_token=$github_token \
25 | cartographer_magazino/cartographer_ros_version.json
26 |
27 | COPY . cartographer_magazino
28 |
29 | # Build TORU's package.
30 | RUN cartographer_magazino/scripts/prepare_catkin_workspace.sh
31 | RUN cartographer_magazino/scripts/install_debs.sh && rm -rf /var/lib/apt/lists/*
32 | RUN cartographer_magazino/scripts/install.sh --pkg cartographer_toru && \
33 | cartographer_magazino/scripts/install.sh --pkg cartographer_toru \
34 | --catkin-make-args run_tests && \
35 | cartographer_magazino/scripts/catkin_test_results.sh build_isolated/cartographer_toru
36 |
37 | COPY scripts/ros_entrypoint.sh /
38 | # A BTRFS bug may prevent us from cleaning up these directories.
39 | # https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
40 | RUN rm -rf cartographer_magazino catkin_ws || true
41 |
--------------------------------------------------------------------------------
/Dockerfile.kinetic:
--------------------------------------------------------------------------------
1 | # Copyright 2016 The Cartographer Authors
2 | # 2018 Magazino GmbH
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | FROM cartographer_ros:kinetic
17 |
18 | # We require a GitHub access token to be passed.
19 | ARG github_token
20 |
21 | # First, we invalidate the entire cache if googlecartographer/cartographer_ros has
22 | # changed. This file's content changes whenever master changes. See:
23 | # http://stackoverflow.com/questions/36996046/how-to-prevent-dockerfile-caching-git-clone
24 | ADD https://api.github.com/repos/googlecartographer/cartographer_ros/git/refs/heads/master?access_token=$github_token \
25 | cartographer_magazino/cartographer_ros_version.json
26 |
27 | COPY . cartographer_magazino
28 |
29 | # Install TORU's package.
30 | RUN cartographer_magazino/scripts/prepare_catkin_workspace.sh
31 | RUN cartographer_magazino/scripts/install_debs.sh && rm -rf /var/lib/apt/lists/*
32 | RUN cartographer_magazino/scripts/install.sh --pkg cartographer_toru && \
33 | cartographer_magazino/scripts/install.sh --pkg cartographer_toru \
34 | --catkin-make-args run_tests && \
35 | cartographer_magazino/scripts/catkin_test_results.sh build_isolated/cartographer_toru
36 |
37 | COPY scripts/ros_entrypoint.sh /
38 | # A BTRFS bug may prevent us from cleaning up these directories.
39 | # https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory
40 | RUN rm -rf cartographer_magazino catkin_ws || true
41 |
--------------------------------------------------------------------------------
/cartographer_toru/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | # Copyright 2016 The Cartographer Authors
2 | # 2018 Magazino GmbH
3 | #
4 | # Licensed under the Apache License, Version 2.0 (the "License");
5 | # you may not use this file except in compliance with the License.
6 | # You may obtain a copy of the License at
7 | #
8 | # http://www.apache.org/licenses/LICENSE-2.0
9 | #
10 | # Unless required by applicable law or agreed to in writing, software
11 | # distributed under the License is distributed on an "AS IS" BASIS,
12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | # See the License for the specific language governing permissions and
14 | # limitations under the License.
15 |
16 | cmake_minimum_required(VERSION 2.8.12) # Ships with Ubuntu 14.04 (Trusty)
17 |
18 | project(cartographer_toru)
19 |
20 | set(PACKAGE_DEPENDENCIES
21 | cartographer_ros
22 | roscpp
23 | roslib
24 | )
25 |
26 | find_package(cartographer REQUIRED)
27 | include("${CARTOGRAPHER_CMAKE_DIR}/functions.cmake")
28 | google_initialize_cartographer_project()
29 | google_enable_testing()
30 |
31 | find_package(LuaGoogle REQUIRED)
32 |
33 | find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES})
34 |
35 | # Override Catkin's GTest configuration to use GMock.
36 | set(GTEST_FOUND TRUE)
37 | set(GTEST_INCLUDE_DIRS ${GMOCK_INCLUDE_DIRS})
38 | set(GTEST_LIBRARIES ${GMOCK_LIBRARIES})
39 |
40 | catkin_package(CATKIN_DEPENDS message_runtime ${PACKAGE_DEPENDENCIES})
41 |
42 | if (CATKIN_ENABLE_TESTING)
43 | catkin_add_gtest(configuration_files_test "cartographer_toru/configuration_files_test.cc")
44 | # catkin_add_gtest uses a plain (i.e. no PUBLIC/PRIVATE/INTERFACE) call to
45 | # target_link_libraries. That forces us to do the same.
46 | target_include_directories(configuration_files_test SYSTEM PUBLIC ${LUA_INCLUDE_DIR})
47 | target_link_libraries(configuration_files_test ${LUA_LIBRARIES})
48 | target_include_directories(configuration_files_test SYSTEM PUBLIC ${catkin_INCLUDE_DIRS})
49 | target_link_libraries(configuration_files_test ${catkin_LIBRARIES})
50 | add_dependencies(configuration_files_test ${catkin_EXPORTED_TARGETS})
51 | target_link_libraries(configuration_files_test cartographer)
52 | set(TARGET_COMPILE_FLAGS "${TARGET_COMPILE_FLAGS} ${GOOG_CXX_FLAGS}")
53 | set_target_properties(configuration_files_test PROPERTIES COMPILE_FLAGS ${TARGET_COMPILE_FLAGS})
54 | endif()
55 |
56 | install(DIRECTORY launch configuration_files
57 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
58 | )
59 |
--------------------------------------------------------------------------------
/cartographer_toru/launch/demo_toru_localization.launch:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
38 |
40 |
41 |
42 |
43 |
45 |
50 |
51 |
52 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/toru_base.lua:
--------------------------------------------------------------------------------
1 | -- Copyright 2018 Magazino GmbH
2 | --
3 | -- Licensed under the Apache License, Version 2.0 (the "License");
4 | -- you may not use this file except in compliance with the License.
5 | -- You may obtain a copy of the License at
6 | --
7 | -- http://www.apache.org/licenses/LICENSE-2.0
8 | --
9 | -- Unless required by applicable law or agreed to in writing, software
10 | -- distributed under the License is distributed on an "AS IS" BASIS,
11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | -- See the License for the specific language governing permissions and
13 | -- limitations under the License.
14 |
15 | options = {
16 | map_builder = MAP_BUILDER,
17 | trajectory_builder = TRAJECTORY_BUILDER,
18 | map_frame = "map",
19 | tracking_frame = "base_footprint",
20 | published_frame = "odom",
21 | odom_frame = "odom",
22 | provide_odom_frame = false,
23 | publish_frame_projected_to_2d = true,
24 | use_odometry = true,
25 | use_nav_sat = false,
26 | use_landmarks = false,
27 | num_laser_scans = 2,
28 | num_multi_echo_laser_scans = 0,
29 | num_subdivisions_per_laser_scan = 16,
30 | num_point_clouds = 0,
31 | lookup_transform_timeout_sec = 0.2,
32 | submap_publish_period_sec = 0.3,
33 | pose_publish_period_sec = 5e-3,
34 | trajectory_publish_period_sec = 0.1,
35 | rangefinder_sampling_ratio = 1.,
36 | odometry_sampling_ratio = 1.,
37 | fixed_frame_pose_sampling_ratio = 1.,
38 | imu_sampling_ratio = .5,
39 | landmarks_sampling_ratio = 1.,
40 | }
41 |
42 | MAP_BUILDER.use_trajectory_builder_2d = true
43 | MAP_BUILDER.num_background_threads = 4
44 | TRAJECTORY_BUILDER_2D.use_imu_data = false
45 |
46 | TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.05
47 | TRAJECTORY_BUILDER_2D.submaps.num_range_data =
48 | 1.0 * TRAJECTORY_BUILDER_2D.submaps.num_range_data
49 | TRAJECTORY_BUILDER_2D.max_range = 8.
50 | TRAJECTORY_BUILDER_2D.missing_data_ray_length = 5.
51 |
52 | TRAJECTORY_BUILDER_2D.motion_filter.max_time_seconds = 60
53 | TRAJECTORY_BUILDER_2D.motion_filter.max_distance_meters = 0.05
54 | TRAJECTORY_BUILDER_2D.num_accumulated_range_data =
55 | options.num_laser_scans * options.num_subdivisions_per_laser_scan
56 |
57 | TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
58 | TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = .05
59 | TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.angular_search_window = math.rad(4.)
60 |
61 | TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 15
62 | TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 0.5
63 |
64 | POSE_GRAPH.optimization_problem.huber_scale = 5
65 | POSE_GRAPH.constraint_builder.min_score = .6
66 |
67 | POSE_GRAPH.optimization_problem.local_slam_pose_translation_weight = 1e5
68 | POSE_GRAPH.optimization_problem.local_slam_pose_rotation_weight = 1e4
69 | POSE_GRAPH.optimization_problem.odometry_translation_weight = 1e5
70 | POSE_GRAPH.optimization_problem.odometry_rotation_weight = 1e1
71 |
--------------------------------------------------------------------------------
/README.rst:
--------------------------------------------------------------------------------
1 | .. Copyright 2016 The Cartographer Authors
2 | 2018 Magazino GmbH
3 |
4 | .. Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | .. http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | .. Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 |
16 | ================================================
17 | Cartographer ROS for Magazino Robotics Platforms
18 | ================================================
19 |
20 | |build| |license|
21 |
22 | Purpose
23 | =======
24 |
25 | `Cartographer`_ is a system that provides real-time simultaneous localization
26 | and mapping (`SLAM`_) in 2D and 3D across multiple platforms and sensor
27 | configurations. This repository provides Cartographer SLAM for `Magazino
28 | Robotics`_ platforms via `Cartographer ROS`_. This is a simplified integration
29 | for testing and evaluation purposes only.
30 |
31 | .. _Cartographer: https://github.com/googlecartographer/cartographer
32 | .. _Cartographer ROS: https://github.com/googlecartographer/cartographer_ros
33 | .. _SLAM: https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping
34 | .. _Magazino Robotics: https://www.magazino.eu/?lang=en
35 |
36 | Documentation
37 | =============
38 |
39 | Dependencies
40 | ------------
41 |
42 | We keep the master branch of this repository compatible with the latest
43 | revision of the `cartographer_ros`_ repository.
44 |
45 | Release versions of this repository can be found here: `Releases`_.
46 | They are tagged according to the version number of the matching release version
47 | of ``cartographer_ros``.
48 |
49 | .. _cartographer_ros: https://github.com/googlecartographer/cartographer_ros
50 | .. _Releases: https://github.com/magazino/cartographer_magazino/releases
51 |
52 | Data
53 | ----
54 |
55 | We currently support bagfiles recorded on Magazino TORU robots. Support for
56 | other platforms like SOTO may be added in the future.
57 |
58 | Download links for the public datasets of Magazino robots can be found on the
59 | `Cartographer ROS Read the Docs site`_.
60 |
61 | .. _Cartographer ROS Read the Docs site: https://google-cartographer-ros.readthedocs.io/en/latest/data.html#magazino
62 |
63 |
64 | TORU
65 | ====
66 |
67 | We provide two sample datasets for mapping and localization that were
68 | recorded in a hallway.
69 |
70 | Run the simulation demo (mapping) with the hallway dataset:
71 |
72 | .. code-block:: bash
73 |
74 | cd data # (where you stored the bagfiles)
75 | roslaunch cartographer_toru demo_toru_simulation.launch bag_filename:=$(pwd)/hallway_return.bag playback_rate:=2
76 |
77 | Use the ``write_state`` ROS service to serialize the state to a ``.pbstream`` file:
78 |
79 | .. code-block:: bash
80 |
81 | rosservice call /write_state "{filename: '$PWD/hallway_return.bag.pbstream', include_unfinished_submaps: true}"
82 |
83 | If realistic timing is not critical, you can also use the faster offline node:
84 |
85 | .. code-block:: bash
86 |
87 | roslaunch cartographer_toru offline_toru_2d.launch bag_filenames:=$(pwd)/hallway_return.bag
88 |
89 | Run the localization demo:
90 |
91 | .. code-block:: bash
92 |
93 | roslaunch cartographer_toru demo_toru_localization.launch load_state_filename:=$(pwd)/hallway_return.bag.pbstream bag_filename:=$(pwd)/hallway_localization.bag
94 |
95 | .. |build| image:: https://travis-ci.org/magazino/cartographer_magazino.svg?branch=master
96 | :target: https://travis-ci.org/magazino/cartographer_magazino
97 | .. |license| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
98 | :alt: Apache 2 license.
99 | :scale: 100%
100 | :target: https://github.com/magazino/cartographer_magazino/blob/master/LICENSE
101 |
102 | About Magazino
103 | ==============
104 |
105 | Magazino is a robotics start-up based in Munich, Germany.
106 | We develop and build perception-controlled, mobile robots for intralogistics.
107 | `We are hiring`_!
108 |
109 | A video of TORU robots in action at one of our German customers:
110 |
111 | .. raw:: html
112 |
113 |
121 |
122 | .. _We are hiring: https://www.magazino.eu/jobs-2/?lang=en
123 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/demo_light.rviz:
--------------------------------------------------------------------------------
1 | Panels:
2 | - Class: rviz/Displays
3 | Help Height: 78
4 | Name: Displays
5 | Property Tree Widget:
6 | Expanded:
7 | - /MarkerArray2/Namespaces1
8 | Splitter Ratio: 0.600670993
9 | Tree Height: 775
10 | - Class: rviz/Selection
11 | Name: Selection
12 | - Class: rviz/Tool Properties
13 | Expanded:
14 | - /2D Pose Estimate1
15 | - /2D Nav Goal1
16 | - /Publish Point1
17 | Name: Tool Properties
18 | Splitter Ratio: 0.588679016
19 | - Class: rviz/Views
20 | Expanded:
21 | - /Current View1
22 | Name: Views
23 | Splitter Ratio: 0.5
24 | - Class: rviz/Time
25 | Experimental: false
26 | Name: Time
27 | SyncMode: 0
28 | SyncSource: PointCloud2
29 | Visualization Manager:
30 | Class: ""
31 | Displays:
32 | - Alpha: 0.5
33 | Cell Size: 1
34 | Class: rviz/Grid
35 | Color: 160; 160; 164
36 | Enabled: false
37 | Line Style:
38 | Line Width: 0.0299999993
39 | Value: Lines
40 | Name: Grid
41 | Normal Cell Count: 0
42 | Offset:
43 | X: 0
44 | Y: 0
45 | Z: 0
46 | Plane: XY
47 | Plane Cell Count: 100
48 | Reference Frame:
49 | Value: false
50 | - Class: rviz/TF
51 | Enabled: true
52 | Frame Timeout: 15
53 | Frames:
54 | All Enabled: true
55 | base_footprint:
56 | Value: true
57 | map:
58 | Value: true
59 | odom:
60 | Value: true
61 | Marker Scale: 1
62 | Name: TF
63 | Show Arrows: true
64 | Show Axes: true
65 | Show Names: true
66 | Tree:
67 | map:
68 | odom:
69 | base_footprint:
70 | {}
71 | Update Interval: 0
72 | Value: true
73 | - Alpha: 1
74 | Class: rviz/RobotModel
75 | Collision Enabled: false
76 | Enabled: true
77 | Links:
78 | All Links Enabled: true
79 | Expand Joint Details: false
80 | Expand Link Details: false
81 | Expand Tree: false
82 | Link Tree Style: Links in Alphabetic Order
83 | Name: RobotModel
84 | Robot Description: robot_description
85 | TF Prefix: ""
86 | Update Interval: 0
87 | Value: true
88 | Visual Enabled: true
89 | - Class: Submaps
90 | Enabled: false
91 | Fade-out distance: 1
92 | High Resolution: true
93 | Low Resolution: false
94 | Name: Submaps
95 | Submap query service: /submap_query
96 | Submaps:
97 | All: true
98 | Topic: /submap_list
99 | Tracking frame: base_link
100 | Unreliable: false
101 | Value: false
102 | - Alpha: 1
103 | Autocompute Intensity Bounds: true
104 | Autocompute Value Bounds:
105 | Max Value: 10
106 | Min Value: -10
107 | Value: true
108 | Axis: Z
109 | Channel Name: intensity
110 | Class: rviz/PointCloud2
111 | Color: 0; 255; 0
112 | Color Transformer: FlatColor
113 | Decay Time: 0
114 | Enabled: true
115 | Invert Rainbow: false
116 | Max Color: 255; 255; 255
117 | Max Intensity: 4096
118 | Min Color: 0; 0; 0
119 | Min Intensity: 0
120 | Name: PointCloud2
121 | Position Transformer: XYZ
122 | Queue Size: 10
123 | Selectable: true
124 | Size (Pixels): 3
125 | Size (m): 0.0500000007
126 | Style: Flat Squares
127 | Topic: /scan_matched_points2
128 | Unreliable: false
129 | Use Fixed Frame: true
130 | Use rainbow: true
131 | Value: true
132 | - Class: rviz/MarkerArray
133 | Enabled: false
134 | Marker Topic: /trajectory_node_list
135 | Name: MarkerArray
136 | Namespaces:
137 | {}
138 | Queue Size: 100
139 | Value: false
140 | - Class: rviz/MarkerArray
141 | Enabled: true
142 | Marker Topic: /constraint_list
143 | Name: MarkerArray
144 | Namespaces:
145 | Inter constraints, different trajectories: true
146 | Inter constraints, same trajectory: true
147 | Inter residuals, different trajectories: true
148 | Inter residuals, same trajectory: true
149 | Intra constraints: true
150 | Intra residuals: true
151 | Queue Size: 100
152 | Value: true
153 | - Alpha: 0.699999988
154 | Class: rviz/Map
155 | Color Scheme: map
156 | Draw Behind: false
157 | Enabled: true
158 | Name: Map
159 | Topic: /map
160 | Unreliable: false
161 | Use Timestamp: false
162 | Value: true
163 | Enabled: true
164 | Global Options:
165 | Background Color: 100; 100; 100
166 | Default Light: true
167 | Fixed Frame: map
168 | Frame Rate: 30
169 | Name: root
170 | Tools:
171 | - Class: rviz/Interact
172 | Hide Inactive Objects: true
173 | - Class: rviz/MoveCamera
174 | - Class: rviz/Select
175 | - Class: rviz/FocusCamera
176 | - Class: rviz/Measure
177 | - Class: rviz/SetInitialPose
178 | Topic: /initialpose
179 | - Class: rviz/SetGoal
180 | Topic: /move_base_simple/goal
181 | - Class: rviz/PublishPoint
182 | Single click: true
183 | Topic: /clicked_point
184 | Value: true
185 | Views:
186 | Current:
187 | Angle: 0
188 | Class: rviz/TopDownOrtho
189 | Enable Stereo Rendering:
190 | Stereo Eye Separation: 0.0599999987
191 | Stereo Focal Distance: 1
192 | Swap Stereo Eyes: false
193 | Value: false
194 | Invert Z Axis: false
195 | Name: Current View
196 | Near Clip Distance: 0.00999999978
197 | Scale: 100
198 | Target Frame: base_footprint
199 | Value: TopDownOrtho (rviz)
200 | X: 0
201 | Y: 0
202 | Saved: ~
203 | Window Geometry:
204 | Displays:
205 | collapsed: false
206 | Height: 1056
207 | Hide Left Dock: false
208 | Hide Right Dock: false
209 | QMainWindow State: 000000ff00000000fd00000004000000000000016a00000396fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000396000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000396000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007470000003efc0100000002fb0000000800540069006d00650100000000000007470000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004c20000039600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
210 | Selection:
211 | collapsed: false
212 | Time:
213 | collapsed: false
214 | Tool Properties:
215 | collapsed: false
216 | Views:
217 | collapsed: false
218 | Width: 1863
219 | X: 57
220 | Y: 24
221 |
--------------------------------------------------------------------------------
/cartographer_toru/configuration_files/demo.rviz:
--------------------------------------------------------------------------------
1 | Panels:
2 | - Class: rviz/Displays
3 | Help Height: 78
4 | Name: Displays
5 | Property Tree Widget:
6 | Expanded:
7 | - /MarkerArray2/Namespaces1
8 | Splitter Ratio: 0.600670993
9 | Tree Height: 775
10 | - Class: rviz/Selection
11 | Name: Selection
12 | - Class: rviz/Tool Properties
13 | Expanded:
14 | - /2D Pose Estimate1
15 | - /2D Nav Goal1
16 | - /Publish Point1
17 | Name: Tool Properties
18 | Splitter Ratio: 0.588679016
19 | - Class: rviz/Views
20 | Expanded:
21 | - /Current View1
22 | Name: Views
23 | Splitter Ratio: 0.5
24 | - Class: rviz/Time
25 | Experimental: false
26 | Name: Time
27 | SyncMode: 0
28 | SyncSource: PointCloud2
29 | Visualization Manager:
30 | Class: ""
31 | Displays:
32 | - Alpha: 0.5
33 | Cell Size: 1
34 | Class: rviz/Grid
35 | Color: 160; 160; 164
36 | Enabled: false
37 | Line Style:
38 | Line Width: 0.0299999993
39 | Value: Lines
40 | Name: Grid
41 | Normal Cell Count: 0
42 | Offset:
43 | X: 0
44 | Y: 0
45 | Z: 0
46 | Plane: XY
47 | Plane Cell Count: 100
48 | Reference Frame:
49 | Value: false
50 | - Class: rviz/TF
51 | Enabled: true
52 | Frame Timeout: 15
53 | Frames:
54 | All Enabled: true
55 | base_footprint:
56 | Value: true
57 | map:
58 | Value: true
59 | odom:
60 | Value: true
61 | Marker Scale: 1
62 | Name: TF
63 | Show Arrows: true
64 | Show Axes: true
65 | Show Names: true
66 | Tree:
67 | map:
68 | odom:
69 | base_footprint:
70 | {}
71 | Update Interval: 0
72 | Value: true
73 | - Alpha: 1
74 | Class: rviz/RobotModel
75 | Collision Enabled: false
76 | Enabled: true
77 | Links:
78 | All Links Enabled: true
79 | Expand Joint Details: false
80 | Expand Link Details: false
81 | Expand Tree: false
82 | Link Tree Style: Links in Alphabetic Order
83 | Name: RobotModel
84 | Robot Description: robot_description
85 | TF Prefix: ""
86 | Update Interval: 0
87 | Value: true
88 | Visual Enabled: true
89 | - Class: Submaps
90 | Enabled: true
91 | Fade-out distance: 1
92 | High Resolution: true
93 | Low Resolution: false
94 | Name: Submaps
95 | Submap query service: /submap_query
96 | Submaps:
97 | All: true
98 | Trajectory 0:
99 | 0.90: true
100 | 1.90: true
101 | 10.90: true
102 | 11.90: true
103 | 12.90: true
104 | 13.90: true
105 | 14.90: true
106 | 15.90: true
107 | 16.90: true
108 | 17.90: true
109 | 18.90: true
110 | 19.90: true
111 | 2.90: true
112 | 20.90: true
113 | 21.90: true
114 | 22.90: true
115 | 23.90: true
116 | 24.90: true
117 | 25.90: true
118 | 26.90: true
119 | 27.90: true
120 | 28.90: true
121 | 29.90: true
122 | 3.90: true
123 | 30.90: true
124 | 31.90: true
125 | 32.90: true
126 | 33.90: true
127 | 34.90: true
128 | 35.90: true
129 | 36.90: true
130 | 37.90: true
131 | 38.90: true
132 | 39.90: true
133 | 4.90: true
134 | 40.90: true
135 | 41.90: true
136 | 42.90: true
137 | 43.90: true
138 | 44.90: true
139 | 45.90: true
140 | 46.90: true
141 | 47.90: true
142 | 48.90: true
143 | 49.90: true
144 | 5.90: true
145 | 50.90: true
146 | 51.90: true
147 | 52.90: true
148 | 53.90: true
149 | 54.71: true
150 | 55.26: true
151 | 6.90: true
152 | 7.90: true
153 | 8.90: true
154 | 9.90: true
155 | Value: true
156 | Trajectory 1:
157 | 0.244: true
158 | 1.64: true
159 | Value: true
160 | Topic: /submap_list
161 | Tracking frame: base_link
162 | Unreliable: false
163 | Value: true
164 | - Alpha: 1
165 | Autocompute Intensity Bounds: true
166 | Autocompute Value Bounds:
167 | Max Value: 10
168 | Min Value: -10
169 | Value: true
170 | Axis: Z
171 | Channel Name: intensity
172 | Class: rviz/PointCloud2
173 | Color: 0; 255; 0
174 | Color Transformer: FlatColor
175 | Decay Time: 0
176 | Enabled: true
177 | Invert Rainbow: false
178 | Max Color: 255; 255; 255
179 | Max Intensity: 4096
180 | Min Color: 0; 0; 0
181 | Min Intensity: 0
182 | Name: PointCloud2
183 | Position Transformer: XYZ
184 | Queue Size: 10
185 | Selectable: true
186 | Size (Pixels): 3
187 | Size (m): 0.0500000007
188 | Style: Flat Squares
189 | Topic: /scan_matched_points2
190 | Unreliable: false
191 | Use Fixed Frame: true
192 | Use rainbow: true
193 | Value: true
194 | - Class: rviz/MarkerArray
195 | Enabled: true
196 | Marker Topic: /trajectory_node_list
197 | Name: MarkerArray
198 | Namespaces:
199 | Trajectory 0: true
200 | Trajectory 1: true
201 | Queue Size: 100
202 | Value: true
203 | - Class: rviz/MarkerArray
204 | Enabled: true
205 | Marker Topic: /constraint_list
206 | Name: MarkerArray
207 | Namespaces:
208 | Inter constraints, different trajectories: true
209 | Inter constraints, same trajectory: true
210 | Inter residuals, different trajectories: true
211 | Inter residuals, same trajectory: true
212 | Intra constraints: true
213 | Intra residuals: true
214 | Queue Size: 100
215 | Value: true
216 | Enabled: true
217 | Global Options:
218 | Background Color: 100; 100; 100
219 | Default Light: true
220 | Fixed Frame: map
221 | Frame Rate: 30
222 | Name: root
223 | Tools:
224 | - Class: rviz/Interact
225 | Hide Inactive Objects: true
226 | - Class: rviz/MoveCamera
227 | - Class: rviz/Select
228 | - Class: rviz/FocusCamera
229 | - Class: rviz/Measure
230 | - Class: rviz/SetInitialPose
231 | Topic: /initialpose
232 | - Class: rviz/SetGoal
233 | Topic: /move_base_simple/goal
234 | - Class: rviz/PublishPoint
235 | Single click: true
236 | Topic: /clicked_point
237 | Value: true
238 | Views:
239 | Current:
240 | Angle: 0
241 | Class: rviz/TopDownOrtho
242 | Enable Stereo Rendering:
243 | Stereo Eye Separation: 0.0599999987
244 | Stereo Focal Distance: 1
245 | Swap Stereo Eyes: false
246 | Value: false
247 | Invert Z Axis: false
248 | Name: Current View
249 | Near Clip Distance: 0.00999999978
250 | Scale: 100
251 | Target Frame: base_footprint
252 | Value: TopDownOrtho (rviz)
253 | X: 0
254 | Y: 0
255 | Saved: ~
256 | Window Geometry:
257 | Displays:
258 | collapsed: false
259 | Height: 1056
260 | Hide Left Dock: false
261 | Hide Right Dock: false
262 | QMainWindow State: 000000ff00000000fd00000004000000000000016a00000396fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000396000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000396000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007470000003efc0100000002fb0000000800540069006d00650100000000000007470000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004c20000039600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
263 | Selection:
264 | collapsed: false
265 | Time:
266 | collapsed: false
267 | Tool Properties:
268 | collapsed: false
269 | Views:
270 | collapsed: false
271 | Width: 1863
272 | X: 57
273 | Y: 24
274 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 |
2 | Apache License
3 | Version 2.0, January 2004
4 | http://www.apache.org/licenses/
5 |
6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7 |
8 | 1. Definitions.
9 |
10 | "License" shall mean the terms and conditions for use, reproduction,
11 | and distribution as defined by Sections 1 through 9 of this document.
12 |
13 | "Licensor" shall mean the copyright owner or entity authorized by
14 | the copyright owner that is granting the License.
15 |
16 | "Legal Entity" shall mean the union of the acting entity and all
17 | other entities that control, are controlled by, or are under common
18 | control with that entity. For the purposes of this definition,
19 | "control" means (i) the power, direct or indirect, to cause the
20 | direction or management of such entity, whether by contract or
21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
22 | outstanding shares, or (iii) beneficial ownership of such entity.
23 |
24 | "You" (or "Your") shall mean an individual or Legal Entity
25 | exercising permissions granted by this License.
26 |
27 | "Source" form shall mean the preferred form for making modifications,
28 | including but not limited to software source code, documentation
29 | source, and configuration files.
30 |
31 | "Object" form shall mean any form resulting from mechanical
32 | transformation or translation of a Source form, including but
33 | not limited to compiled object code, generated documentation,
34 | and conversions to other media types.
35 |
36 | "Work" shall mean the work of authorship, whether in Source or
37 | Object form, made available under the License, as indicated by a
38 | copyright notice that is included in or attached to the work
39 | (an example is provided in the Appendix below).
40 |
41 | "Derivative Works" shall mean any work, whether in Source or Object
42 | form, that is based on (or derived from) the Work and for which the
43 | editorial revisions, annotations, elaborations, or other modifications
44 | represent, as a whole, an original work of authorship. For the purposes
45 | of this License, Derivative Works shall not include works that remain
46 | separable from, or merely link (or bind by name) to the interfaces of,
47 | the Work and Derivative Works thereof.
48 |
49 | "Contribution" shall mean any work of authorship, including
50 | the original version of the Work and any modifications or additions
51 | to that Work or Derivative Works thereof, that is intentionally
52 | submitted to Licensor for inclusion in the Work by the copyright owner
53 | or by an individual or Legal Entity authorized to submit on behalf of
54 | the copyright owner. For the purposes of this definition, "submitted"
55 | means any form of electronic, verbal, or written communication sent
56 | to the Licensor or its representatives, including but not limited to
57 | communication on electronic mailing lists, source code control systems,
58 | and issue tracking systems that are managed by, or on behalf of, the
59 | Licensor for the purpose of discussing and improving the Work, but
60 | excluding communication that is conspicuously marked or otherwise
61 | designated in writing by the copyright owner as "Not a Contribution."
62 |
63 | "Contributor" shall mean Licensor and any individual or Legal Entity
64 | on behalf of whom a Contribution has been received by Licensor and
65 | subsequently incorporated within the Work.
66 |
67 | 2. Grant of Copyright License. Subject to the terms and conditions of
68 | this License, each Contributor hereby grants to You a perpetual,
69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70 | copyright license to reproduce, prepare Derivative Works of,
71 | publicly display, publicly perform, sublicense, and distribute the
72 | Work and such Derivative Works in Source or Object form.
73 |
74 | 3. Grant of Patent License. Subject to the terms and conditions of
75 | this License, each Contributor hereby grants to You a perpetual,
76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77 | (except as stated in this section) patent license to make, have made,
78 | use, offer to sell, sell, import, and otherwise transfer the Work,
79 | where such license applies only to those patent claims licensable
80 | by such Contributor that are necessarily infringed by their
81 | Contribution(s) alone or by combination of their Contribution(s)
82 | with the Work to which such Contribution(s) was submitted. If You
83 | institute patent litigation against any entity (including a
84 | cross-claim or counterclaim in a lawsuit) alleging that the Work
85 | or a Contribution incorporated within the Work constitutes direct
86 | or contributory patent infringement, then any patent licenses
87 | granted to You under this License for that Work shall terminate
88 | as of the date such litigation is filed.
89 |
90 | 4. Redistribution. You may reproduce and distribute copies of the
91 | Work or Derivative Works thereof in any medium, with or without
92 | modifications, and in Source or Object form, provided that You
93 | meet the following conditions:
94 |
95 | (a) You must give any other recipients of the Work or
96 | Derivative Works a copy of this License; and
97 |
98 | (b) You must cause any modified files to carry prominent notices
99 | stating that You changed the files; and
100 |
101 | (c) You must retain, in the Source form of any Derivative Works
102 | that You distribute, all copyright, patent, trademark, and
103 | attribution notices from the Source form of the Work,
104 | excluding those notices that do not pertain to any part of
105 | the Derivative Works; and
106 |
107 | (d) If the Work includes a "NOTICE" text file as part of its
108 | distribution, then any Derivative Works that You distribute must
109 | include a readable copy of the attribution notices contained
110 | within such NOTICE file, excluding those notices that do not
111 | pertain to any part of the Derivative Works, in at least one
112 | of the following places: within a NOTICE text file distributed
113 | as part of the Derivative Works; within the Source form or
114 | documentation, if provided along with the Derivative Works; or,
115 | within a display generated by the Derivative Works, if and
116 | wherever such third-party notices normally appear. The contents
117 | of the NOTICE file are for informational purposes only and
118 | do not modify the License. You may add Your own attribution
119 | notices within Derivative Works that You distribute, alongside
120 | or as an addendum to the NOTICE text from the Work, provided
121 | that such additional attribution notices cannot be construed
122 | as modifying the License.
123 |
124 | You may add Your own copyright statement to Your modifications and
125 | may provide additional or different license terms and conditions
126 | for use, reproduction, or distribution of Your modifications, or
127 | for any such Derivative Works as a whole, provided Your use,
128 | reproduction, and distribution of the Work otherwise complies with
129 | the conditions stated in this License.
130 |
131 | 5. Submission of Contributions. Unless You explicitly state otherwise,
132 | any Contribution intentionally submitted for inclusion in the Work
133 | by You to the Licensor shall be under the terms and conditions of
134 | this License, without any additional terms or conditions.
135 | Notwithstanding the above, nothing herein shall supersede or modify
136 | the terms of any separate license agreement you may have executed
137 | with Licensor regarding such Contributions.
138 |
139 | 6. Trademarks. This License does not grant permission to use the trade
140 | names, trademarks, service marks, or product names of the Licensor,
141 | except as required for reasonable and customary use in describing the
142 | origin of the Work and reproducing the content of the NOTICE file.
143 |
144 | 7. Disclaimer of Warranty. Unless required by applicable law or
145 | agreed to in writing, Licensor provides the Work (and each
146 | Contributor provides its Contributions) on an "AS IS" BASIS,
147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148 | implied, including, without limitation, any warranties or conditions
149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150 | PARTICULAR PURPOSE. You are solely responsible for determining the
151 | appropriateness of using or redistributing the Work and assume any
152 | risks associated with Your exercise of permissions under this License.
153 |
154 | 8. Limitation of Liability. In no event and under no legal theory,
155 | whether in tort (including negligence), contract, or otherwise,
156 | unless required by applicable law (such as deliberate and grossly
157 | negligent acts) or agreed to in writing, shall any Contributor be
158 | liable to You for damages, including any direct, indirect, special,
159 | incidental, or consequential damages of any character arising as a
160 | result of this License or out of the use or inability to use the
161 | Work (including but not limited to damages for loss of goodwill,
162 | work stoppage, computer failure or malfunction, or any and all
163 | other commercial damages or losses), even if such Contributor
164 | has been advised of the possibility of such damages.
165 |
166 | 9. Accepting Warranty or Additional Liability. While redistributing
167 | the Work or Derivative Works thereof, You may choose to offer,
168 | and charge a fee for, acceptance of support, warranty, indemnity,
169 | or other liability obligations and/or rights consistent with this
170 | License. However, in accepting such obligations, You may act only
171 | on Your own behalf and on Your sole responsibility, not on behalf
172 | of any other Contributor, and only if You agree to indemnify,
173 | defend, and hold each Contributor harmless for any liability
174 | incurred by, or claims asserted against, such Contributor by reason
175 | of your accepting any such warranty or additional liability.
176 |
177 | END OF TERMS AND CONDITIONS
178 |
179 | APPENDIX: How to apply the Apache License to your work.
180 |
181 | To apply the Apache License to your work, attach the following
182 | boilerplate notice, with the fields enclosed by brackets "[]"
183 | replaced with your own identifying information. (Don't include
184 | the brackets!) The text should be enclosed in the appropriate
185 | comment syntax for the file format. We also recommend that a
186 | file or class name and description of purpose be included on the
187 | same "printed page" as the copyright notice for easier
188 | identification within third-party archives.
189 |
190 | Copyright [yyyy] [name of copyright owner]
191 |
192 | Licensed under the Apache License, Version 2.0 (the "License");
193 | you may not use this file except in compliance with the License.
194 | You may obtain a copy of the License at
195 |
196 | http://www.apache.org/licenses/LICENSE-2.0
197 |
198 | Unless required by applicable law or agreed to in writing, software
199 | distributed under the License is distributed on an "AS IS" BASIS,
200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201 | See the License for the specific language governing permissions and
202 | limitations under the License.
203 |
--------------------------------------------------------------------------------