ros2实现路径规划---nav2部分

前置知识:前面已经完成了ros2的驱动和fastlio2建图,现在就是调用建图数据来进行路径规划,然后呢,就是使用ros自带的二维路径规划来实现,雷达是mid360,需要做三维转为二维处理

数据流

主要的文件夹:

1.配置文件.--config

config 目录是ROS2导航系统的 参数管理中心 ,通过合理的配置文件可以实现:

  1. 快速参数调整 :无需重新编译代码

  2. 环境适配 :不同场景使用不同配置

  3. 版本管理 :配置变更可追踪

这个配置文件,经常存放yaml文件

ros的参数一般在对应的包的官网都有介绍:ROS: Home

我们可以进行配置参数

复制代码
# Navigation2 parameters for MID-360 with FAST-LIO2
# 完整可运行版 -- 无空值、无 tuple 报错
# 
# 本配置文件定义了Nav2导航堆栈的所有参数设置
# 包含定位、路径规划、控制、代价地图等核心模块
# 适用于MID-360激光雷达 + FAST-LIO2 SLAM的导航系统

#=============================================================================
# 1. AMCL定位模块配置
#=============================================================================
# AMCL (Adaptive Monte Carlo Localization) - 自适应蒙特卡洛定位
# 作用:基于粒子滤波器实现机器人在已知地图中的定位
amcl:
  ros__parameters:
    # 地图相关配置
    use_map_topic: true        # 从/map话题订阅地图,而不是服务调用
    first_map_only: false      # 不限制只使用第一张地图
    map_topic: /map           # 地图话题名称,与pointcloud_to_grid节点输出对应
    
    # 坐标系配置
    odom_frame_id: odom       # 里程计坐标系,FAST-LIO提供
    base_frame_id: base_link  # 机器人基座坐标系
    global_frame_id: map      # 全局地图坐标系
    
    # 粒子滤波器参数
    min_particles: 500        # 最小粒子数,定位不稳定时增加
    max_particles: 2000       # 最大粒子数,计算资源不足时减少
    transform_tolerance: 0.5  # TF变换容差,单位:秒
    
    # 更新条件参数
    update_min_d: 0.05        # 最小位移更新阈值,单位:米
    update_min_a: 0.1          # 最小角度更新阈值,单位:弧度
    resample_interval: 1      # 重采样间隔,单位:秒
    
    # 激光雷达参数
    laser_min_range: 0.1       # 最小测距范围,单位:米
    laser_max_range: 10.0      # 最大测距范围,单位:米
    laser_max_beams: 720       # 激光束数量,360°/0.5°=720束
    
    # 初始位姿参数
    set_initial_pose: true     # 启用初始位姿设置
    initial_pose_x: 0.0        # 初始X位置,单位:米
    initial_pose_y: 0.0        # 初始Y位置,单位:米
    initial_pose_z: 0.0        # 初始Z位置,单位:米
    initial_pose_yaw: 0.0      # 初始朝向角,单位:弧度

