深度剖析AMRAGVrobotics

AMR / AGV 导航与设施地图:Spatial Map 能为机器人团队提供什么(以及不能提供什么)

Spatial Map 不是车队管理系统:它为 AMR/AGV 团队提供以 GeoJSON 导出的墙、门、货架和通道等设施几何,一个在浏览器中运行的路线检查,以及显示机器人实时位置的地图。

阅读约 9 分钟发布于 更新于 作者 Spatial Map team
3D 中的 Acme Warehouse 演示仓库:货架、叉车通道、月台门和员工标记 —— 路线正是根据这些墙、门和货架计算出来的

地图能为车队做什么、不能做什么

Spatial Map 实际上如何计算路线

这里没有手工维护的节点和边构成的图。你请求一条路线时,Spatial Map 会在当前楼层铺一张 25 厘米单元的网格,并根据该处绘制的内容把每个单元标为可通行或阻塞。空地 —— 你以区域形式画出的房间、分区和通道 —— 可以通行。线和墙按墙厚阻挡。每扇门会在它所在的墙上开出缺口。每个货位都是障碍。墙和货架周围留有约 0.3 米间隙,因此窄于约 0.6 米的缝隙视为不通。随后 A* 找出最短的可通行路径,并把它拉直、在每条通道中居中。

设施图纸 → 可通行网格 → A* 路径空地可通行,墙和货位阻挡,门开出缺口;A* 在 25 厘米网格上找到最短路径。

路线只在一个楼层内计算。楼梯、电梯和扶梯会在地图上绘制并标注,但搜索不会经过它们,也没有“优先电梯”的选项。跨楼层的行程是两条路线:一条到一楼的电梯,一条从下一层的楼梯平台出发。完整规则见导航文档。

几何只画一次

在 Acme Warehouse 演示中,这部分工作已经完成:17 个货架和 33 扇门放在描好的平面图上,所以从收货区到某个拣货面的路线预览会沿货架之间的叉车通道走,而不会穿过货架。对你自己的场地:

  1. 1
    用线画墙和通道

    使用 Aisle / Line 工具(L)或 Magic walls(W),后者会围绕你选中的区域生成墙。线在路线计算中是障碍,按墙厚处理。只存在于平面图图片中的墙,在你画出来之前不会阻挡任何东西。

  2. 2
    把门放在墙上

    Door 工具(D)通过墙上的两个门框点放置一扇门。每扇门都会开出路线可以穿过的缺口;墙上没有门的房间无法到达。

  3. 3
    用 Rack 工具画货架

    按 G。每个货位都是障碍,所以路线会走货架之间的通道。

  4. 4
    用区域画房间和分区

    使用 Area 工具(P)。区域是地面空间,不是障碍。你可以给区域设置角色(Zone、Office、Storage…)用于标注,但角色不会改变路线计算:没有“禁行”或“仅限机器人”这样的角色。

  5. 5
    用 Route preview 检查

    在编辑器中按 N,点击起点和终点。“No path found”通常意味着缺了一扇门或门不在墙上;Directions 面板会显示距离、步行时间和逐步指引。在机器人团队看到地图之前先做这一步。

把几何交给车队

Spatial Map 不通过 API、SDK 或车队管理系统连接器开放路线计算,也不发布导航图。它给机器人团队的是源几何。在编辑器中,Data 菜单里的导出会打开 Export shapes…,可将设施写成 GeoJSON(FeatureCollection,每个要素的类型在 properties.kind 中,并带完整几何)、JSON、Excel 或 CSV —— 可以导出全部、指定类型(线和墙、门、货架、区域、楼梯…)或仅导出选中内容。

json·Export shapes… 导出的 GeoJSON 文件节选(示例数值,省略配置字段)
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": { "type": "LineString", "coordinates": [[-81.70061, 41.50012], [-81.70002, 41.50013]] },
      "properties": { "id": 412, "kind": "line", "name": "North wall", "floorPlanId": 48, "rotation": 0 }
    },
    {
      "type": "Feature",
      "geometry": { "type": "LineString", "coordinates": [[-81.70041, 41.50012], [-81.70037, 41.50012]] },
      "properties": { "id": 88, "kind": "door", "name": "Dock door 3", "floorPlanId": 48, "rotation": 0 }
    }
  ]
}

在地图上展示车队 —— 是监控,不是控制

Spatial Map 在日常工作中真正有用的是可见性。只要你的车队管理系统或中间件能报告每台机器人在哪里,地图就能把它们显示在已有的货架、人员和库存旁边:

  1. 1
    为车队建一张数据表

    在 Tables 中新建一张表,比如“Forklifts”或“AMRs”,类型选 Asset (mobile)。它自带标准列 —— 一个外部编码加经度和纬度 —— 电量、状态或任务等字段由你添加(数据表)。

  2. 2
    写入位置

    用数据表的写入 API 从中间件推送数据行 —— 每张表一个令牌,批量 upsert 每次最多 1,000 行,默认每个令牌每分钟 60 次请求 —— 或者让数据表按计划轮询一个 REST 接口(轮询大约每分钟执行一次)。这是近实时的可见性,不是控制回路。

  3. 3
    关联到设施

    添加数据链接:用 Live location marker 把每台机器人放在它的坐标上,用 Movement trails 画出最近的轨迹,或用 Historical movement 在地图底部的播放器中回放数据表的变更记录(数据链接)。

  4. 4
    为作业出报表

    把任务也记录到数据表中。Acme Warehouse 演示有一份 Pick Events 日志,每个事件都带一台叉车,它的 Forklift Utilization 报表据此生成各叉车行程的环形图 —— 同一个向导也适用于机器人任务。

为移动资产创建数据表
Acme Corp 的 Create new table 页面:表名字段的示例为 e.g. Forklifts, Cameras, Shipments,类型包括 Polygon / area、Circle、Marker / POI、Asset (mobile)、Camera、Sensor、Shipment、RFID tag 和 Streaming / batch replay,初始字段为 External code 和 Longitude
Acme Corp 的 Create new table 页面:表名字段的示例为 e.g. Forklifts, Cameras, Shipments,类型包括 Polygon / area、Circle、Marker / POI、Asset (mobile)、Camera、Sensor、Shipment、RFID tag 和 Streaming / batch replay,初始字段为 External code 和 Longitude

可以期待什么

25 cm
路线网格单元尺寸
≈ 0.3 m
墙和货架周围的间隙
1 层
每条路线 —— 不搜索楼梯和电梯
GeoJSON
面向机器人工具的几何导出

同一套路线计算面向人的一面 —— 查看器中的 Navigate 按钮、步行时间、逐步指引 —— 请阅读带逐步指引的室内导航。机器人周边的运营管理,请参阅面向仓库的 Spatial Map。

让数据落到该在的平台上。

Spatial Map 把电子表格、传感器数据流和 CAD 图纸融合成一张实时的 3D 场地视图 —— 无需安装,七天免费试用。

在线演示

继续阅读