0.5.0
EmbodiedAgents v0.5.0: VLAs and Adaptive Intelligence 🚀
We are thrilled to announce a major update to EmbodiedAgents. This release marks a significant milestone in our mission to deploy Physical AI on real-world robots. We are introducing native support for Vision-Language-Action (VLA) models and the most practical way to use them as part of ROS based robotic systems.
Additionally, this release significantly matures the "Self-referential" capabilities of the framework with tutorials covering the Events/Actions system for building adaptive behavior.
🌟 New Features
🦾 Vision-Language-Action (VLA) Components
We have added full support for VLA models, allowing you to map language instructions and visual inputs directly to robot joint commands using the LeRobot ecosystem. The VLA component is a ROS2 Action Server implementation designed for safety and ease of use. It provides an async chunking client which takes inference outputs and translates them to all ROS2 specific manipulation commands available in ROS2 Control and MoveIt Servo.
- LeRobot Integration: Added a GRPC based
LeRobotClientandLeRobotPolicywrapper to seamlessly load checkpoints (e.g., SmolVLA) from HuggingFace, using LeRobot as an Async Policy Server. - Safety First: Automatic parsing of URDF files to enforce joint limits and cap actions before publishing.
- Easy Mapping: Contains configuration to map dataset keys (from
info.json) directly to your robot's URDF joints and ROS topics. - Action Server Logic: Includes dynamic loop rate adjustment, action aggregation/smoothing, and termination logic (stop based on timesteps or external events).
👉 Tutorials: Controlling Robots with VLAs and Using VLAs with VLMs
🛡️ Adaptive Intelligence: Events & Fallbacks
Agents built with EmbodiedAgents can introspect and adapt. We have simplified the Events/Actions API to make it easier to build components to reconfigure themselves at runtime.
- Model Fallbacks: Components now have a simple interface to hold multiple model clients. A usage example, trigger a switch from a Cloud LLM to a local SLM if the internet cuts out.
- External Triggers: Components can be triggered by external events (e.g., a "Person Detected" event triggers a VLM description) rather than just continuous loop rates.
- Health Broadcasting: Enabled by default to ensure the orchestration layer always knows the state of your graph and can trigger any configured fallback actions.
👉 Tutorials: Learn about Events/Actions in EmbodiedAgents
🧠 Agentic Semantic Routing
The SemanticRouter has been upgraded. While you can still route based on static vector similarity, we have added LLM-based Agentic Routing directly to the SemanticRouter component. This allows the router to reason about the incoming message and dynamically select the best downstream component, enabling more complex and flexible agent graphs. The agent can also switch between routing styles at runtime.
👉 Tutorial: Creating a Semantic Router in EmbodiedAgents
🛠️ Enhancements & Improvements
- Generic HTTP Client Upgrade: Added generic model wrappers and endpoints for STT (Speech-to-Text) and TTS (Text-to-Speech) for OpenAI-compatible APIs.
- Tool Calling: Enabled support for tool calls in the generic HTTP client.
- Documentation for LLMs: Added
llms.txtto the documentation root, making it easier to use Cursor/Windsurf/Copilot with our docs. Just give the code agent the following link: https://automatika-robotics.github.io/embodied-agents/llms.txt - Developer Experience:
- Added a supported types table and component runtype explanations in the basics documentation.
- Removed
onnxruntimeas a mandatory dependency (now optional for local models).
🐛 Bug Fixes
- Fixed deserialization of map layers and routes when running in Multiprocessing mode.
- Fixed stream timer destruction logic for async websocket clients.
- Fixed logging configurations that caused errors prior to component activation.
Full Changelog: 0.4.3...0.5.0