#=============================================================================
# 2. 行为树导航器配置
#=============================================================================
# BT Navigator - 行为树导航器
# 作用:使用行为树管理导航任务,协调各个导航模块的工作
bt_navigator:
  ros__parameters:
    # 基础配置
    use_sim_time: false      # 不使用仿真时间,使用系统时间
    global_frame: map       # 全局坐标系
    robot_base_frame: base_link  # 机器人基座坐标系
    odom_topic: /Odometry   # 里程计话题,FAST-LIO提供
    
    # 行为树配置
    bt_loop_duration: 10    # 行为树循环周期,单位:毫秒
    default_nav_to_pose_bt_xml: "navigate_to_pose_w_replanning_and_recovery.xml"  # 默认导航行为树文件
    default_nav_through_poses_bt_xml: "navigate_through_poses_w_replanning_and_recovery.xml"  # 多点导航行为树文件
    
    # 行为树插件库列表 - 定义可用的行为树节点类型
    plugin_lib_names: [
      "nav2_compute_path_to_pose_action_bt_node",      # 计算到目标点的路径
      "nav2_compute_path_through_poses_action_bt_node", # 计算通过多个目标点的路径
      "nav2_follow_path_action_bt_node",              # 跟随路径执行
      "nav2_back_up_action_bt_node",                  # 后退行为
      "nav2_spin_action_bt_node",                     # 旋转行为
      "nav2_wait_action_bt_node",                     # 等待行为
      "nav2_clear_costmap_service_bt_node",           # 清除代价地图服务
      "nav2_is_stuck_condition_bt_node",              # 判断是否卡住的条件
      "nav2_goal_reached_condition_bt_node",            # 判断是否到达目标的条件
      "nav2_goal_updated_condition_bt_node",          # 判断目标是否更新的条件
      "nav2_initial_pose_received_condition_bt_node",   # 判断是否收到初始位置的条件
      "nav2_reinitialize_global_localization_service_bt_node",  # 重新初始化全局定位服务
      "nav2_rate_controller_bt_node",                 # 速率控制器
      "nav2_distance_controller_bt_node",             # 距离控制器
      "nav2_speed_controller_bt_node",                # 速度控制器
      "nav2_truncate_path_action_bt_node",            # 截断路径行为
      "nav2_recovery_node_bt_node",                   # 恢复行为节点
      "nav2_pipeline_sequence_bt_node",               # 管道序列节点
      "nav2_round_robin_node_bt_node",                # 轮询节点
      "nav2_transform_available_condition_bt_node",   # 判断TF变换是否可用的条件
      "nav2_time_expired_condition_bt_node",            # 判断时间是否过期的条件
      "nav2_distance_traveled_condition_bt_node",     # 判断移动距离的条件
      "nav2_remove_passed_goals_action_bt_node"        # 移除已到达目标的行为
    ]

