Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
jazzy

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
kilted

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
rolling

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

automatika_embodied_agents package from automatika_embodied_agents repo

automatika_embodied_agents

ROS Distro
humble

Package Summary

Version 0.5.1
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/automatika-robotics/ros-agents.git
VCS Type git
VCS Version main
Last Updated 2026-02-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

agents

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
EmbodiedAgents Logo
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![ROS2](https://img.shields.io/badge/ROS2-Humble%2B-green)](https://docs.ros.org/en/humble/index.html) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?logo=discord&logoColor=white)](https://discord.gg/B9ZU6qjzND) [![简体中文](https://img.shields.io/badge/简体中文-gray.svg)](docs/README.zh.md) [![日本語](https://img.shields.io/badge/日本語-gray.svg)](docs/README.ja.md) **The production-grade framework for deploying Physical AI** [**Installation**](#installation) | [**Quick Start**](#quick-start) | [**Documentation**](https://automatika-robotics.github.io/embodied-agents/) | [**Discord**](https://discord.gg/B9ZU6qjzND)

Overview

EmbodiedAgents enables you to create interactive, physical agents that do not just chat, but understand, move, manipulate, and adapt to their environment.

Unlike standard chatbots, this framework provides an orchestration layer for Adaptive Intelligence designed specifically for autonomous systems in dynamic environments.

Core Features

  • Production Ready Designed for real-world deployment. Provides a robust orchestration layer that makes deploying Physical AI simple, scalable, and reliable.

  • Self-Referential Logic Create agents that are self-aware. Agents can start, stop, or reconfigure their components based on internal or external events. Trivially switch planners based on location, or toggle between cloud and local ML (See: Gödel machines).

  • Spatio-Temporal Memory Utilize embodiment primitives like hierarchical spatio-temporal memory and semantic routing. Build arbitrarily complex graphs for agentic information flow. No need to use bloated “GenAI” frameworks on your robot.

  • Pure Python, Native ROS2 Define complex asynchronous graphs in standard Python without touching XML launch files. Under the hood, it is pure ROS2—fully compatible with the entire ecosystem of hardware drivers, simulation tools, and visualization suites.


Quick Start

EmbodiedAgents provides a pythonic way to describe node graphs using Sugarcoat.

Copy the following recipe into a python script (e.g., agent.py) to create a VLM-powered agent that can answer questions like “What do you see?”.

from agents.clients.ollama import OllamaClient
from agents.components import VLM
from agents.models import OllamaModel
from agents.ros import Topic, Launcher

# 1. Define input and output topics
text0 = Topic(name="text0", msg_type="String")
image0 = Topic(name="image_raw", msg_type="Image")
text1 = Topic(name="text1", msg_type="String")

# 2. Define a model client (e.g., Qwen via Ollama)
qwen_vl = OllamaModel(name="qwen_vl", checkpoint="qwen2.5vl:latest")
qwen_client = OllamaClient(qwen_vl)

# 3. Define a VLM component
# A component represents a node with specific functionality
vlm = VLM(
    inputs=[text0, image0],
    outputs=[text1],
    model_client=qwen_client,
    trigger=text0,
    component_name="vqa"
)

# 4. Set the prompt template
vlm.set_topic_prompt(text0, template="""You are an amazing and funny robot.
    Answer the following about this image: {{ text0 }}"""
)

# 5. Launch the agent
launcher = Launcher()
launcher.add_pkg(components=[vlm])
launcher.bringup()

Note: Check out the Quick Start Guide or dive into Example Recipes for more details.


Complex Component Graphs

The quickstart example above is just an amuse-bouche of what is possible with EmbodiedAgents. We can create arbitrarily sophisticated component graphs and configure the system to change or reconfigure itself based on events, both internal or external to the system. Check out the code for the following agent here.

File truncated at 100 lines [see the full file](https://github.com/automatika-robotics/ros-agents/tree/main/./README.md)
CHANGELOG

Changelog for package automatika_embodied_agents

0.5.1 (2026-02-16)

  • (feature) Adds a record_video action to the Vision component
  • Takes specific input topic name and duration to record video
  • (feature) Adds a take_picture action to the vision component
  • (feature) Adds arbitrary action execution to router
  • (feature) Adds handling of topic and action lists in semantic router
  • (refactor) Makes action methods in Vision component use extra_callback to avoid starvation
  • (refactor) Increases default max new tokens param for llm/vlm configs
  • (refactor) Makes changes for new api of events/actions in sugar
  • (fix) Fixes semantic router handling of action routes based on new api
  • (fix) Fixes warmup for model components
  • (chore) Adds think option for ollama models
  • (chore) Adds proper docstrings to exposed methods and classes
  • (docs) Updates model definitions in examples
  • (docs) Adds new prompt for llms.txt and new tutorial intros
  • (docs) Fix incorrect import in docs
  • (docs) Updates installation instructions
  • Contributors: ahr, mkabtoul

0.5.0 (2026-01-19)

  • (docs) Adds supported types table and component runtype in basics
  • (docs) Adds VLA tutorial to docs and refactors them
  • (docs) Adds tutorials and examples for using events/fallbacks
  • (refactor) Enables health broadcast by default
  • (feautre) Adds feature for passing additional model clients to components Component can switch model clients based on events
  • (feature) Adds external events as component triggers for certain components that can be run in a timed way
  • (feature) Adds stt and tts endpoints and generic model wrappers for the generic http client (openai compatible)
  • (feature) Enables support for tool calls in generic http client
  • (feature) Adds llms.txt in docs
  • (docs) Adds explanation of both routing modes to semantic router docs
  • (feature) Adds LLM based agentic routing to semantic router
  • (feature) Adds timeout for event based termination if the event doesnt happen within max_timesteps
  • (feature) Create observation spec form mapping dicts if dataset info.json is not provided
  • (feature) Adds publisher for joint state msg
  • (feature) Adds parameter to regulate observation sending rate
  • (fix) Adds various fixes for running in multiprocessing (vla)
  • (feature) Adds dynamically adjusting loop rate to action server (vla)
  • (feature) Adds termination logic to the VLA action server
  • (feature) Adds capping of actions based on joint limits before publishing
  • (feature) Adds action sending in VLA for multiple datatypes
  • (feature) Adds a setter for passing an external aggregation function
  • (feature) Adds mapping between LeRobot dataset keys and robot urdf and topics
    • Adds warning and errors for mapped keys, topics
    • Adds creation of input for VLA
    • Adds action receiving and aggregation
  • (feature) Adds utility for reading joint limits from URDF files/urls
    • Adds mapping utility function in internal joint state class
  • (fix) Adds destruction of stream timer if its created for async websocket clients
  • (docs) Adds documentaion for lerobot client
  • (feature) Adds an async grpc client for lerobot
  • (docs) Removes onnxruntime as a mandatory dependancy, its only required for local models
  • (feature) Adds LeRobotPolicy wrapper in models Adds utility for extracting features and actions from info.json
  • (feature) Implements replacing input topics to handle trigger callbacks
  • (feature) Enables None triggers for Server components
  • (fix) Fixes unnecessary logging causing error before component activation
  • (fix) Fixes deserialization of map layers and routes in multiprocess run
  • Contributors: ahr, mkabtoul

0.4.3 (2025-11-07)

  • (docs) Adds instructions for using the dynamic web UI
  • (chore) Removes tiny web client
  • (fix) Removes StreamingString as input option for LLM/MLLM
  • (feature) Adds logging output from StreamingString in the UI
  • (chore) Adds warning for using templates with StreamingString
  • (chore) Adds alias VLM for MLLM component
  • (fix) Adds detections as handled output in mllm component
  • (feature) Adds callback for points of interest msg
  • (feature) Adds ui callback for rgbd images
  • (docs) Updates docs for planning model example
  • (fix) Fixes publishing images as part of detection msgs
  • (refactor) Updates callbacks for video and rgbd type messages
  • (feature) Adds handling of additional types from other sugar derived packages in agent's components
  • (feature) Adds UI element definitions for custom types
  • (feature) Adds ui callbacks for Detections and DetectionsMultiSource
  • (feature) Adds utility for drawing images with bounding boxes
  • (fix) Fixes passing topic from sugar derived packages to agents

File truncated at 100 lines see the full file

Recent questions tagged automatika_embodied_agents at Robotics Stack Exchange