slam_toolbox:
  ros__parameters:

    # ============================ Solver 插件参数 ======================================
    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 基础参数 =========================================
    odom_frame: odom                           # 里程计坐标系
    map_frame: map                             # 地图坐标系
    base_frame: base_link                # 机器人基座坐标系（与 URDF 根帧一致）
    scan_topic: /scan                          # 激光雷达话题
    use_map_saver: true                        # 启用地图保存功能
    mode: mapping                              # mapping = 定位 + 实时建图（地图可更新）

    # ============================ 已有地图加载（在其基础上继续更新）==========================
    # 启动时暂不加载（注释掉），通过服务在启动后手动加载：
    #   ros2 service call /slam_toolbox/deserialize_map slam_toolbox/srv/DeserializePoseGraph "{filename: '/home/guoch/test_ws/src/gc_navigation2_slamtoolbox/maps/my_map.posegraph', match_type: 1}"
    # map_file_name: /home/guoch/test_ws/src/gc_navigation2_slamtoolbox/maps/my_map.posegraph
    map_start_pose: [-2.0, -2.0, 0.0]           # 初始位姿 [x, y, yaw]（map 坐标系下）
    # map_start_at_dock: true                  # 或从 docking 位姿启动（与 pose 互斥）

    # ============================ 调试与性能 ===========================================
    debug_logging: false                       # 调试日志（生产环境关闭）
    throttle_scans: 10                          # 每 N 帧激光处理一次（1=全部处理）
    transform_publish_period: 0.02             # TF 发布周期（秒），0=不发布里程计
    map_update_interval: 3.0                   # /map 话题更新间隔（秒），越小越实时
    resolution: 0.05                           # 地图分辨率（米/像素）
    restamp_tf: false                          # 是否重新打时间戳
    min_laser_range: 0.0                       # 激光最小有效距离（米）
    max_laser_range: 20.0                      # 激光最大有效距离（米）
    minimum_time_interval: 0.5                 # 最小处理时间间隔（秒）
    transform_timeout: 0.2                     # TF 查找超时（秒）
    tf_buffer_duration: 30.0                   # TF 缓冲区时长（秒）
    stack_size_to_use: 40000000                # 栈大小（序列化大地图需要）
    enable_interactive_mode: true              # 交互模式：允许外部工具编辑地图

    # ============================ 通用建图参数 =========================================
    use_scan_matching: true                    # 启用扫描匹配
    use_scan_barycenter: true                  # 使用扫描重心
    minimum_travel_distance: 0.1               # 最小移动距离触发处理（米）
    minimum_travel_heading: 0.1                # 最小转向角度触发处理（弧度）
    check_min_dist_and_heading_precisely: false
    scan_buffer_size: 5                       # 扫描缓冲区大小（越大匹配越稳定）
    scan_buffer_maximum_scan_distance: 5.0    # 缓冲区最大扫描距离
    link_match_minimum_response_fine: 0.1      # 精细匹配最小响应
    link_scan_maximum_distance: 1.5            # 链接扫描最大距离

    # ============================ 回环检测参数 =========================================
    do_loop_closing: 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     # 精细匹配最小响应
    loop_search_maximum_distance: 3.0          # 回环搜索最大距离

    # ============================ 相关性匹配 - 扫描匹配参数 ==============================
    correlation_search_space_dimension: 0.5    # 搜索空间维度
    correlation_search_space_resolution: 0.01  # 搜索空间分辨率
    correlation_search_space_smear_deviation: 0.1  # 搜索空间平滑偏差

    # ============================ 相关性匹配 - 回环检测参数 ==============================
    loop_search_space_dimension: 8.0           # 回环搜索空间维度
    loop_search_space_resolution: 0.05         # 回环搜索分辨率
    loop_search_space_smear_deviation: 0.03    # 回环搜索平滑偏差

    # ============================ 扫描匹配器参数 ========================================
    distance_variance_penalty: 0.5             # 距离方差惩罚
    angle_variance_penalty: 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               # 使用响应扩展
    min_pass_through: 2                        # 最小通过次数
    occupancy_threshold: 0.1                   # 占据阈值