#=============================================================================
# 3. 控制器服务器配置
#=============================================================================
# Controller Server - 控制器服务器
# 作用:执行局部路径规划和速度控制,将全局路径转换为具体的运动指令
controller_server:
  ros__parameters:
    # 基础配置
    use_sim_time: false          # 不使用仿真时间
    controller_frequency: 20.0   # 控制器频率,单位:Hz,控制周期50ms
    
    # 速度阈值配置 - 防止微小抖动
    min_x_velocity_threshold: 0.001   # X方向最小速度阈值,单位:m/s
    min_y_velocity_threshold: 0.001   # Y方向最小速度阈值,单位:m/s  
    min_theta_velocity_threshold: 0.001 # 角速度最小阈值,单位:rad/s

    # 插件配置
    progress_checker_plugins: ["progress_checker"]  # 进度检查插件
    goal_checker_plugins: ["goal_checker"]          # 目标检查插件
    controller_plugins: ["FollowPath"]              # 控制器插件

    # 进度检查器配置 - 防止机器人卡住
    progress_checker:
      plugin: "nav2_controller::SimpleProgressChecker"  # 进度检查器插件类型
      required_movement_radius: 0.5   # 要求移动半径,单位:米,在此范围内认为有进展
      movement_time_allowance: 10.0   # 移动时间容许值,单位:秒,超时认为卡住

    # 目标检查器配置 - 判断何时到达目标
    goal_checker:
      plugin: "nav2_controller::SimpleGoalChecker"    # 目标检查器插件类型
      xy_goal_tolerance: 0.25         # 位置目标容差,单位:米,在此范围内认为到达
      yaw_goal_tolerance: 0.25        # 角度目标容差,单位:弧度,约14.3度
      stateful: True                  # 有状态模式,考虑历史信息

    # DWB局部规划器配置 - 核心控制器
    FollowPath:
      plugin: "dwb_core::DWBLocalPlanner"             # DWB(Dynamic Window Approach)局部规划器
      debug_trajectory_details: true  # 启用调试信息输出
      
      # 速度限制配置 - 机器人运动能力
      min_vel_x: -0.5     # 最小X方向速度,单位:m/s,负值表示后退
      max_vel_x: 0.5      # 最大X方向速度,单位:m/s
      min_vel_y: -0.5     # 最小Y方向速度,单位:m/s,负值表示右移
      max_vel_y: 0.5      # 最大Y方向速度,单位:m/s
      min_vel_theta: -1.0 # 最小角速度,单位:rad/s,负值表示右转
      max_vel_theta: 1.0  # 最大角速度,单位:rad/s,约57.3度/秒
      
      # 加速度限制配置 - 机器人动力学约束
      acc_lim_x: 2.5      # X方向加速度限制,单位:m/s²
      acc_lim_y: 2.5      # Y方向加速度限制,单位:m/s²
      acc_lim_theta: 3.2  # 角加速度限制,单位:rad/s²
      decel_lim_x: -2.5   # X方向减速度限制,单位:m/s²
      decel_lim_y: -2.5   # Y方向减速度限制,单位:m/s²
      decel_lim_theta: -3.2 # 角减速度限制,单位:rad/s²
      
      # 采样配置 - 轨迹生成密度
      vx_samples: 20      # X方向速度采样数,影响轨迹精度
      vy_samples: 20      # Y方向速度采样数
      vtheta_samples: 40  # 角速度采样数
      
      # 仿真配置 - 轨迹预测
      sim_time: 1.7       # 仿真时间,单位:秒,预测未来1.7秒的轨迹
      sim_granularity: 0.025      # 仿真时间粒度,单位:秒
      angular_sim_granularity: 0.025 # 角度仿真粒度,单位:秒
      
      # DWA配置 - Dynamic Window Approach
      use_dwa: true       # 启用DWA算法,更适合动态环境
      
      # 评分权重配置 - 轨迹评价标准
      path_distance_bias: 32.0   # 路径距离权重,越大越贴近全局路径
      goal_distance_bias: 20.0     # 目标距离权重,越大越快速接近目标
      occdist_scale: 0.01          # 障碍物距离权重,越大越远离障碍
      
      # 前向点配置 - 提高路径跟踪精度
      forward_point_distance: 0.325 # 前向点距离,单位:米,提前看多远的路径
      
      # 安全缓冲配置
      stop_time_buffer: 0.2       # 停止时间缓冲,单位:秒
      scaling_speed: 0.25         # 缩放速度,单位:m/s
      max_scaling_factor: 0.2     # 最大缩放因子
      
      # 输出配置
      publish_cost_grid_pc: false   # 是否发布代价网格点云,调试用
      
      # 坐标系配置
      global_frame_id: map        # 全局坐标系
      robot_base_frame: base_link # 机器人基座坐标系
      transform_tolerance: 0.1    # TF变换容差,单位:秒
      odom_topic: /Odometry       # 里程计话题

      # 轨迹评分标准(Critics)配置 - 必须配置,否则无法工作
      # 这些插件用于评价生成的轨迹,选择最优轨迹
      critics: [
        "RotateToGoal",     # 目标旋转:在接近目标时调整朝向
        "Oscillation",      # 振荡检测:防止机器人来回摆动
        "BaseObstacle",     # 基础障碍物:基本避障
        "GoalAlign",        # 目标对齐:确保朝向目标方向
        "PathAlign",        # 路径对齐:确保沿路径方向移动
        "PathDist",         # 路径距离:评价与全局路径的距离
        "GoalDist"          # 目标距离:评价与目标的距离
      ]
      
      # 各评分标准的权重配置
      BaseObstacle.scale: 0.02     # 基础避障权重
      
      PathAlign.scale: 32.0                    # 路径对齐权重
      PathAlign.forward_point_distance: 0.1    # 路径对齐前向点距离
      
      GoalAlign.scale: 24.0                    # 目标对齐权重
      GoalAlign.forward_point_distance: 0.1    # 目标对齐前向点距离
      
      PathDist.scale: 32.0       # 路径距离权重
      GoalDist.scale: 24.0       # 目标距离权重
      
      RotateToGoal.scale: 32.0           # 目标旋转权重
      RotateToGoal.slowing_factor: 5.0   # 减速因子
      RotateToGoal.lookahead_time: -1.0  # 前瞻时间,-1表示使用默认值

