Use Gmapping and Cartographer integrated in the Isaac sdk (see gmapping and log_cartographer in the carter application). The following exceptions occur:

- When the trolley rotates in place, the map output by the two algorithms is normal;
- When the trolley moves linearly, the output maps of the two algorithms overlap;

The diagram above is an anomaly of the cartographer. It can be seen that there is a significant overlap in the map when the trolley line is moving.it has the same problem with gmapping.

From the output state of odometer, pose and heading are consistent with the actual motion (the robot rotation Angle is consistent with the change of heading, and the change of the robot linear motion position is consistent with the change of pose output).

Inputs to the two algorithms are IMU, car odometer and 2D laser.

The Gmapping configuration is as follows:

“gmapping”: {

“GMapping”: {

“file_path”: “/tmp”,

“sensor_frame”: “robot”,

“build_map_period”: 2,

“laser_matcher_resolution”: 0.008,

“map_x_max”: 10.0,

“map_x_min”: -10.0,

“map_y_max”: 10.0,

“map_y_min”: -10.0,

“map_resolution”: 0.005,

“max_range”: 12,

“map_update_range”: 12.0,

“number_particles”: 50,

“linear_distance”: 0.03,

“angular_distance”: 0.02,

“use_pose_tree”: false

}

The Cartographer configuration is as follows:

{

MAP_BUILDER.num_background_threads = 8

MAP_BUILDER.use_trajectory_builder_2d = true

MAP_BUILDER.use_trajectory_builder_3d = false

TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 40

TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 10

TRAJECTORY_BUILDER_2D.max_range = 12

TRAJECTORY_BUILDER_2D.min_range = 0.5

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 1

TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.1

TRAJECTORY_BUILDER_2D.submaps.num_range_data = 10

TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.hit_probability = 0.55

TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.miss_probability = 0.49

TRAJECTORY_BUILDER_2D.use_imu_data = false

TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true

POSE_GRAPH.constraint_builder.ceres_scan_matcher.rotation_weight = 0.2

POSE_GRAPH.constraint_builder.ceres_scan_matcher.translation_weight = 10

POSE_GRAPH.constraint_builder.global_localization_min_score = 0.7

POSE_GRAPH.constraint_builder.max_constraint_distance = 15

POSE_GRAPH.constraint_builder.min_score=0.65

POSE_GRAPH.constraint_builder.sampling_ratio = 0.3

POSE_GRAPH.global_constraint_search_after_n_seconds = 1

POSE_GRAPH.matcher_rotation_weight = 1.6e3

POSE_GRAPH.matcher_translation_weight=5e2

POSE_GRAPH.optimization_problem.ceres_solver_options.use_nonmonotonic_steps = true

POSE_GRAPH.optimization_problem.fixed_frame_pose_rotation_weight = 1e5

POSE_GRAPH.optimization_problem.local_slam_pose_rotation_weight = 1e5

POSE_GRAPH.optimization_problem.local_slam_pose_translation_weight = 1e5

POSE_GRAPH.optimization_problem.odometry_rotation_weight = 1e5

POSE_GRAPH.optimization_problem.odometry_translation_weight = 1e5

POSE_GRAPH.optimize_every_n_nodes = 90

}

The attachment ros_to_flatscans.app_cartographer.json is the app JSON file of Cartographer，

Ros_to_flatscans.app_gmapping.json is the app JSON file of Gmapping.

ros_to_flatscan.app_cartographer.json (5.0 KB)

ros_to_flatscan.app_gmapping.json (5.6 KB)

Please help to analyze the possible reasons!

Any help or pointers would be largely appreciated! Thanks in advance and kind regards.