ROS:ros-melodic costmap障碍物层参数详解
costmap_2d :: ObservationBuffer用于从传感器接收点云,使用tf将其转换为所需的坐标系,并存储它们直到被请求为止。 大多数用户将创建由costmap_2d :: Costmap2DROS对象自动处理的costmap_2d :: ObservationBuffers,但是有特殊需要的用户可以选择创建自己的对象。
全局过滤参数
这些参数适用于所有传感器。
-
~/max_obstacle_height (double, default: 2.0)
要插入到成本图中的任何障碍物的最大高度(以米为单位)。 该参数应设置为略高于机器人的高度。
-
~/obstacle_range (double, default: 2.5)
插入成本图的障碍物距离机器人的默认最大距离(以米为单位)。 可以在每个传感器的基础上对此进行覆盖。
-
~/raytrace_range (double, default: 3.0)
使用传感器数据从地图上光线追踪障碍物的默认范围(以米为单位)。 可以在每个传感器的基础上对此进行覆盖。
障碍物成本图插件
这些参数由ObstacleCostmapPlugin使用。
-
~/track_unknown_space (bool, default: false)
如果为假,则每个像素都具有以下两种状态之一:致命障碍物或自由状态。 如果为true,则每个像素都具有以下三种状态之一:致命障碍,自由或未知。
-
~/footprint_clearing_enabled (bool, default: true)
如果为true,则机器人足迹将清除(标记为自由)其行进的空间。
-
~/combination_method (enum, default: 1)
更改behavior_layer处理来自其以外的图层的传入数据的方式。 可能的值为“覆盖”(0),“最大值”(1)和“无”(99)。 “覆盖”只是覆盖下面的数据,即不使用它们。 “最大”是您大多数时候想要的。 它占用了barrier_layer或传入数据中提供的最大值。 “无”完全不会更改传入的数据。 请注意,这很大程度上影响了成本图的行为,具体取决于您对track_unkown_space的设置。
有关combining_method和track_unknown_space参数的影响的讨论,请参阅以下有关ROS答案的相关讨论:https://answers.ros.org/question/316191
体素成本图插件
VoxelCostmapPlugin使用以下参数。
-
~/origin_z (double, default: 0.0)
地图的z原点(以米为单位)。
-
~/z_resolution (double, default: 0.2)
地图的z分辨率,以米/单元为单位。
-
~/z_voxels (int, default: 10)
在每个垂直列中,到网格高度的体素数为z_resolution * z_voxels。
-
~/unknown_threshold (int, default: ~/z_voxels)
被视为“已知”的列中允许的未知单元格数。
-
~/mark_threshold (int, default: 0)
列中被视为“空闲”的已标记单元格的最大数量。
-
~/publish_voxel_map (bool, default: false)
是否出于可视化目的发布基础体素网格。
-
~/footprint_clearing_enabled (bool, default: true)
如果为true,则机器人足迹将清除(标记为自由)其行进的空间。
传感器管理参数
-
~/observation_sources (string, default: “”)
用空格分隔的观察源名称列表。 这定义了下面定义的每个<source_name>命名空间。
observation_sources中的每个source_name都定义了一个可以在其中设置参数的名称空间.
-
~/<source_name>/topic (string, default: source_name)
此源输入传感器数据的主题。 默认为源名称。
-
~/<source_name>/sensor_frame (string, default: “”)
传感器原点的坐标系名字。 若为空则尝试从传感器数据中读取坐标系名字。 可以从sensor_msgs / LaserScan,sensor_msgs / PointCloud和sensor_msgs / PointCloud2消息类型中读取该参数。
-
~/<source_name>/observation_persistence (double, default: 0.0)
每个传感器数据保持多长时间,以秒为单位。 0.0只会保留最新的数据。
-
~/<source_name>/expected_update_rate (double, default: 0.0)
期望从传感器读取读数的频率(以秒为单位)。 值0.0将允许两次读取之间有无限的时间。 此参数用作故障保护,以防止传感器故障时导航堆栈不向机器人发出命令。 应将其设置为比传感器的实际速率稍宽的值。 例如,如果我们希望每隔0.05秒从激光器进行一次扫描,则可以将此参数设置为0.1秒,以提供足够的缓冲区并考虑一定量的系统延迟。
-
~/<source_name>/data_type (string, default: “PointCloud”)
与该主题关联的数据类型,目前仅支持“ PointCloud”,“ PointCloud2”和“ LaserScan”。
-
~/<source_name>/clearing (bool, default: false)
是否应将此观察结果用于清除自由空间。
-
~/<source_name>/marking (bool, default: true)
是否应使用此观察来标记障碍物。
-
~/<source_name>/max_obstacle_height (double, default: 2.0)
视为有效的传感器读数的最大高度(以米为单位)。 通常将其设置为略高于机器人的高度。 将此参数设置为大于全局max_obstacle_height参数的值无效。 将此参数设置为小于全局max_obstacle_height的值将过滤掉该传感器中高于该高度的点。
-
~/<source_name>/min_obstacle_height (double, default: 0.0)
传感器读数的最小高度(以米为单位)被视为有效。 通常将其设置为地面高度,但可以根据传感器的噪声模型将其设置为较高或较低。
-
~/<source_name>/obstacle_range (double, default: 2.5)
使用传感器数据将障碍物插入成本图的最大范围(以米为单位)。
-
~/<source_name>/raytrace_range (double, default: 3.0)
使用传感器数据从地图上射线追踪障碍物的最大范围(以米为单位)。
-
~/<source_name>/inf_is_valid (bool, default: false)
允许在“ LaserScan”观察消息中使用Inf值。 Inf值转换为激光最大范围。