#=============================================================================
# 4. 全局规划器配置
#=============================================================================
# Planner Server - 规划器服务器
# 作用:计算从当前位置到目标位置的全局路径,避开静态障碍物
planner_server:
  ros__parameters:
    # 基础配置
    use_sim_time: false            # 不使用仿真时间
    expected_planner_frequency: 1.0  # 期望规划频率,单位:Hz
    planner_plugins: ["GridBased"]   # 使用的规划器插件列表

    # 基于网格的规划器配置
    GridBased:
      plugin: "nav2_navfn_planner/NavfnPlanner"  # Navfn规划器插件(基于Dijkstra算法)
      tolerance: 0.5              # 目标容差,单位:米,在此范围内认为到达
      use_astar: false            # 不使用A*算法,使用Dijkstra算法(更稳定)
      allow_unknown: true           # 允许穿越未知区域(灰色区域)

#=============================================================================
# 5. 行为服务器配置
#=============================================================================
# Behavior Server - 行为服务器
# 作用:提供恢复行为,当导航失败时执行特定的恢复动作
behavior_server:
  ros__parameters:
    # 基础配置
    costmap_topic: local_costmap/costmap_raw      # 代价地图话题
    footprint_topic: local_costmap/published_footprint  # 机器人足迹话题
    cycle_frequency: 10.0    # 循环频率,单位:Hz
    behavior_plugins: ["spin", "wait", "backup", "drive_on_heading"]  # 启用的行为插件

    # 旋转行为 - 用于清除传感器噪声或重新定位
    spin:
      plugin: "nav2_behaviors/Spin"      # 旋转行为插件
      spin_angle: 3.14159               # 旋转角度,单位:弧度(约180度)
      spin_speed: 1.0                   # 旋转速度,单位:rad/s
      simulate_ahead_time: 2.0          # 前瞻仿真时间,单位:秒

    # 等待行为 - 用于暂停导航
    wait:
      plugin: "nav2_behaviors/Wait"      # 等待行为插件
      wait_duration: 10                 # 等待时间,单位:秒

    # 后退行为 - 用于从卡住状态退出
    backup:
      plugin: "nav2_behaviors/BackUp"    # 后退行为插件
      backup_speed: 0.025               # 后退速度,单位:m/s(2.5cm/s)
      backup_distance: 0.15              # 后退距离,单位:米(15cm)
      simulate_ahead_time: 2.0          # 前瞻仿真时间,单位:秒

    # 定向移动行为 - 沿指定方向直线移动
    drive_on_heading:
      plugin: "nav2_behaviors/DriveOnHeading"  # 定向移动行为插件
      simulate_ahead_time: 1.0              # 前瞻仿真时间,单位:秒

#=============================================================================
# 6. 航点跟随配置
#=============================================================================
# Waypoint Follower - 航点跟随器
# 作用:按顺序导航到多个航点,支持巡逻、巡检等任务
waypoint_follower:
  ros__parameters:
    # 基础配置
    loop_rate: 20.0          # 循环频率,单位:Hz
    stop_on_failure: false   # 遇到失败时是否停止,false表示继续尝试下一个航点
    waypoint_task_executor_plugin: "wait_at_waypoint"  # 航点任务执行器插件

    # 航点等待配置 - 到达每个航点后的行为
    wait_at_waypoint:
      plugin: "nav2_waypoint_follower::WaitAtWaypoint"  # 等待插件
      enabled: True                    # 启用等待功能
      waypoint_pause_duration: 0       # 等待时间,单位:秒,0表示不等待

