ROS导航包中的costmap相关配置

costmap2d包介绍:
使用传感器和static map的信息,构建二维的代价地图,用于平面空间导航。
1. 采集传感器信息实时更新costmap栅格,marking and clearing. marking表示加入障碍物,clearing表示可以清除障碍物
    update_frequency: 更新地图的频率
2. 每个栅格的cost: occupied, free, unknown space, 使用阈值区分
    lethal_obstacle cost: occupied
    no_information cost: unknown space
    free_space cost: free
3. costmap需要消耗昂贵的tf资源,需要维持global_frame,robot_base_frame和传感器frame之间的变换
    transform_tolerance: 可以容忍的最大的tf变换延迟时间,如果tf变换超出这个时间,机器人导航会被停止。
4. inflation。膨胀过程中cost从occupied grid逐渐向外随距离减小。
    lethal cost: 表示存在实际障碍物
    inscribed cost: 表示该处grid到实际障碍物距离小于机器人内接半径
    possibly circumscribed cost: 该处grid到障碍物距离小于机器人外接圆半径。
    机器人中心处于该处时,可能会发生碰撞,故称possibly. 该处的cost值会受到inscribed cost和inflation radius的影响。
    freespace cost: 该处grid表示无障碍物
    unknown cost: 该处未知
    
    在possibly circumscribed 和 freespace之间定义着其他类型的cost,这些cost取决于lethal到该处的距离和用户定义的cost衰减函数
5. 有两种初始化costmap方式:
    一种是用户提供static map,如使用map_server; 并结合定位算法如amcl来进行配置
    一种是启用rolling_window 设置width和height
    static_map参数和rolling_window参数两者不可兼得,选其一。
6. 层级划分,layer specifications,每个costmap被划分成了不同layer
    static map layer: 存储地图中不变的部分
    obstacle layer: 存储传感器识别到的障碍物信息
    inflation layer: 存储在lethal附近膨胀导致的cost信息

1. common configuration options
(costmap_common_params.yaml)

# 传感器数据处理相关
obstacle_range: 获取传感器信息的最大范围,只有在该范围内传感器检测到的障碍物才会被放入costmap中
这意味着只会更新处于该范围内的costmap
raytrace_range: 进行raytrace的最远范围,raytrace是检测freespace上是否有障碍物的一种手段
# 传感器配置相关
observation_sources: laser_scan_sensor point_cloud_sensor
laser_scan_sensor: {sensor_frame: 坐标系名称, data_type: LaserScan, topic: 话题名, marking: true, clearing: true}
point_cloud_sensor: {sensor_frame: frame_name, data_type: PointCloud, topic: topic_name, marking: true, clearing: true}

# 设置机器人构型参数,一下两种选其一:
footprint: [[x,y],[...],[...],[...]] 以机器人中心为[0,0]原点,表示机器人四个角的坐标,按照顺时针或逆时针的顺序。
robot_radius: 机器人的半径

# 膨胀半径
inflation_radius: 在该半径范围内,cost会被膨胀机制影响。?一说是在该半径内cost被赋值成obstacle cost


2. global configuration
(global_costmap_params.yaml)
global_costmap:
  global_frame: /map
  robot_base_frame: base_link
  update_frequency: 5.0
  static_map: true

3. local configuration
(local_costmap_params.yaml)
local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.05

每个costmap的参数配置:
# coordinate frame and tf parameters:
    global_frame: /map
    robot_base_frame: base_link
    transform_tolerance:
# rate parameters:
    update_frequency:  地图障碍物更新的频率
    publish_frequency: 地图发布显示的频率
# map management parameters:
    static_map: true
    rolling_window: false

    width: meters
    height: meters
    resolution: meters/cell
    origin_x: map的原点在global frame中的x坐标
    origin_y: map的原点在global frame中的y坐标

上一篇:SAP UI5 sap.viz.ui5.controls.VizFrame 的 aggregation 之一:dataset


下一篇:家庭记账本(一)