SteveMacenski / slam_toolbox

Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS
GNU Lesser General Public License v2.1
1.5k stars 497 forks source link

Map jumping while mapping #698

Closed Rudresh172 closed 2 months ago

Rudresh172 commented 2 months ago

Required Info:

Steps to reproduce issue

We are trying to convert yellow and black tape on the ground to a laserscan data to map an area. We are using a stereo setup which gives us the 3d positions of the tape points. We further convert this to laserscan msg and use slam_toolbox. The mapping starts properly, but when we rotate the robot, the map does not map new laserscans, after substantial rotations, it suddenly jumps and maps all the new laserscan points. We are using a ros_planar_plugin which gives odometry on /odom topic and publishes odom to base_footprint on /tf. We tried toggling the /odom on and off, no change.

Video -

https://github.com/SteveMacenski/slam_toolbox/assets/93994789/ed0aef39-282a-4f11-9183-0dc156a297f8

rqt_graph Screenshot from 2024-05-03 23-35-16

mapper_params_online_async.yaml -

slam_toolbox:
  ros__parameters:

    # Plugin params
    solver_plugin: solver_plugins::CeresSolver
    ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
    ceres_preconditioner: SCHUR_JACOBI
    ceres_trust_strategy: LEVENBERG_MARQUARDT
    ceres_dogleg_type: TRADITIONAL_DOGLEG
    ceres_loss_function: None

    # ROS Parameters
    odom_frame: odom
    map_frame: map
    base_frame: base_footprint
    scan_topic: /scan1
    use_map_saver: true
    mode: mapping #localization

    # if you'd like to immediately start continuing a map at a given pose
    # or at the dock, but they are mutually exclusive, if pose is given
    # will use pose
    #map_file_name: test_steve
    # map_start_pose: [0.0, 0.0, 0.0]
    #map_start_at_dock: true

    debug_logging: false
    throttle_scans: 1
    transform_publish_period: 0.05 #0.02 #if 0 never publishes odometry
    map_update_interval: 0.01 #5.0
    resolution: 0.04 #0.05
    max_laser_range: 10.0 #for rastering images
    minimum_time_interval: 0.5
    transform_timeout: 0.2
    tf_buffer_duration: 30.
    stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
    enable_interactive_mode: true

    # General Parameters
    use_scan_matching: true
    use_scan_barycenter: true
    minimum_travel_distance: 0.5
    minimum_travel_heading: 0.5
    scan_buffer_size: 10
    scan_buffer_maximum_scan_distance: 10.0
    link_match_minimum_response_fine: 0.1  
    link_scan_maximum_distance: 1.5
    loop_search_maximum_distance: 3.0
    do_loop_closing: true #true 
    loop_match_minimum_chain_size: 10           
    loop_match_maximum_variance_coarse: 3.0  
    loop_match_minimum_response_coarse: 0.35    
    loop_match_minimum_response_fine: 0.45

    # Correlation Parameters - Correlation Parameters
    correlation_search_space_dimension: 0.5
    correlation_search_space_resolution: 0.01
    correlation_search_space_smear_deviation: 0.1 

    # Correlation Parameters - Loop Closure Parameters
    loop_search_space_dimension: 8.0
    loop_search_space_resolution: 0.05
    loop_search_space_smear_deviation: 0.03

    # Scan Matcher Parameters
    distance_variance_penalty: 0.5 #0.5      
    angle_variance_penalty: 1.0 #1.0    

    fine_search_angle_offset: 0.00349     
    coarse_search_angle_offset: 0.349   
    coarse_angle_resolution: 0.0349        
    minimum_angle_penalty: 0.9
    minimum_distance_penalty: 0.5
    use_response_expansion: true

Can you please point us to the problem so that we can troubleshoot it better.

SteveMacenski commented 2 months ago

See the discussion in https://github.com/SteveMacenski/slam_toolbox/issues/239 (particularly my last comment)