#=============================================================================
# 7. 局部代价地图配置
#=============================================================================
# Local Costmap - 局部代价地图
# 作用:实时构建机器人周围的局部障碍物地图,用于局部路径规划和避障
# 特点:使用滚动窗口,随机器人移动而更新
local_costmap:
  local_costmap:
    ros__parameters:
      # 基础配置
      update_frequency: 5.0      # 更新频率,单位:Hz,每200ms更新一次
      publish_frequency: 2.0     # 发布频率,单位:Hz,每500ms发布一次
      global_frame: map         # 全局坐标系
      robot_base_frame: base_link  # 机器人基座坐标系
      use_sim_time: false       # 不使用仿真时间
      rolling_window: true      # 启用滚动窗口,地图随机器人移动
      
      # 地图尺寸配置
      width: 10                 # 地图宽度,单位:米(10米×10米窗口)
      height: 10                # 地图高度,单位:米
      resolution: 0.05          # 地图分辨率,单位:米/格(5cm精度)
      transform_tolerance: 0.5  # TF变换容差,单位:秒
      
      # 机器人模型配置
      footprint: "[ [0.14, 0.14], [-0.14, 0.14], [-0.14, -0.14], [0.14, -0.14] ]"  # 机器人足迹,28cm×28cm正方形
      plugins: ["voxel_layer", "inflation_layer"]  # 启用的图层插件

      # 膨胀层配置 - 在障碍物周围添加安全边界
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"  # 膨胀层插件
        cost_scaling_factor: 3.0    # 代价缩放因子,越大膨胀效果越明显
        inflation_radius: 0.55       # 膨胀半径,单位:米(55cm安全距离)
        # 使用 footprint,不再写 robot_radius

      # 体素层配置 - 处理3D激光雷达数据,构建3D障碍物地图
      voxel_layer:
        plugin: "nav2_costmap_2d::VoxelLayer"      # 体素层插件
        enabled: True               # 启用体素层
        publish_voxel_map: True     # 发布体素地图,用于调试
        origin_z: -1.0              # Z轴原点,单位:米
        z_resolution: 0.2           # Z轴分辨率,单位:米
        z_voxels: 16                # Z轴体素数量
        max_obstacle_height: 2.0    # 最大障碍物高度,单位:米
        mark_threshold: 0            # 标记阈值
        observation_sources: laser_scan  # 观测源列表
        
        # 激光雷达观测配置
        laser_scan:
          topic: /scan              # 激光雷达话题
          max_obstacle_height: 2.0    # 最大检测高度,单位:米
          clearing: True            # 启用清除功能,清除已消失的障碍物
          marking: True             # 启用标记功能,标记新检测到的障碍物
          data_type: "LaserScan"      # 数据类型
          raytrace_max_range: 3.0     # 射线追踪最大范围,单位:米
          raytrace_min_range: 0.0     # 射线追踪最小范围,单位:米
          obstacle_max_range: 2.5     # 障碍物检测最大范围,单位:米
          obstacle_min_range: 0.0     # 障碍物检测最小范围,单位:米
          reliability: best_effort    # 可靠性策略,尽力而为
          durability: volatile        # 持久性策略,不保存

#=============================================================================
# 8. 全局代价地图配置
#=============================================================================
# Global Costmap - 全局代价地图
# 作用:存储静态地图和全局障碍物信息,用于全局路径规划
# 特点:覆盖整个地图区域,不随机器人移动,主要使用静态地图
# 注意:由于使用FAST-LIO,这里禁用rolling_window,使用全局静态地图
global_costmap:
  global_costmap:
    ros__parameters:
      # 基础配置
      use_sim_time: false        # 不使用仿真时间
      update_frequency: 1.0      # 更新频率,单位:Hz,每1秒更新一次
      publish_frequency: 1.0     # 发布频率,单位:Hz,每1秒发布一次
      global_frame: map         # 全局坐标系
      robot_base_frame: base_link  # 机器人基座坐标系
      rolling_window: false     # 禁用滚动窗口,使用全局固定地图
      
      # 地图尺寸配置 - 覆盖整个环境
      width: 20                 # 地图宽度,单位:米(20米×20米覆盖范围)
      height: 20                # 地图高度,单位:米
      resolution: 0.05          # 地图分辨率,单位:米/格(5cm精度)
      plugins: ["static_layer", "obstacle_layer", "inflation_layer"]  # 启用的图层插件

      # 静态图层配置 - 加载预先构建的静态地图
      static_layer:
        plugin: "nav2_costmap_2d::StaticLayer"  # 静态图层插件
        map_subscribe_transient_local: true   # 使用持久化本地订阅,提高性能

      # 障碍物图层配置 - 处理动态障碍物
      obstacle_layer:
        plugin: "nav2_costmap_2d::ObstacleLayer"  # 障碍物图层插件
        enabled: true              # 启用障碍物图层
        observation_sources: laser_scan  # 观测源列表
        
        # 激光雷达观测配置
        laser_scan:
          topic: /scan              # 激光雷达话题
          max_obstacle_height: 2.0    # 最大检测高度,单位:米
          min_obstacle_height: -0.1   # 最小检测高度,单位:米,负值表示地面以下
          expected_update_rate: 0.0   # 期望更新率,0表示不检查
          observation_persistence: 0.0  # 观测持久性,0表示不保存历史
          marking: true             # 启用标记,标记新检测到的障碍物
          clearing: true            # 启用清除,清除已消失的障碍物
          data_type: "LaserScan"      # 数据类型
          raytrace_max_range: 5.0     # 射线追踪最大范围,单位:米
          raytrace_min_range: 0.0     # 射线追踪最小范围,单位:米
          obstacle_max_range: 2.5     # 障碍物检测最大范围,单位:米
          obstacle_min_range: 0.0     # 障碍物检测最小范围,单位:米
          reliability: best_effort    # 可靠性策略
          durability: volatile        # 持久性策略

      # 膨胀图层配置 - 在障碍物周围添加安全边界
      inflation_layer:
        plugin: "nav2_costmap_2d::InflationLayer"  # 膨胀图层插件
        cost_scaling_factor: 3.0    # 代价缩放因子,控制膨胀强度
        inflation_radius: 0.55       # 膨胀半径,单位:米(55cm安全距离)
        # 使用 footprint,不再写 robot_radius

