# A few questions about SLAM Cartographer.

Hi, when I was using Cartographer to build a 2D map, I had no problems. However, when I was using Cartographer to build a 3D map (as in the example backpack_3d), with the use of UTM-30LX-EW (without rotating base) and IMU, many problems appeared.

1) I reconfigured the launch of the example (backpack_3d) to work on my robot. Each time the Cartographer is started, the IMU axis is tilted relatively to the map axis. And each time to about the same angle. But the IMU data show that there is no inclination. Whence the question appears, why does the inclination of the IMU axis appear?

2) A submap, which was built, is very faded. These are no problems with visualization, but extremely small values in the cells of the map. This problem occurs only when I use a 2D lidar for the 3D Cartographer mode (in 2D mode or using 3D lidar there are no problems). To check that the problem is exactly in the Cartographer algorithm, I reconfigured backpack_3d to work with 2D lidar. I run the bag file for this example (b3-2016-04-05-14-14-00.bag), using the pointcloud_to_laserscan package to get the 2D lidar. And I still get the same faded map. How to fix this?

The map looks like this:

In this case, interestingly, there is no problem with tilting the IMU like on my robot.

The settings file for Cartographer:

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

options = {
map_builder = MAP_BUILDER,
trajectory_builder = TRAJECTORY_BUILDER,
map_frame = "map",
odom_frame = "odom",
provide_odom_frame = true,
use_odometry = false,
use_laser_scan = true,
use_multi_echo_laser_scan = false,
num_point_clouds = 0,
lookup_transform_timeout_sec = 0.2,
submap_publish_period_sec = 0.3,
pose_publish_period_sec = 5e-3,
}

TRAJECTORY_BUILDER_3D.scans_per_accumulation = 160

MAP_BUILDER.use_trajectory_builder_3d = true
MAP_BUILDER.sparse_pose_graph.optimization_problem.huber_scale = 5e2
MAP_BUILDER.sparse_pose_graph.optimize_every_n_scans = 320
MAP_BUILDER.sparse_pose_graph.constraint_builder.sampling_ratio = 0.03
MAP_BUILDER.sparse_pose_graph.optimization_problem.ceres_solver_options.max_num_iterations = 10
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62


3) When running the algorithm on the robot, if I write in the tracking_frame - not the IMU frame, I get the corresponding error, which is logical. However, in the example from the developers (backpack_3d) in tracking_frameb base_link is written, not imu_link and there is no error. Why?

My tf The settings file of Cartographer for my robot.

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

options = {
map_builder = MAP_BUILDER,
trajectory_builder = TRAJECTORY_BUILDER,
map_frame = "map",
odom_frame = "odom",
provide_odom_frame = true,
use_odometry = false,
use_laser_scan = true,
use_multi_echo_laser_scan = false,
num_point_clouds = 0,
lookup_transform_timeout_sec = 0.2,
submap_publish_period_sec = 0.3,
pose_publish_period_sec = 5e-3,
}

TRAJECTORY_BUILDER_3D.scans_per_accumulation = 160

MAP_BUILDER.use_trajectory_builder_3d = true
MAP_BUILDER.sparse_pose_graph.optimization_problem.huber_scale = 5e2
MAP_BUILDER.sparse_pose_graph.optimize_every_n_scans = 320
MAP_BUILDER.sparse_pose_graph.constraint_builder.sampling_ratio = 0.03
MAP_BUILDER.sparse_pose_graph.optimization_problem.ceres_solver_options.max_num_iterations = 10
— Reuse the coarser 3D voxel filter to speed up the computation of loop closure
— constraints.
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62


UPDATE Thank you, I’ve already figured it out, but just forgot to close the question.

As the developer informed, the 2D lidar is not applicable in 3D, although such start does not lead to a system startup ...

edit retag close merge delete

I have the same problem. Did you solved it?

( 2019-10-22 21:04:31 -0500 )edit

Sort by » oldest newest most voted

The tracking frame has to be the IMU location. If any examples do otherwise it's because their IMU is located at the base_link location. You also need to publish the appropriate IMU transform with static_transform_publisher.

more