OmniSimulator API Reference
This section provides comprehensive API documentation for the OmniSimulator text-based simulation engine.
Core Engine
SimulationEngine
- class OmniSimulator.core.engine.SimulationEngine(config: Dict[str, Any] | None = None, scene_abilities: List[str] = None)[source]
Bases:
object模拟引擎类 - 整个模拟器的核心控制器
- __init__(config=None)[source]
Initialize the simulation engine with optional configuration.
- Parameters:
config (dict or None) – Configuration dictionary or None for defaults
- __init__(config: Dict[str, Any] | None = None, scene_abilities: List[str] = None)[source]
初始化模拟引擎
- Parameters:
config – 全局配置字典,可选
scene_abilities – 场景特定的能力列表,用于动态注册需要工具的动作
- initialize(scene_file: str, agent_file: str | None = None) bool[source]
初始化模拟器 :param scene_file: 场景文件路径 :param agent_file: 智能体文件路径(已废弃,不再使用)
- Returns:
是否成功初始化
- Return type:
- initialize_with_task(task_file: str) bool[source]
使用任务文件初始化模拟器(包括场景和智能体)
- Parameters:
task_file – 任务文件路径
- Returns:
是否成功初始化
- Return type:
- initialize_with_data(data: Dict[str, Any]) bool[source]
使用数据字典初始化模拟器
- Parameters:
data –
包含场景、任务和动作配置的数据字典 格式: {
’scene’: scene_data, # 场景数据 ‘task’: task_data, # 任务数据 (可选) ‘actions’: action_config_data # 动作配置数据 (可选)
}
- Returns:
是否成功初始化
- Return type:
- load_agents(agents_config: List[Dict[str, Any]]) bool[source]
加载智能体配置
- Parameters:
agents_config – 智能体配置列表
- Returns:
是否成功加载
- Return type:
- process_command(agent_id: str, command: str)[source]
处理智能体的命令
- Parameters:
agent_id – 智能体ID
command – 命令字符串
- Returns:
(执行状态, 反馈消息, 结果数据)
- Return type:
Tuple
- get_agent_info(agent_id: str) Dict[str, Any] | None[source]
获取智能体信息
- Parameters:
agent_id – 智能体ID
- Returns:
智能体信息字典
- Return type:
Dict
- stop_visualization()[source]
停止可视化系统
- get_object_info(object_id: str) Dict[str, Any] | None[source]
获取物体信息
- Parameters:
object_id – 物体ID
- Returns:
物体信息字典
- Return type:
Dict
- get_room_info(room_id: str) Dict[str, Any] | None[source]
获取房间信息
- Parameters:
room_id – 房间ID
- Returns:
房间信息字典
- Return type:
Dict
- update_scene_abilities(new_abilities: List[str])[source]
更新场景能力并重新注册相关动作
- Parameters:
new_abilities – 新的能力列表
- get_task_verification_status() Dict[str, Any] | None[source]
获取任务验证状态
- Returns:
验证状态,如果未启用验证则返回None
- Return type:
Optional[Dict[str, Any]]
Environment Management
EnvironmentManager
- class OmniSimulator.environment.environment_manager.EnvironmentManager(world_state: WorldState, sim_config: Dict[str, Any] | None = None)[source]
Bases:
object环境管理器 - 负责管理模拟环境中的所有实体(房间、物体、家具)
- get_room(room_id)
Retrieve room information by ID.
- __init__(world_state: WorldState, sim_config: Dict[str, Any] | None = None)[source]
初始化环境管理器
- Parameters:
world_state – 世界状态对象
sim_config – 全局配置字典,可选
- load_scene(scene_data: Dict[str, Any]) bool[source]
从场景数据加载环境
- Parameters:
scene_data – 场景数据字典
- Returns:
加载是否成功
- Return type:
- load_scene_old(scene_data: Dict[str, Any]) bool[source]
从场景数据加载环境
- Parameters:
scene_data – 场景数据字典
- Returns:
加载是否成功
- Return type:
- add_object(obj_data: Dict[str, Any], location_id: str) str | None[source]
添加物体到环境
- Parameters:
obj_data – 物体数据字典
location_id – 物体位置ID (房间ID或容器物体ID)
- Returns:
添加成功则返回物体ID,否则返回None
- Return type:
- connect_rooms(room_id1: str, room_id2: str) bool[source]
连接两个房间
- Parameters:
room_id1 – 第一个房间ID
room_id2 – 第二个房间ID
- Returns:
连接是否成功
- Return type:
- get_room_by_id(room_id: str) Dict[str, Any] | None[source]
获取房间数据
- Parameters:
room_id – 房间ID
- Returns:
房间数据字典,如果不存在则返回None
- Return type:
Dict
- get_object_by_id(object_id: str) Dict[str, Any] | None[source]
获取物体数据
- Parameters:
object_id – 物体ID
- Returns:
物体数据字典,如果不存在则返回None
- Return type:
Dict
- get_objects_in_room(room_id: str, recursive: bool = True) List[Dict[str, Any]][source]
获取房间中的所有物体
- Parameters:
room_id – 房间ID
recursive – 是否递归获取容器中的物体
- Returns:
物体数据字典列表
- Return type:
List[Dict]
- get_discovered_objects_in_room(room_id: str, recursive: bool = True) List[Dict[str, Any]][source]
获取房间中的所有已发现物体
- Parameters:
room_id – 房间ID
recursive – 是否递归获取容器中的物体
- Returns:
已发现物体数据字典列表
- Return type:
List[Dict]
- update_object_state(object_id: str, state_updates: Dict[str, Any]) bool[source]
更新物体状态
- Parameters:
object_id – 物体ID
state_updates – 状态更新字典
- Returns:
更新是否成功
- Return type:
- discover_object(object_id: str) bool[source]
将物体标记为已发现
- Parameters:
object_id – 物体ID
- Returns:
更新是否成功
- Return type:
- discover_objects_in_room(room_id: str, percentage: float = 1.0) List[str][source]
随机发现房间中的某个百分比的物体
- Parameters:
room_id – 房间ID
percentage – 要发现的物体百分比 (0.0-1.0)
- Returns:
新发现的物体ID列表
- Return type:
List[str]
- move_object(object_id: str, new_location_id: str) bool[source]
移动物体到新位置(location_id始终为房间ID,on/in关系通过图结构维护)
- get_object_location(object_id: str) Dict[str, Any] | None[source]
获取物体位置
- Parameters:
object_id – 物体ID
- Returns:
位置数据字典,如果物体不存在则返回None
- Return type:
Dict
- find_path(start_room_id: str, end_room_id: str) List[str] | None[source]
查找从一个房间到另一个房间的路径
- Parameters:
start_room_id – 起始房间ID
end_room_id – 目标房间ID
- Returns:
路径房间ID列表,如果不存在路径则返回None
- Return type:
List[str]
- get_object_room(object_id: str) str | None[source]
获取物体所在的房间ID
- Parameters:
object_id – 物体ID
- Returns:
房间ID,如果物体不存在或不在任何房间则返回None
- Return type:
Room
- class OmniSimulator.environment.room.Room(room_id: str, name: str, properties: Dict[str, Any] | None = None)[source]
Bases:
object房间类 - 表示模拟环境中的房间
- get_objects_in_room(room_id)
Get all objects currently in the specified room.
- move_object(object_id, target_location)
Move an object to a new location.
- __init__(room_id: str, name: str, properties: Dict[str, Any] | None = None)[source]
初始化房间
- Parameters:
room_id – 房间唯一ID
name – 房间名称
properties – 房间属性字典,如 {‘size’: ‘large’, ‘type’: ‘kitchen’}
Action System
ActionManager
- class OmniSimulator.action.action_manager.ActionManager(world_state, env_manager, agent_manager, scene_abilities=None)[source]
Bases:
object动作管理器 - 负责动作的创建、验证和执行
这个类整合了原有的ActionParser, ActionValidator和ActionExecutor的功能, 采用了面向对象的设计模式,使代码更清晰、易于维护和扩展。
主要职责: 1. 解析命令字符串,创建动作对象 2. 验证动作是否可以执行 3. 执行动作并返回结果 4. 维护协作动作的状态
- register_action(action_class)
Register a new action class with the system.
- Parameters:
action_class (class) – Action class to register
- agent_action_classes = {}
- __init__(world_state, env_manager, agent_manager, scene_abilities=None)[source]
初始化动作管理器
- Parameters:
world_state – 世界状态对象
env_manager – 环境管理器
agent_manager – 智能体管理器
scene_abilities – 场景支持的能力列表,用于注册不需要工具的属性动作
- classmethod register_ability_action(action_name: str, agent_id: str)[source]
为特定智能体注册能力相关动作(仅限需要工具的动作)
- Parameters:
action_name – 动作名称
agent_id – 智能体ID
- classmethod unregister_ability_action(action_name: str, agent_id: str)[source]
为特定智能体解绑能力相关动作(仅限需要工具的动作)
- Parameters:
action_name – 动作名称
agent_id – 智能体ID
- register_action_class(action_name: str, action_class: Type[BaseAction])[source]
注册单个动作类
- Parameters:
action_name – 动作名称,将自动转为大写
action_class – 动作类,必须是BaseAction的子类
- Returns:
支持链式调用
- Return type:
self
- register_action_classes(action_classes_dict: Dict[str, Type[BaseAction]])[source]
批量注册多个动作类
- Parameters:
action_classes_dict – 动作名称到动作类的映射字典
- Returns:
支持链式调用
- Return type:
self
- is_action_registered(action_name: str) bool[source]
检查动作是否已注册
- Parameters:
action_name – 动作名称
- Returns:
是否已注册
- Return type:
- parse_command(command_str: str, agent_id: str) Tuple[BaseAction | None, str | None][source]
解析命令字符串并创建相应的动作对象
- Parameters:
command_str – 命令字符串,如”GRAB cup_1”
agent_id – 执行动作的智能体ID
- Returns:
- (动作对象, 错误消息)
如果解析成功,错误消息为None;如果解析失败,动作对象为None
- Return type:
Tuple[Optional[BaseAction], Optional[str]]
- validate_action(action: BaseAction) Tuple[bool, str][source]
验证动作是否有效
- execute_action(action: BaseAction) Tuple[ActionStatus, str, Dict[str, Any] | None][source]
执行动作
- Parameters:
action – 动作对象
- Returns:
(执行状态, 反馈消息, 额外结果数据)
- Return type:
Tuple[ActionStatus, str, Optional[Dict]]
BaseAction
- class OmniSimulator.action.actions.base_action.BaseAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
object动作基类 - 所有具体动作类的父类
实现动作的核心功能: 1. 从命令字符串解析生成对应动作 2. 验证动作是否可执行 3. 执行动作并返回结果
- abstractmethod validate()[source]
Validate if the action can be performed.
- Returns:
True if action is valid
- Return type:
- __init__(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
初始化动作
- Parameters:
agent_id – 执行动作的智能体ID
action_type – 动作类型,可选(如果不提供则使用类级别的action_type)
target_id – 动作的目标对象ID,可选
params – 动作的附加参数,可选
- action_type: ClassVar[ActionType] = None
- classmethod from_command(command_str: str, agent_id: str) BaseAction | None[source]
从命令字符串创建动作实例
- Parameters:
command_str – 命令字符串,如”GRAB cup_1”
agent_id – 执行动作的智能体ID
- Returns:
成功则返回动作实例,失败则返回None
- Return type:
Action Types
Basic Actions
- class OmniSimulator.action.actions.basic_actions.GotoAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseActionGOTO动作 - 移动到指定位置
- action_type: ClassVar[ActionType] = 1
- class OmniSimulator.action.actions.basic_actions.GrabAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseActionGRAB动作 - 抓取物体
- action_type: ClassVar[ActionType] = 2
- class OmniSimulator.action.actions.basic_actions.PlaceAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseActionPLACE动作 - 放置物体
- action_type: ClassVar[ActionType] = 3
- class OmniSimulator.action.actions.attribute_actions.AttributeAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseAction基于属性的动作 - 从CSV文件自动导入的动作定义
CSV格式: action_name,attribute,value,requires_tool
当物体的属性名=属性值时,可以执行Action操作,且会把属性值取反
两种类型的动作: 1. requires_tool=true:需要智能体拥有相应能力,动态注册 2. requires_tool=false:不需要工具,在初始化时一次性注册
- action_type: ClassVar[ActionType] = 9
- action_configs = {}
- no_tool_actions = {}
- classmethod register_scene_no_tool_actions_to_manager(action_manager, scene_abilities)[source]
根据场景abilities注册不需要工具的动作到动作管理器
- Parameters:
action_manager – ActionManager实例
scene_abilities – 场景支持的能力列表
- Returns:
支持链式调用
- Return type:
action_manager
- classmethod register_task_specific_actions(action_manager, task_abilities: List[str])[source]
根据任务的abilities动态注册需要工具的动作
- Parameters:
action_manager – ActionManager实例
task_abilities – 任务中指定的能力列表
- class OmniSimulator.action.actions.basic_actions.LookAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseActionLOOK动作 - 观察环境或物体
- action_type: ClassVar[ActionType] = 4
- class OmniSimulator.action.actions.basic_actions.ExploreAction(agent_id: str, action_type: ActionType | None = None, target_id: str | None = None, params: Dict[str, Any] | None = None)[source]
Bases:
BaseActionEXPLORE动作 - 探索当前房间
- action_type: ClassVar[ActionType] = 5
Agent System
Agent
- class OmniSimulator.agent.agent.Agent(agent_id: str, name: str, location_id: str, max_grasp_limit: int = 2, properties: Dict[str, Any] | None = None)[source]
Bases:
object智能体类 - 表示模拟环境中的智能体
- __init__(agent_id: str, name: str, location_id: str, max_grasp_limit: int = 2, properties: Dict[str, Any] | None = None)[source]
初始化智能体
- Parameters:
agent_id – 智能体唯一ID
name – 智能体名称
location_id – 智能体初始位置ID (房间ID)
max_grasp_limit – 最大可抓取物体数量
properties – 其他属性字典,包含max_length/width/height/weight等
- can_carry(object_properties: Dict[str, Any]) Tuple[bool, str][source]
Check if agent can carry the object (weight limit only) Cooperative mode has no weight limit
- update_near_objects(near_id: str | None = None, env_manager=None)[source]
更新智能体可交互的物体集合
- Parameters:
near_id – 靠近的物体ID,如果为None则只保留库存和位置
env_manager – 环境管理器实例,用于查询物体关系
- add_ability_from_object(ability: str, object_id: str) None[source]
从物体获取能力
- Parameters:
ability – 能力名称
object_id – 提供能力的物体ID
- remove_ability_from_object(ability: str, object_id: str) None[source]
移除来自特定物体的能力
- Parameters:
ability – 能力名称
object_id – 提供能力的物体ID
AgentManager
- class OmniSimulator.agent.agent_manager.AgentManager(world_state: WorldState, config: Dict[str, Any] | None = None)[source]
Bases:
object智能体管理器 - 负责管理所有智能体
- __init__(world_state: WorldState, config: Dict[str, Any] | None = None)[source]
初始化智能体管理器
- Parameters:
world_state – 世界状态对象
config – 全局配置字典,可选
- add_agent(agent_data: Dict[str, Any]) str | None[source]
添加智能体
- Parameters:
agent_data – 智能体数据字典
- Returns:
添加成功则返回智能体ID,否则返回None
- Return type:
- get_agent(agent_id: str) Agent | None[source]
获取智能体实例
- Parameters:
agent_id – 智能体ID
- Returns:
智能体实例,如果不存在则返回None
- Return type:
- update_agent(agent_id: str, update_data: Dict[str, Any]) bool[source]
更新智能体数据
- Parameters:
agent_id – 智能体ID
update_data – 更新数据字典
- Returns:
更新是否成功
- Return type:
- move_agent(agent_id: str, new_location_id: str) bool[source]
移动智能体到新位置
- Parameters:
agent_id – 智能体ID
new_location_id – 新位置ID
- Returns:
移动是否成功
- Return type:
- add_to_inventory(agent_id: str, object_id: str) bool[source]
将物体添加到智能体库存
- Parameters:
agent_id – 智能体ID
object_id – 物体ID
- Returns:
添加是否成功
- Return type:
- remove_from_inventory(agent_id: str, object_id: str) bool[source]
从智能体库存移除物体
- Parameters:
agent_id – 智能体ID
object_id – 物体ID
- Returns:
移除是否成功
- Return type:
Utilities
DataLoader
- class OmniSimulator.utils.data_loader.DataLoader(data_dir: str = None)[source]
Bases:
object数据加载器 - 负责加载场景和任务数据
- load_scene(scene_id: str) Dict[str, Any] | None[source]
加载场景数据
- Parameters:
scene_id – 场景ID
- Returns:
场景数据,如果加载失败返回None
- Return type:
Dict[str, Any]
- load_task(task_id: str) Dict[str, Any] | None[source]
加载任务数据
- Parameters:
task_id – 任务ID
- Returns:
任务数据,如果加载失败返回None
- Return type:
Dict[str, Any]
- load_complete_scenario(scenario_id: str) Tuple[Dict, Dict] | None[source]
加载完整的场景数据(场景+任务)
- Parameters:
scenario_id – 场景ID
- Returns:
(场景数据, 任务数据),如果任何一个加载失败返回None
- Return type:
Tuple[Dict, Dict]
- get_scene_abilities(scene_id: str) List[str][source]
获取场景中定义的abilities
- Parameters:
scene_id – 场景ID
- Returns:
能力列表
- Return type:
List[str]
- get_agent_configs(task_id: str) List[Dict[str, Any]][source]
获取任务中定义的智能体配置
- Parameters:
task_id – 任务ID
- Returns:
智能体配置列表
- Return type:
List[Dict[str, Any]]
Task Verifier
任务验证器 - 负责验证子任务的完成情况
该模块提供了TaskVerifier类,用于根据task.json文件中的validation_checks字段 检查子任务是否已完成,并返回详细的验证结果。
- class OmniSimulator.utils.task_verifier.TaskVerificationResult(task_id: str, task_description: str)[source]
任务验证结果类
- class OmniSimulator.utils.task_verifier.TaskVerifier(task_data: Dict[str, Any], env_manager, config: Dict[str, Any] = None)[source]
任务验证器 - 验证子任务完成情况
- __init__(task_data: Dict[str, Any], env_manager, config: Dict[str, Any] = None)[source]
初始化任务验证器
- Parameters:
task_data – 任务数据,来自task.json文件
env_manager – 环境管理器,用于获取物体状态
config – 验证配置
- verify_all_tasks() List[TaskVerificationResult][source]
验证所有任务
- Returns:
验证结果列表
- Return type:
List[TaskVerificationResult]
- verify_task_category(category: str) List[TaskVerificationResult][source]
验证特定类别的任务
- Parameters:
category – 任务类别,如 “direct_command”, “tool_use”等
- Returns:
验证结果列表
- Return type:
List[TaskVerificationResult]
- get_completion_summary() Dict[str, Any][source]
获取任务完成情况摘要
- Returns:
完成情况摘要
- Return type:
Dict[str, Any]
- get_subtask_completion_list() List[bool][source]
获取所有子任务的完成状态列表
- Returns:
按顺序返回每个子任务的完成状态 [True, False, True, …]
- Return type:
List[bool]
- class OmniSimulator.utils.task_verifier.TaskVerifier(task_data: Dict[str, Any], env_manager, config: Dict[str, Any] = None)[source]
Bases:
object任务验证器 - 验证子任务完成情况
- __init__(task_data: Dict[str, Any], env_manager, config: Dict[str, Any] = None)[source]
初始化任务验证器
- Parameters:
task_data – 任务数据,来自task.json文件
env_manager – 环境管理器,用于获取物体状态
config – 验证配置
- verify_all_tasks() List[TaskVerificationResult][source]
验证所有任务
- Returns:
验证结果列表
- Return type:
List[TaskVerificationResult]
- verify_task_category(category: str) List[TaskVerificationResult][source]
验证特定类别的任务
- Parameters:
category – 任务类别,如 “direct_command”, “tool_use”等
- Returns:
验证结果列表
- Return type:
List[TaskVerificationResult]
- get_completion_summary() Dict[str, Any][source]
获取任务完成情况摘要
- Returns:
完成情况摘要
- Return type:
Dict[str, Any]
- get_subtask_completion_list() List[bool][source]
获取所有子任务的完成状态列表
- Returns:
按顺序返回每个子任务的完成状态 [True, False, True, …]
- Return type:
List[bool]
Core Types and Enums
ObjectType
ActionType
ActionStatus
Usage Examples
Basic Simulation Setup
from OmniSimulator.core.engine import SimulationEngine
# Initialize simulation engine
engine = SimulationEngine()
# Load a task
success = engine.initialize_with_task("path/to/task.json")
if success:
# Process commands
result = engine.process_command("go to living room")
print(result)
Agent Interaction
from OmniSimulator.agent.agent import Agent
from OmniSimulator.core.engine import SimulationEngine
# Create simulation
engine = SimulationEngine()
# Create an agent
agent = Agent(agent_id="agent_1", name="Assistant", location_id="living_room")
# Check agent capabilities
can_grab = agent.can_grab("cup")
can_carry = agent.can_carry("table")
print(f"Agent location: {agent.location_id}")
print(f"Agent inventory: {agent.inventory}")
Action Execution
from OmniSimulator.action.action_manager import ActionManager
from OmniSimulator.core.enums import ActionType
# Initialize action manager
action_manager = ActionManager()
# Validate and execute action
validation = action_manager.validate_action(
agent=agent,
action_type="goto",
target="kitchen"
)
if validation.get('valid'):
result = action_manager.execute_action(
agent=agent,
action_type="goto",
target="kitchen"
)
print(f"Action result: {result}")
Environment Queries
from OmniSimulator.environment.environment_manager import EnvironmentManager
# Initialize environment manager
env_manager = EnvironmentManager()
# Get room information
room = env_manager.get_room("living_room")
objects = env_manager.get_objects_in_room("living_room")
print(f"Room: {room.name}")
print(f"Objects in room: {[obj.name for obj in objects]}")
For comprehensive tutorials and examples, see Basic Simulation Examples.