Nav2代价地图层:静态、障碍、体素与膨胀配置

Nav2 代价地图结合了关于移动机器人可能行进位置的多个主张。静态层贡献地图上的占用率,观测层添加并清除动态障碍物,膨胀将几何结构转化为分级净空成本,过滤器则应用如禁止进入或速度限制等规则。最终网格是规划器与控制器共同依赖的接口约定。

在 RViz 中,配置看起来可以很有说服力,但却带有陈旧的观察值、错误的足迹或帧不匹配。只有在其源、时间戳、转换、更新行为和故障响应都可观察到后,才对图层进行调优。否则,参数更改可能会隐藏症状,而非纠正环境模型。

请将此指南与 机器人 SLAM 指南TF2 框架指南一起使用。在生产发布前,在代表性的地板、障碍物和交通状况上验证机器人。

将代价地图视为分层环境合同

代价地图不是原始传感器图像。每个插件都会根据声明的帧、尺寸、组合规则和时序,将特定源转换为单元成本。记录哪层拥有映射的墙体、瞬态障碍物、净空、限制区和未知空间,避免两层相互矛盾。

当前 Nav2 Costmap 2D文档 分别描述插件和过滤器。在配置审查中保持区分:普通插件贡献于合并代价地图,而过滤器则在分层地图之后应用,以处理策略效果,如禁止或限速。

TurtleBot3汉堡,配备激光雷达轮、超声波传感器和裸露电子设备
代价地图质量取决于机器人的占地面积、传感器位置以及模型所代表的环境。来源:Kuscu0,维基共享资源。许可:CC BY-SA 4.0

选择全局和本地地图职责

全局代价地图通常代表稳定全局框架下的路线尺度环境,而局部滚动代价地图则提供当前附近的约束以供控制。它们可能使用不同的维度、更新率和观测源。将一个配置复制到两个地图中会浪费资源并混淆故障归属。

对于每张地图,说明其规划消费者、帧、滚动窗口行为、分辨率及最大可接受年龄。全局规划器可能容忍地图更新速度低于本地控制器,但两者都不应使用变换或源新鲜度超过导航契约的网格。

图层或设置主要工作失败症状首次证据
静态层地图占用率路线穿墙或堵住通道开口地图版本与框架
障碍层2D标记与清除暂时对象缺失或持续幽灵扫描年龄与光线追踪
体素层3D观测缓冲高度障碍物处理不当点云和体素设置
膨胀层清场成本偷工减料或无谓绕道覆盖面积与成本梯度
隔水滤波器策略限制机器人进入禁区掩膜对齐和滤波器信息

在调校间隙前冻结机器人几何体

当底座不被圆圈很好地表示时,使用多边形封装。包含可能碰撞的固定突出部分,并定义附件或携带载荷如何更新封装。填充是额外的余裕;它不应补偿因条件变化而产生的物理轮廓错误或定位不确定性。

通过在静止机器人周围放置已知点,并在多个航向处检查碰撞分类,验证几何形状。旋转不对称的足迹可能会暴露直线路径上隐藏的误差。将脚印调整为机械配置,拒绝未知有效载荷形状,而不是假设最小基底。

将静态层配置为版本管理地图证据

静态层通常订阅占用网格,并将映射的结构转移到代价地图中。确认地图主题、框架、持久性策略以及是否预期更新。在收到预期地图前启动的机器人,可能看起来就绪,环境模型为空或旧。

将地图身份和校验和存储在部署记录中。测试替换、重启和地图服务器丢失。决定机器人在静态证据消失时是停止、继续有界间隔,还是降级为其他模式;正确选择取决于本地地图和操作风险。

五阶段 Nav2 costmap层验证工作流程
Costmap的接受需要物理障碍测试,而不仅仅是RViz的外观。来源:Physical AI Lab。

让障碍标记和清除过程可以独立观察

观测层通常标记检测单元并沿传感器射线清除。数据源可以正确标记障碍物,但清除失败,因为光线追踪距离、最小距离、变换时序或无效回波不同。检查这两种操作时,都有一个临时障碍物进出传感器场的每个部分。

设置障碍物和光线追踪范围,基于已验证的传感器性能,而非最大宣传册距离。记录源类型、主题、帧、持久性和预期速率。当源停止时,测量其障碍物证据持续多久,以及持续时间是否符合停止距离假设。

测试受控变更期望映射响应拒绝
标记插入目标栅格单元在限制范围内变为占用状态目标被遗漏或延迟
清理移除目标射线将单元返回允许状态幽灵持续存在,超出极限
源流损失停止信息声明过时的数据策略发生旧网格看起来很现代
变换延迟延迟TF更新被拒绝或被限制错误的障碍已接受
重启重启传感器和代价地图层恢复时没有重复状态未知的缺口被隐藏

只有在高度改变决策时才使用体素数据

