用途:该技能聚焦于 Webots Supervisor API,作为场景级的控制层,用于实验编排、强化学习循环和自动化测试。Supervisor 是 Robot 的扩展,所有 Robot API 调用仍适用,并额外提供特权场景图访问与修改能力。基础控制器结构、传感器和执行器 API 应交给 webots-controller-programming,不在本技能范围内。
主要能力:场景树访问(getFromDef、getFromId、getRoot、getSelf);字段读写及 MF 字段的插入、删除、导入;轨迹/状态跟踪(位姿、旋转矩阵、速度、质心、接触点);在分幕式强化学习和回归测试中动态生成、移除、重置对象;仿真模式控制、世界保存/加载/重载以及电影/动画录制;标签显示;世界状态保存与加载。
启用方式:在世界文件中将控制器的 Robot 节点的 supervisor 字段设为 TRUE。Python 使用 from controller import Supervisor 并创建 Supervisor();C 需包含 webots/robot.h 与 webots/supervisor.h,在标准 Robot 控制器的 step 循环内调用 Supervisor 函数。
使用要点:在 step 循环内调用 Supervisor 函数,保持与标准 Robot 控制器相同的循环语义。强化学习/测试编排可用确定性分幕循环:重置仿真或物理,通过字段设置重置实体,推进仿真预热,读取 Supervisor 节点/字段观测,评估成败并保存指标,可选录制电影或动画。
限制与注意事项:世界重载和 PROTO 重新生成后需重新获取节点/字段句柄;通过基节点访问 PROTO 内部得到的字段应视为只读;在世界关闭或重载过渡期间需对 NULL 返回做防护;大型场景建议使用 DEF 命名约定以保证节点检索稳定;重复查询可用位姿/接触点跟踪的 enable API 降低开销。完整 API 覆盖参见 references/supervisor_reference.md。