应用结构
python
import asyncio
import fastsim
async def main() -> None:
async with fastsim.app("run.yaml") as simulation:
await simulation.start()
snapshot = await simulation.state()
targets = await simulation.control.targets()
print(snapshot, targets)
asyncio.run(main())
上下文负责最终 close,但业务代码仍应显式处理 start、Operation 结果、取消和超时。不要从 Application 中提取后端原生对象并在外部线程操作。
按能力选择客户端
scene:catalog、state、pose/drag/attach 等受控场景操作。frames:frame catalog、lookup 与 transform。geometry:规划几何能力、catalog、transform 与资源读取。kinematics:按当前可用 solver 执行查询。control:目标发现、joint/track Chunk、Operation 状态和取消。visualization:发布调试几何、metric 与 event。- checkpoint、camera 与 output:按 Run/插件能力出现。
调用前应通过能力与目标发现确认当前部署可用内容。缺少可选能力是明确错误或不可用状态,不应靠捕获任意异常后继续。
并发与超时
API 是异步的,但后端世界仍由单一权威边界串行化。超时限制调用者等待时间,不自动等价于取消物理操作;长操作应保留 Operation 并根据状态决定 cancel 或继续等待。
同步调用
简单脚本可使用 FastSimRun 的同步上下文与生命周期方法。不要在已有 asyncio loop 中嵌套同步门面;服务与 UI 应保持异步 Application。
所有当前签名由源码生成在Python SDK中。