A few questions about 3D in Cartographer.

389 views
Skip to first unread message

Илья Балташов

unread,
Jun 9, 2017, 5:09:15 PM6/9/17
to google-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 settings file for Cartographer:

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

options = {
map_builder = MAP_BUILDER,
trajectory_builder = TRAJECTORY_BUILDER,
map_frame = "map",
tracking_frame = "base_link",
published_frame = "base_link",
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.num_background_threads = 7
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.adaptive_voxel_filter = TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62

 

The map looks like this:

 

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

 

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",
tracking_frame = "imu_bosch_link",
published_frame = "base_link",
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.num_background_threads = 7
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.adaptive_voxel_filter = TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter
MAP_BUILDER.sparse_pose_graph.constraint_builder.min_score = 0.62

 

 

Holger Rapp

unread,
Jun 12, 2017, 4:49:37 AM6/12/17
to Илья Балташов, google-cartographer
On Fri, Jun 9, 2017 at 11:09 PM, Илья Балташов <baltas...@gmail.com> wrote:

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.


​You cannot do 3D SLAM with a 2D sensor. Some overlap of the scans in all dimensions is required, which is not given for a 2D scanner.​

​​

--
You received this message because you are subscribed to the Google Groups "google-cartographer" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-cartographer+unsub...@googlegroups.com.
To post to this group, send email to google-cartographer@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-cartographer/fa03944f-05dc-44fe-bd12-c5e008e42761%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Google Germany GmbH
Erika-Mann-Straße 33
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Matthew Scott Sucherman, Paul Terence Manicle


Reply all
Reply to author
Forward
0 new messages