2.yaml,xml和launch的区别以及语法规则

官方网站:使用 XML、YAML 和 Python 进行 ROS 2 启动文件 --- ROS 2 文档:滚动文档

在ros2手册介绍了对于这三种的区别和相关语法介绍

3.maps---地图参数存放处

这个就是存放地图参数的,可以在这里修改地图参数

复制代码
#=============================================================================
# MID-360 导航地图配置文件
#=============================================================================
# 地图元数据文件 - 定义2D占据栅格地图的基本属性
# 作用:为Nav2导航系统提供静态地图信息,用于全局路径规划
# 
# 文件结构说明:
# - map.yaml:本文件,地图元数据配置
# - map.pgm:对应的地图图像文件(缺失,需要生成或提供)
# 
# 坐标系统说明:
# - 地图坐标系:原点在地图左下角,X向右,Y向上
# - 机器人坐标系:base_link,原点在机器人中心
# - 世界坐标系:map,与地图坐标系对齐

#=============================================================================
# 1. 地图图像文件配置
#=============================================================================
# 地图图像文件名,必须与YAML文件在同一目录下
# PGM格式:Portable Gray Map,灰度图像格式
# 像素值含义:
# - 0(黑色):占用(障碍物)
# - 254(白色):空闲(可通行)  
# - 205(灰色):未知(未探索区域)
image: map.pgm

#=============================================================================
# 2. 地图分辨率配置
#=============================================================================
# 地图分辨率,单位:米/像素
# 含义:地图中每个像素代表的实际距离
# 0.05 = 5cm精度,即每个像素对应现实世界中的5厘米
# 精度选择考虑:
# - 0.02-0.05m:高精度,适合室内精细导航
# - 0.05-0.1m:中等精度,平衡性能和精度
# - 0.1-0.5m:低精度,适合室外大场景
resolution: 0.05

#=============================================================================
# 3. 地图原点配置
#=============================================================================
# 地图原点在世界坐标系中的位置
# 格式:[x, y, yaw],单位:米、米、弧度
# 含义:地图左下角像素(0,0)对应的世界坐标
# [-10.0, -10.0, 0.0]:地图中心在世界坐标系原点
# 计算关系:
# - 地图宽度 = 图像宽度 × resolution
# - 地图高度 = 图像高度 × resolution  
# - 世界坐标范围:x∈[-10, 10],y∈[-10, 10] → 20m×20m区域
origin: [-10.0, -10.0, 0.0]

#=============================================================================
# 4. 图像反转配置
#=============================================================================
# 是否反转图像像素值
# 0:不反转,保持原值(推荐)
# 1:反转,黑变白,白变黑
# 反转后的含义:
# - 0→254:占用→空闲
# - 254→0:空闲→占用
# - 205→205:未知→未知(不变)
negate: 0

