costmap_common_params.yaml参数解析和修改要点

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: costmap_common_params.yaml参数解析和修改要点

该文件中表明了机器人底盘的尺寸参数和障碍物的膨胀参数 对于具体的机器人来说,要把相应的参数修改成机器人车体一致。 #传感器读数的最大有效高度,单位为 meters;

通常设置为略高于机器人的实际高度,高度是指包含机械臂打直情况下的最大高度。

max_obstacle_height: 0.60  # assume something like an arm is mounted on top of the robot

 

robot_radius对一个圆形的机器人来说,这是机器人的半径,单位是米;对一个非圆形的机器人来说,

你可以用接下来说到的 footprint参数。这里用到的值是 Turtle的原始数据。

robot_radius: 0.15  # distance a circular robot should be clear of the obstacle (kobuki: 0.18)

 

footprint: [[x0, y0], [x1, y1], ... [xn, yn]]  # if the robot is not circular

在列表中的每一个坐标代表机器人的边上的一点,机器人的中心设为[0,0]。测量单位是米。

这在机器人周长上的点要不按照顺时针排列,要不按照逆时针排列。

当机器人非圆形时,先找机器人的旋转中心,即两个轮的中心点设置成(0,0),然后确定机器人摆放方向,x,y为每个robot几何型的每条边的每个顶点。将所有顶点都列到其中。就完成了robot的footprint

footprint: [[0.55, 0.375], [0.55, -0.375],[-0.55, -0.375], [-0.55, 0.375]]

 

图类型,这里为voxel(体素地图)。另一种地图类型为costmap(代价地图)。

这两者之间的区别是前者是世界的3D表示,后者为世界的2D表示。

map_type: voxel

 

障碍物层参数

obstacle_layer:

enabled:              true  #启用

传感器读数的最大有效高度(单位:m)。 通常设置为略高于机器人的高度。 此参数设置为大于全局max_obstacle_height参数的值将会失效。

设置为小于全局max_obstacle_height的值将过滤掉传感器上大于该高度以的点。

max_obstacle_height:  0.6

min_obstacle_height:  0.0

combination_method: 处理obstacle_laye之外的其他层传入数据的行为方式,

枚举型(enum)。可能的取值有:覆盖已有值"Overwrite" (0), 取最大值"Maximum" (1), 什么也不干"Nothing" (99)。“覆盖”仅是“覆盖”其他层的数据,例如使得它们没有生效。 “取最大值”是多数时候需要的。 它提取obstacle_layer或输入数据中提供的数据的最大值。 “Nothing”根本不会改变传入的数据。

#  请注意,这会极大地影响costmap的行为方式,具体取决于您对track_unkown_space的设置。

combination_method:   1

track_unknown_space 如果为false,每个像素具有两种状态之一:

致命障碍(lethal)或自由(free)。 如果为true,则每个像素具有3种状态之一:

致命障碍(lethal),自由(free)或未知(unknown)。

track_unknown_space:  true    #true needed for disabling global path planning through unknown space

这两个参数用来设置代价地图的障碍信息的阈值。

“obstacle_range”更新以机器人为中心,按此数值为半径内的障碍物信息。

将障碍物插入代价地图的最大范围,单位为 meters。

obstacle_range: 2.0

“raytrace_range”更新以机器人为中心,按此数值为半径内的自由空间。

从地图中扫描出障碍物的最大范围,单位为 meters 。

raytrace_range: 5.0

#现在未使用

origin_z z原点,单位为米,仅对voxel地图

#origin_z: 0.0

#z_resolution z分辨率,单位meters/cell;

#z_resolution: 0.2

#z_voxels 每个垂直列中的体素数目,ROS Nav功能包的默认值为10。

#z_voxels: 2

#   unknown_threshold: 15 当整列的voxel是“已知”(``known’’)的时候,含有的未知单元(“unknown”)的最大数量

mark_threshold: 0 整列voxel是“自由”(“free”)的时候,含有的已标记的cell(“marked”)的最大数目。

 

 

publish_voxel_map:  是否发布底层的体素栅格地图,其主要用于可视化。

publish_voxel_map: false

“observation_sources”参数定义了一系列传递空间信息给代价地图的传感器。每个传感器定义在下一行。

 

观察源,我们这里是激光数据(scan)和凸点数据(bump)。观察源列表以空格分割表示,定义了下面参数中每一个 <source_name> 命名空间。

observation_sources:  scan

scan:

data_type: LaserScan

topic: "/scan"

“marking”和“clearing”参数确定传感器是否用于向代价地图添加障碍物信息,

#或从代价地图清除障碍信息,或两者都有。

marking: true

clearing: true

expected_update_rate: 0

注:关于Marking and Clearing:

marking和clearing参数用来表示是否需要使用传感器的实时信息来添加或清除代价地图中的障碍物信息)

代价地图自动订阅传感器主题并自动更新。

每个传感器用于标记操作(将障碍物信息插入到代价地图中),清除操作(从代价地图中删除障碍物信息)或两者操作都执行。