体素层可以在将碰撞信息投影到二维之前缓冲三维观测。当障碍物高度和悬垂行为重要时,体素层非常有用,但其垂直起点、分辨率、体素计数和标记阈值会形成另一个模型,必须与机器人身体进行测试。

根据碰撞几何和传感器位置选择障碍物的最小和最大高度。测试低托盘、桌面边缘、叉形和悬垂。当地面移除、稀疏回波或投影阈值丢弃相关结构时, 3D点云无法保证正确的障碍物选择。

通过封装净空和行为调节膨胀

通胀会在接近致命障碍物时赋予更高的成本,因此规划器和控制者可以优先考虑净空。通胀半径定义受影响的邻域,而缩放因子则决定成本下降的速度。这些参数会影响偏好;它们不能取代精确的足迹碰撞检查。

从所需的物理间隙和定位不确定性开始,然后测试走廊、门口和拐角。测量无接触通过率、路径长度和假阻挡。如果机器人在狭窄开口附近振荡,检查几何形状、定位和控制器行为,然后再简单地缩小膨胀。

使用对齐面罩应用禁入和速度策略

代价地图过滤器可以表达策略叠加层,如禁区或速度区。它们的掩码和元数据必须与预期的地图帧、原点和分辨率对齐。即使滤波器插件处于激活状态且无报错,目视可见的错位掩码也可能造成危险的策略缺口。

测试每个边界的两侧,并在地图重新加载后进行测试。记录谁负责规则变更,以及机器人同步规则的速度。将缺失或过时的强制过滤视为准备失败,而非许可使用未过滤的代价地图。

预算更新、发布和转换时机分别进行

更新频率控制地图处理输入的频率;发布频率控制向消费者或可视化发送表示的频率。传感器速率、转换可用性和执行者延迟也影响栅格单元的数据时效。提高发布频率无法使陈旧源证据保持新鲜。

对观测时间戳进行测量,并测量在CPU和网络负载下的到达到地图延迟。跟踪最坏情况和高百分位年龄,而不仅仅是平均速率。为每个所需源定义超时响应,确保控制器不会继续,因为最后显示的网格看起来仍然合理。

将未知空间与确认的自由空间分离

未知意味着系统缺乏证据,而非该区域有人居住或自由。追踪未知空间的选择以及规划器是否能穿越该空间应遵循任务背景。探索、绘制地图的仓库和公共走廊可能需要不同的策略。

练习绘制边界、传感器阴影和新开放区域。报告日志中的未知单元行为和验收结果。将未知转换为自由,可能改善可达性,同时消除解释机器人为何进入未被观察区域的证据。

参数调优前诊断层所有权

当导航失败时,将各个层的输出、合并代价地图、变换、占地、传感器样本和规划器请求保存在一个共同的时间线上。阻塞的路线可能来自静态墙、未清理的观测、膨胀或禁止遮罩;纠正措施因所有者而异。

一次改变一个假设,并在可能的情况下重演相同证据。比较假阳性停车、错过障碍物、路径清理和恢复时间。避免仅凭一次视觉改善的跑步就宣布成功,因为环境变异可能掩盖原始缺陷。

发布带有物理回归套件的代价地图

构建玻璃、深色材料、细腿、低矮物体、悬垂、门、狭窄通道、移动人员和源头失效的试验。包括机器人旋转和载重。验证检测和清除,以及变换或地图在运动中重新启动时的响应。

存储软件版本、插件顺序、参数、地图、传感器固件和测试分发及结果。每当几何、感测、定位或导航插件发生变化时,请使用此发布清单。

评估“Nav2代价地图层:静态、障碍、体素与膨胀配置”时,还应保存模型版本、机器人配置、标定文件、测试日期和全部试验记录。把成功、失败、恢复与人工介入放在同一份数据中,才能区分模型能力、系统接口和现场流程造成的差异。

  • 为每层标明来源、帧和年龄限制。
  • 确认标记和清除是两个不同的行为。
  • 调整策略面罩,摒弃陈旧的强制过滤。
  • 测量与已部署足迹的物理间隙。
  • 保留单个层次的证据以供事件诊断。

常见问题

默认 Nav2 costmap插件有哪些?

当前 Nav2 文档默认在插件列表未覆盖时,默认设置是静态层、障碍层和膨胀层。

全局和局部代价地图应该使用相同的图层吗?

不一定。它们的受众、帧、空间范围、更新率和所需证据可能不同。

通胀会让机器人在物理上变大吗?

不会。它改变了障碍物周围的单元成本。封地和填充描述了碰撞几何和边界。

为什么障碍物被移除后依然存在?

清除可能缺少有效的射线、距离、变换或时间。检查清除应独立于标记。

RViz的代价地图足够接受吗?

不行。验收需要定时体能测试、源损失行为和在代表性条件下的测量许可。

CostMap证据与安全边界

代价地图是一个应用环境模型,而非独立的安全防护装置。验证机器人及工作场所风险的感知、时序与停止防护措施。