Actions
Actions
Action Plugins
The Action Plugins are core components of OM1. These plugins map high-level decisions from one or more LLMs into concrete physical or digital actions (e.g. moving a robot or generating speech). This page covers the architecture of a typical Action Plugin, the available action types, and how actions are connected to different hardware and software platforms.
Action Orchestrator
The Action Orchestrator is the central component that orchestrates the execution of actions. It manages the states, promise queue, and threads for each action.
Movement (Zenoh)
This plugin is an example of how to use Zenoh to send movement commands to a TurtleBot 4.
Movement (Unitree SDK)
This plugin is an example of how to directly connect to the Unitree python SDK to send movement commands to a Go2 EDU.
Speech and TTS
The Speech and TTS action plugin allows agents to speak using with a text-to-speech (TTS) system.
Adding New Actions
Each action consists of:
- Interface (
interface.py
): Defines input/output types. - Implementation (
implementation/
): Business logic, if any. Otherwise, use passthrough. - Connector (
connector/
): Code that connectsOM1
to specific virtual or physical environments, typically through middleware (e.g. custom APIs,ROS2
,Zenoh
, orCycloneDDS
)
In general, each robot will have specific capabilities, and therefore, each action will be hardware specific. For example, if you are adding support for the Unitree G1 Humanoid version 13.2b, which supports a new movement subtype such as dance_2
, you could name the updated action move_unitree_g1_13_2b
and select that action in your unitree_g1.json
configuration file.