如果使用的是体素层,每一列上的障碍信息需要先进行投影转化成二维之后才能放入代价地图中。

 

#cost_scaling_factor and inflation_radius were now moved to the inflation_layer ns

#膨胀层参数

inflation_layer:

enabled:              true #启用膨胀地图

#   cost_scaling_factor 在膨胀期间应用于代价值的尺度因子。默认值:10。对在内接半径之外的cells、以及在内接半径之内的cells这两种不同的cells, 代价函数的计算公式为:

exp(-1.0 * cost_scaling_factor * (distance_from_obstacle - inscribed_radius)) * (costmap_2d::INSCRIBED_INFLATED_OBSTACLE - 1)

cost_scaling_factor:  10.0  # exponential rate at which the obstacle cost drops off (default: 10)

这里我们设置机器人的占用面积,按机器人坐标设置填入“footprint” 指定的footprint时,机器人的中心被认为是在(0.0,0.0),顺时针和逆时针规范都支持。

robot_radius :是机器人的占用面积为圆形,直接设置半径即可

inflation_radius:设置代价地图膨胀半径。可以理解以机器人为中心膨胀半径为此数值内不能有障碍物出现。

地图上的障碍物的半径,单位为米。如果你的机器人不能很好地通过窄门或其他狭窄的地方,

则稍微减小这个值。相反的,如果机器人不断地撞到东西,则尝试增大这个值。

inflation_radius:     0.1 # max. distance from an obstacle at which costs are incurred for planning paths.

 

static_layer:

enabled:              true

map_topic:            "/map"

 

 

#  附录:

bump:观察源之二:凸点数据。定义了:观察源的数据类型,发布话题,标记和添加障碍物功能及定义传感器源数值的有效范围

data_type: PointCloud2 数据类型为点云

topic: mobile_base/sensors/bumper_pointcloud Topic为mobile_base/sensors/bumper_pointcloud

marking: true 启用标记障碍物功能

clearing: false 关闭清除障碍物功能

min_obstacle_height: 0.0 传感器最低有效读数,以米为单位。

max_obstacle_height: 0.15 传感器读数的最大有效高度,以米为单位。



相关文章
|
3天前
|
JSON 自然语言处理 Java
OpenAI API深度解析:参数、Token、计费与多种调用方式
随着人工智能技术的飞速发展,OpenAI API已成为许多开发者和企业的得力助手。本文将深入探讨OpenAI API的参数、Token、计费方式,以及如何通过Rest API(以Postman为例)、Java API调用、工具调用等方式实现与OpenAI的交互,并特别关注调用具有视觉功能的GPT-4o使用本地图片的功能。此外,本文还将介绍JSON模式、可重现输出的seed机制、使用代码统计Token数量、开发控制台循环聊天,以及基于最大Token数量的消息列表限制和会话长度管理的控制台循环聊天。
31 7
|
6月前
|
Java
解析Java线程池:参数详解与执行流程
解析Java线程池:参数详解与执行流程
67 1
|
3月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
288 2
|
2月前
|
存储 缓存 并行计算
yolov5的train.py的参数信息解析
这篇文章解析了YOLOv5的`train.py`脚本中的参数信息,详细介绍了每个参数的功能和默认值,包括权重路径、模型配置、数据源、超参数、训练轮数、批量大小、图像尺寸、训练选项、设备选择、优化器设置等,以便用户可以根据需要自定义训练过程。
46 0
|
3月前
|
Python
Python 解析 yaml 配置文件
Python 解析 yaml 配置文件
59 0
|
4月前
|
C# 开发者 Windows
震撼发布:全面解析WPF中的打印功能——从基础设置到高级定制,带你一步步实现直接打印文档的完整流程,让你的WPF应用程序瞬间升级,掌握这一技能,轻松应对各种打印需求,彻底告别打印难题!
【8月更文挑战第31天】打印功能在许多WPF应用中不可或缺,尤其在需要生成纸质文档时。WPF提供了强大的打印支持,通过`PrintDialog`等类简化了打印集成。本文将详细介绍如何在WPF应用中实现直接打印文档的功能,并通过具体示例代码展示其实现过程。
398 0
|
4月前
|
存储 Go UED
精通Go语言的命令行参数解析
【8月更文挑战第31天】
50 0
|
4月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
152 0
|
5月前
|
JSON API 数据处理
深度解析京东商品列表数据接口:功能、参数与实战技巧
京东商品列表数据接口让开发者通过HTTP请求获取京东商品详尽列表信息,包括ID、名称、价格等。接口支持参数化搜索(关键词、价格区间等),返回JSON格式数据,便于处理与分析。开发者需注册账号并创建应用以获取访问权限。应用场景涵盖市场调研、商品管理和营销策略制定等,有效提升数据驱动决策能力。
|
4月前
|
安全 数据安全/隐私保护

推荐镜像

更多
下一篇
DataWorks