cartographer-project / cartographer_mir

Cartographer configuration files for the MiR 100
Apache License 2.0
13 stars 14 forks source link

Key 'collate_landmarks' was used the wrong number of times #4

Open nkuligaofeng opened 6 years ago

nkuligaofeng commented 6 years ago

I'm learning the cartographer these days. I have successfully run the 2D backpack demo and the 3D backpack demo. However, I face a problem when I run the Static Landmarks demo. Here is the problem. I have install the "cartographer_mir" successfully. When I try to launch the landmarks demo as guided by https://google-cartographer-ros.readthedocs.io/en/latest/demos.html: roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag , I meet the following error:

[...../offline_mir_100_rviz.launch] requires the 'bag_filenames' arg to be set

So I checked the "offline_mir_100_rviz.launch" file and found that the arg name is 'bag_filenames' instead of ‘bag_filename’. So a 's' is missing in the commend line shown in https://google-cartographer-ros.readthedocs.io/en/latest/demos.html.

However, I meet another error when I fix this problem:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

I checked the configurations file: /cartographer_mir/cartographer_mir/configuration_files/mir-100-mapping.lua. I found that the parameter "collate_landmarks" is set to be false. So I modify it to be true as following: TRAJECTORY_BUILDER.collate_landmarks = true

However, the error is same:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

Could someone to help me? I don't know what's the problem.

nkuligaofeng commented 6 years ago

I'm learning the cartographer these days. I have successfully run the 2D backpack demo and the 3D backpack demo. However, I face a problem when I run the Static Landmarks demo. Here is the problem. I have install the "cartographer_mir" successfully. When I try to launch the landmarks demo as guided by https://google-cartographer-ros.readthedocs.io/en/latest/demos.html: roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag , I meet the following error:

[...../offline_mir_100_rviz.launch] requires the 'bag_filenames' arg to be set

So I checked the "offline_mir_100_rviz.launch" file and found that the arg name is 'bag_filenames' instead of ‘bag_filename’. So a 's' is missing in the commend line shown in https://google-cartographer-ros.readthedocs.io/en/latest/demos.html.

However, I meet another error when I fix this problem:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

I checked the configurations file: /cartographer_mir/cartographer_mir/configuration_files/mir-100-mapping.lua. I found that the parameter "collate_landmarks" is set to be false. So I modify it to be true as following: TRAJECTORY_BUILDER.collate_landmarks = true

However, the error is same:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

Could someone to help me? I don't know what's the problem.

I have solved this problem. Actually, the value of the parameter "collate_landmarks" should not be "true" or "false". It should be "on" or "off". Also, the value for "use_pose_extrapolator" should be "on".

So when I modify the .lua file as following, I run the Static Landmarks demo successfully.

use_pose_extrapolator = on TRAJECTORY_BUILDER.collate_landmarks = on

Phymin commented 6 years ago

I'm learning the cartographer these days. I have successfully run the 2D backpack demo and the 3D backpack demo. However, I face a problem when I run the Static Landmarks demo. Here is the problem. I have install the "cartographer_mir" successfully. When I try to launch the landmarks demo as guided by https://google-cartographer-ros.readthedocs.io/en/latest/demos.html: roslaunch cartographer_mir offline_mir_100_rviz.launch bag_filename:=${HOME}/Downloads/landmarks_demo_uncalibrated.bag , I meet the following error:

[...../offline_mir_100_rviz.launch] requires the 'bag_filenames' arg to be set

So I checked the "offline_mir_100_rviz.launch" file and found that the arg name is 'bag_filenames' instead of ‘bag_filename’. So a 's' is missing in the commend line shown in https://google-cartographer-ros.readthedocs.io/en/latest/demos.html. However, I meet another error when I fix this problem:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

I checked the configurations file: /cartographer_mir/cartographer_mir/configuration_files/mir-100-mapping.lua. I found that the parameter "collate_landmarks" is set to be false. So I modify it to be true as following: TRAJECTORY_BUILDER.collate_landmarks = true However, the error is same:

[FATAL] [1542782924.721540472]: F1121 14:48:44.000000 27311 lua_parameter_dictionary.cc:410] Check failed: 1 == referencecounts.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

Could someone to help me? I don't know what's the problem.

I have solved this problem. Actually, the value of the parameter "collate_landmarks" should not be "true" or "false". It should be "on" or "off". Also, the value for "use_pose_extrapolator" should be "on".

So when I modify the .lua file as following, I run the Static Landmarks demo successfully.

use_pose_extrapolator = on TRAJECTORY_BUILDER.collate_landmarks = on

This doesn't work, I still has the same problem:

[FATAL] [1543988472.878488836]: F1205 13:41:12.000000  5108 lua_parameter_dictionary.cc:410] Check failed: 1 == reference_counts_.count(key) (1 vs. 0) Key 'collate_landmarks' was used the wrong number of times.

Here is my configure file:

-- Copyright 2018 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.

include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "imu_frame",
  published_frame = "base_link",
  odom_frame = "odom",
  provide_odom_frame = true,
  publish_frame_projected_to_2d = false,
  use_odometry = true,
  use_pose_extrapolator = on,
  use_nav_sat = false,
  use_landmarks = true,
  num_laser_scans = 2,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 1.,
  fixed_frame_pose_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
  landmarks_sampling_ratio = 1.,
}

MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER.collate_landmarks = on
TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 2
TRAJECTORY_BUILDER_2D.use_imu_data = true
TRAJECTORY_BUILDER_2D.submaps.num_range_data = 45

-- more points
TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.max_length = 0.2
TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.min_num_points = 400
-- slightly slower insertion
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.hit_probability = 0.53
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.miss_probability = 0.493
-- slightly shorter rays
TRAJECTORY_BUILDER_2D.max_range = 15.
-- wheel odometry is fine
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 20
-- IMU is ok
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 20

-- less outliers
POSE_GRAPH.constraint_builder.max_constraint_distance = 5.
POSE_GRAPH.constraint_builder.min_score = 0.5
-- tune down IMU in optimization
POSE_GRAPH.optimization_problem.acceleration_weight = 0.1 * 1e3
POSE_GRAPH.optimization_problem.rotation_weight = 0.1 * 3e5
-- ignore wheels in optimization
POSE_GRAPH.optimization_problem.odometry_translation_weight = 0.
POSE_GRAPH.optimization_problem.odometry_rotation_weight = 0.
POSE_GRAPH.optimization_problem.log_solver_summary = true

return options 

Update

I have solved the problem, after change the configure file, you should rebuild the cartographer_mir, or you can change the configure file in /install_isolated/share/cartographer_mir/configuration_files/mir-100-mapping.lua