Using Cartographer as odometry with amcl for localization in a given map
I wanted to exploit the fact that Cartographer gives pretty accurate position estimate. I used Cartographer just using IMU and laser to make an indoor map, and it pretty good.
Then I want use Cartographer as odometry and amcl to do global localization in a pre-aquired map by Cartographer, but the robot drift away.
On my robot a TF frame that looks like this:
The configuration of Cartographer_ros is like:
include "map_builder.lua"
options = {
map_builder = MAP_BUILDER,
map_frame = "odom",
tracking_frame = "gyro_link",
published_frame = "base_footprint",
odom_frame = "google_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,
}
MAP_BUILDER.use_trajectory_builder_2d = true
TRAJECTORY_BUILDER_2D.laser_min_range = 0.2
TRAJECTORY_BUILDER_2D.laser_max_range = 8.
TRAJECTORY_BUILDER_2D.laser_missing_echo_ray_length = 5.
TRAJECTORY_BUILDER_2D.use_imu_data = true
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)
SPARSE_POSE_GRAPH.constraint_builder.min_score = 0.65
SPARSE_POSE_GRAPH.constraint_builder.global_localization_min_score = 0.7
return options
I used the position estimate to find odometry and now Cartographer successful transform the required tf. But when I run amcl and publish an already created map using mapserver, the pose of robot drift. It seems amcl doesn't work enven if the tf, map, laserscan look like ok. And I also remap the Cartographer mapping map to something else . Please help how to resolve this issue.
Asked by zzzZuo on 2017-04-18 01:49:27 UTC
Comments