| 名称 | i4h-workflow-scene-edit |
| 版本 | ‘0.7.0’ |
| 描述 | 原地编辑环境场景——对象、相机、任务、成功界限、随机化。当要求编辑场景或要求以编辑模式(–bridge)启动/运行/打开环境时使用,包括刚创建的环境。 |
| 开源协议 | Apache-2.0 metadata: |
| 作者 | ‘Isaac for Healthcare Team isaac-for-healthcare-support@nvidia.com’ tags: - isaac-for-healthcare - i4h - agentic-workflow - scene-edit - environment |
i4h 工作流 — 场景编辑
目的
通过 --bridge 场景编辑会话,原地编辑现有环境场景——移动/缩放/替换对象,调整相机,或调整任务描述、成功界限或随机化。当用户要求编辑场景或要求以编辑模式启动/运行/打开环境时使用;创建全新环境时参见 i4h-workflow-create。
基础代码
这些步骤驱动 i4h-workflows 基础代码(workflows/agentic/ 目录)。如需复用已有检出,设置 I4H_WORKFLOWS 指向其路径;否则会解析当前仓库,或克隆到 ~/i4h-workflows(选择该默认值,无需提示)。所有命令在解析后的仓库根目录下执行。
基础知识
- 默认情况下,场景编辑是仅实时编辑。不要修改源文件,也不要重启 bridge。仅当用户明确要求 bake/save/persist/commit 时才持久化到源文件;退出而不烘焙即保留源码不变。
- 只做被要求做的事。启动编辑模式不等于要编辑;如果用户只说启动/运行,则确认 bridge 就绪后停止并等待指令。
- 保留环境 ID 和场景键。
- 源码路径相对于仓库根目录,并保留 workflows/agentic/ 前缀。
- 所有 bridge 产物(脚本、捕获、日志)放在会话的 RUN_DIR 下,不使用 /tmp。
- 视觉判断:有视觉能力的 CLI 代理直接看图;盲人本地代理用本地 VLM。
编辑生命周期
一次交互式编辑只使用一个 bridge 窗口:启动/复用 bridge,在会话中完成所有实时编辑,需要时收集烘焙状态,最后停止 bridge 再写源码。除非明确要求验证,否则不重新启动验证。
步骤:
- 实时:通过 bridge HTTP API 应用每个编辑,必要时捕获视口。
- 烘焙(仅当用户要求):从 bridge 收集实时状态(GET /object、POST /bake 等),停止 bridge,再写入源码。
- 退出:停止 bridge 的唯一方式是运行 workflows/agentic/arena/stop.sh --env <env>。
- 仅在明确要求时运行 validate-bake.sh 验证。
Bridge 端点
基础 URL: BRIDGE_URL=$(workflows/agentic/arena/run.sh bridge-url --env <env>)。端口默认 8765。
常用端点:
- GET /health:就绪检查
- GET /context:执行全局变量
- GET /objects:列出场景实体
- GET /object?name=<key>:获取实体状态
- GET /cameras:列出 RGB 相机
- POST /capture:保存相机帧/视口为 JPEG
- POST /object/teleport:实时设置刚体/关节姿态
- POST /script:在 Isaac 主循环运行 Python 脚本
- POST /bake:返回当前实时 xform 对应的 Python 片段
编辑矩阵与实时配方
- 移动/旋转刚体:使用 POST /object/teleport,并通过 live 字段验证。
- 移动 true-static XformPrim:通过 /script 修改 xformOp。
- 移动内嵌刚体的 AssetBaseCfg:使用 helpers.move()。
- 调整已添加 prim 大小:删除后重新生成,不要用 xformOp:scale。
- 移动机器人基座:teleport name=robot;浮动基座需采样 10-15 秒确认稳定。
- 添加新 prim:使用 IsaacLab cfg + helpers.move()。
- 切换重力/运动学/质量等:直接修改相应物理属性。
- 交换 USD:修改 Prim References。
- 添加/移除相机:不要实时注册 IsaacLab 传感器,应先选好姿态,再作为环境本地传感器写入源码。
- 修改任务描述、成功规则、随机化范围:通过 /script 或修改对应 YAML/任务文件。
持久接触点(烘焙目标)
- environments/<env>_environment.py:环境接线、机器人姿态。
- assets/<env>.py:场景资产。
- tasks/<env>.py:任务/成功/随机化。
- runtimes/<env>.py:运行时相机/状态/动作。
- config/environments/<env>.yaml:相机、语言指令、数据集映射。
注意事项
- assemble_trocar 仅推理,不要加训练钩子。
- 添加/移除相机时,同时更新数据配置和数据集映射。
验证
烘焙后运行 py_compile、YAML 解析和 dry-run。若用户明确要求完整验证,则运行 local-agent/validate-bake.sh,并要求 RESULT: PASS。
故障排除
- 未设置 .venv:先运行 i4h-workflow-setup。
- bridge 不可达:设置正确 BRIDGE_URL 并等待 ready 日志。
- 对象移动后弹回:可能是内嵌刚体,使用 helpers.move()。
- 实时编辑返回错误:报告原始错误,不要重启 bridge。
最终响应
报告每个 bridge 操作、验证姿态、捕获路径,以及是否已 bake。若烘焙,报告修改的文件、静态检查结果;仅当用户明确要求时报告完整验证结果。