OmniSimulator.action.action_manager.ActionManager

class OmniSimulator.action.action_manager.ActionManager(world_state, env_manager, agent_manager, scene_abilities=None)[source]

动作管理器 - 负责动作的创建、验证和执行

这个类整合了原有的ActionParser, ActionValidator和ActionExecutor的功能, 采用了面向对象的设计模式,使代码更清晰、易于维护和扩展。

主要职责: 1. 解析命令字符串,创建动作对象 2. 验证动作是否可以执行 3. 执行动作并返回结果 4. 维护协作动作的状态

__init__(world_state, env_manager, agent_manager, scene_abilities=None)[source]

初始化动作管理器

Parameters:
  • world_state – 世界状态对象

  • env_manager – 环境管理器

  • agent_manager – 智能体管理器

  • scene_abilities – 场景支持的能力列表,用于注册不需要工具的属性动作

Methods

__init__(world_state, env_manager, agent_manager)

初始化动作管理器

execute_action(action)

执行动作

get_agent_supported_actions_description(...)

获取智能体支持的所有动作的字符串描述

is_action_registered(action_name)

检查动作是否已注册

parse_command(command_str, agent_id)

解析命令字符串并创建相应的动作对象

process_command(command_str, agent_id)

处理命令字符串,包括解析、验证和执行

register_ability_action(action_name, agent_id)

为特定智能体注册能力相关动作(仅限需要工具的动作)

register_action_class(action_name, action_class)

注册单个动作类

register_action_classes(action_classes_dict)

批量注册多个动作类

unregister_ability_action(action_name, agent_id)

为特定智能体解绑能力相关动作(仅限需要工具的动作)

validate_action(action)

验证动作是否有效

Attributes

agent_action_classes

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:

bool

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]

验证动作是否有效

Parameters:

action – 动作对象

Returns:

(是否有效, 原因消息)

Return type:

Tuple[bool, str]

execute_action(action: BaseAction) Tuple[ActionStatus, str, Dict[str, Any] | None][source]

执行动作

Parameters:

action – 动作对象

Returns:

(执行状态, 反馈消息, 额外结果数据)

Return type:

Tuple[ActionStatus, str, Optional[Dict]]

process_command(command_str: str, agent_id: str) Tuple[ActionStatus, str, Dict[str, Any] | None][source]

处理命令字符串,包括解析、验证和执行

Parameters:
  • command_str – 命令字符串

  • agent_id – 执行命令的智能体ID

Returns:

(执行状态, 反馈消息, 额外结果数据)

Return type:

Tuple[ActionStatus, str, Optional[Dict]]

get_agent_supported_actions_description(agent_ids: List[str]) str[source]

获取智能体支持的所有动作的字符串描述

Parameters:

agent_ids – 智能体ID列表,支持单个或多个智能体

Returns:

包含所有支持动作的描述字符串(英文)

Return type:

str