🧩 PGManager:场景信息结构的核心桥梁¶
PGManager 是 TongSim 中用于管理场景信息的关键模块。它维护了一个来自 Unreal 端的实时结构化数据流称为 Parsing Graph(PG),包含当前场景中所有智能体、物体及其组件的状态与结构。
背景:为什么需要 PG?¶
TongSim 中的 Agent与虚拟世界交互密切依赖于对环境状态的理解。这种状态信息来自多个来源,如物体的位置、类型、能量值、手中物体等。如果每次都单独发送 gRPC 请求获取这些数据:
- 通信开销大,响应慢
- 跨组件查询组合繁琐
- 不支持状态的持续跟踪与对比
为此,TongSim 构建了 PG 模型,通过高频流式更新,全量 + 增量的合并机制,构建出随时可用的场景快照。PGManager
就是这个过程的管理者。
⚙️ 设计理念¶
- 接入 Unreal 的 PG 数据流:将底层 gRPC 数据合并为结构清晰、可查询的结构体
- 面向用户简化查询接口:无需手动处理 component ID、protobuf 结构,只需声明 component 和字段即可提取数据
- 适应实时场景更新:增量更新合并机制保证性能同时兼容长期运行
🧭 典型使用流程¶
通常这样使用 PGManager:
- 使用
start_pg_stream()
启动与 Unreal 的 PG 数据同步流 - 使用
get_pg_metainfo_schema()
获取支持的组件与字段。 - 使用
query()
获取你所关心的字段数据(如 pose、energy、手持物体等) - 也可以在任意时刻拉取完整 PG 或单个 subject 的状态做调试或分析
你可以将 PG 理解为 "当前场景的 Ground Truth 缓存",它实时更新,适合用于:
- 智能体任务规划与环境理解
- 分析某类物体的分布与属性
- 基于动画状态、角色姿态做行为推理
📘 补充说明¶
每次切换关卡(open_level)后,需重新调用 start_pg_stream() 开启数据流
具体用法可参考: TODO