Skip to content

🧩 PGManager:场景信息结构的核心桥梁

PGManager 是 TongSim 中用于管理场景信息的关键模块。它维护了一个来自 Unreal 端的实时结构化数据流称为 Parsing Graph(PG),包含当前场景中所有智能体、物体及其组件的状态与结构。

API 参考

背景:为什么需要 PG?

TongSim 中的 Agent与虚拟世界交互密切依赖于对环境状态的理解。这种状态信息来自多个来源,如物体的位置、类型、能量值、手中物体等。如果每次都单独发送 gRPC 请求获取这些数据:

  • 通信开销大,响应慢
  • 跨组件查询组合繁琐
  • 不支持状态的持续跟踪与对比

为此,TongSim 构建了 PG 模型,通过高频流式更新,全量 + 增量的合并机制,构建出随时可用的场景快照。PGManager 就是这个过程的管理者。

⚙️ 设计理念

  • 接入 Unreal 的 PG 数据流:将底层 gRPC 数据合并为结构清晰、可查询的结构体
  • 面向用户简化查询接口:无需手动处理 component ID、protobuf 结构,只需声明 component 和字段即可提取数据
  • 适应实时场景更新:增量更新合并机制保证性能同时兼容长期运行

🧭 典型使用流程

通常这样使用 PGManager:

  1. 使用 start_pg_stream() 启动与 Unreal 的 PG 数据同步流
  2. 使用 get_pg_metainfo_schema() 获取支持的组件与字段。
  3. 使用 query() 获取你所关心的字段数据(如 pose、energy、手持物体等)
  4. 也可以在任意时刻拉取完整 PG 或单个 subject 的状态做调试或分析

你可以将 PG 理解为 "当前场景的 Ground Truth 缓存",它实时更新,适合用于:

  • 智能体任务规划与环境理解
  • 分析某类物体的分布与属性
  • 基于动画状态、角色姿态做行为推理

📘 补充说明

每次切换关卡(open_level)后,需重新调用 start_pg_stream() 开启数据流

具体用法可参考: TODO