#=============================================================================
# 5. 占用阈值配置
#=============================================================================
# 占用阈值,范围:0.0-1.0
# 含义:像素值被判断为占用的概率阈值
# 计算:概率 = (255 - 像素值) / 255
# 0.65 = 65%,即像素值 ≤ 89 时判断为占用
# 调参建议:
# - 保守值(0.6-0.7):更安全,避免碰撞
# - 激进值(0.4-0.6):更灵活,可通过狭窄空间
occupied_thresh: 0.65

#=============================================================================
# 6. 空闲阈值配置
#=============================================================================
# 空闲阈值,范围:0.0-1.0
# 含义:像素值被判断为空闲的概率阈值
# 计算:概率 = (255 - 像素值) / 255
# 0.25 = 25%,即像素值 ≥ 191 时判断为空闲
# 阈值关系:必须满足 free_thresh < occupied_thresh
# 中间区域(25%-65%):未知状态
free_thresh: 0.25

#=============================================================================
# 7. 地图模式配置
#=============================================================================
# 地图解释模式
# trinary:三值模式(推荐)
#   - 像素值 > occupied_thresh → 占用(100)
#   - 像素值 < free_thresh → 空闲(0)
#   - 其他 → 未知(-1)
# scale:缩放模式(不推荐)
#   - 直接按比例映射到0-100
# raw:原始模式(不推荐)
#   - 直接使用像素值作为代价值
mode: trinary

#=============================================================================
# 8. 使用说明和调参建议
#=============================================================================
# 
# 使用场景:
# - 室内导航:resolution=0.05,阈值适中
# - 室外导航:resolution=0.1-0.2,阈值保守
# - 动态环境:降低阈值,增加未知区域
#
# 性能优化:
# - 降低分辨率(0.1m)可提高规划速度
# - 减小地图尺寸可减少内存占用
# - 调整阈值可影响导航行为
#
# 故障排查:
# - 地图不显示:检查image路径是否正确
# - 定位失败:确认origin设置是否准确
# - 路径规划异常:验证阈值设置是否合理
#
# 与FAST-LIO集成:
# - 确保坐标系一致(map、odom、base_link)
# - 地图原点应与SLAM初始位置匹配
# - 定期更新地图以反映环境变化

4.rviz---这个可以打开rviz之后,配置完成之后在左上角点击保存即可

至于rviz的每一个摁键,都有什么作用

参考文档:ROS学习------RViz简介与基础使用方式-CSDN博客

5.launch文件--这个很重要,可以一下子启动很多个节点

参考教程:ROS2基础教程 - 10 Launch - For技术栈

其实这个配置和那些xml,yaml文件差不多,只不过是换成了python,的这种格式

想调用什么包可以直接在这里直接配置就可以了,非常方便

6.src文件---最重要的就是这个文件了

存放重要的代码的位置,放点云处理代码,初始化位置代码等等,根据自己的需求来书写

相关推荐
小白同学_C5 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖5 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
鲁邦通物联网7 小时前
架构拆解:如何构建支持室外内外网络切换的机器人梯控中间件?
机器人·机器人梯控·agv梯控·机器人乘梯·机器人自主乘梯·agv机器人梯控
默|笙9 小时前
【Linux】fd_重定向本质
linux·运维·服务器
大江东去浪淘尽千古风流人物9 小时前
【SLAM】Hydra-Foundations 层次化空间感知:机器人如何像人类一样理解3D环境
深度学习·算法·3d·机器人·概率论·slam
陈苏同学9 小时前
[已解决] Solving environment: failed with repodata from current_repodata.json (python其实已经被AutoDL装好了!)
linux·python·conda
Hi202402179 小时前
Apollo2NuScenes数据转换工具概要设计
自动驾驶·apollo
“αβ”9 小时前
网络层协议 -- ICMP协议
linux·服务器·网络·网络协议·icmp·traceroute·ping
不爱学习的老登10 小时前
Windows客户端与Linux服务器配置ssh无密码登录
linux·服务器·windows