一、地图层次
注:在上图中,红色
部分代表代价地图中的障碍物,蓝色
部分代表机器人内切半径膨胀的障碍物,红色的多边形
代表机器人的边界(footprint)。为使机器人避免碰撞,机器人的红色边界不能相交于红色部分,机器人的中心点不能相交于蓝色部分。
地图层次
1.Static Map Layer 静态地图层
2.Obstacle Map Layer 障碍物地图层
3.Inflation Layer 膨胀层
4.Other Layers 其它层
论文:基于ROS的室内全向自主导航机器人研究, 2020
二、地图信息配置
(local_costmap) 和 (global_costmap)都需要遵循的配置
costmap_common_params.yaml
inflation_radius: 0.55
此参数将为costmap设置膨胀半径。膨胀半径应该设置为与障碍物之间的最大距离,在这个距离上需要付出代价。例如,将膨胀半径设为0.55米意味着机器人将把所有距离障碍物0.55米及以上的路径视为具有相同的障碍物成本。
observation_sources: laser_scan_sensor point_cloud_sensor
此参数定义了一个传感器列表,这些传感器用空格分隔,这些传感器向costmap传递信息。传感器在下一行中定义。
laser_scan_sensor: {sensor_frame: frame_name, data_type: LaserScan, topic: topic_name, marking: true, clearing: true}
这一行设置了observation_sources中提到的传感器上的参数,本例定义了laser_scan_sensor作为示例。“frame_name”参数应设置为传感器坐标系的名称,“data_type”参数应设置为LaserScan 或PointCloud 这取决于消息主题使用,和“topic_name”应该设置为主题的名称,传感器数据的发布。“marking”和“clearing”参数决定传感器是将障碍物信息添加到costmap中,清除costmap中的障碍物信息,还是或者两者都做。
global_costmap需要遵循的配置
global_costmap_params.yaml
global_costmap:
global_frame: /map
robot_base_frame: base_link
update_frequency: 5.0
static_map: true
local_costmap需要遵循的配置
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