ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ROS导航包中的costmap相关配置

2021-06-26 23:03:11  阅读:361  来源: 互联网

标签:包中 map 障碍物 frame global cost 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坐标

标签:包中,map,障碍物,frame,global,cost,ROS,costmap
来源: https://blog.csdn.net/weixin_48162479/article/details/118255948

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有