|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |
Launch files
Messages
Services
Plugins
Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange
|
automatika_ros_sugar package from automatika_ros_sugar repoautomatika_ros_sugar |
ROS Distro
|
Package Summary
| Version | 0.8.1 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/automatika-robotics/ros-sugar.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-09-13 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Automatika Robotics
Authors
Part of the [EMOS](https://github.com/automatika-robotics/emos) ecosystem [](https://opensource.org/licenses/MIT) [](https://www.python.org/downloads/) [](https://docs.ros.org/en/humble/index.html) [](https://discord.gg/B9ZU6qjzND) **The orchestration layer for event-driven ROS 2 systems** [**EMOS Documentation**](https://emos.automatikarobotics.com) | [**Developer Docs**](https://sugarcoat.automatikarobotics.com) | [**Discord**](https://discord.gg/B9ZU6qjzND)
What is Sugarcoat?
Sugarcoat is the orchestration layer of the EMOS (Embodied Operating System) ecosystem by Automatika Robotics. It is a meta-framework that replaces fragmented ROS2 development with a unified workflow, providing a high-level Python API to build robust lifecycle-managed components and orchestrate them into cohesive, self-healing systems using an event-driven architecture.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
Key Features & Core Pillars
| Feature | Description |
|---|---|
| Smart Components | Every component is a managed lifecycle node (Configure, Activate, Deactivate) out of the box. It features type-safe configurations via attrs and declarative auto-wiring for inputs/outputs. |
| Active Resilience |
Built-in “Immune System” for ROS2 nodes. Components actively report their Health Status (Algorithm, Component, or System failures) and automatically trigger distributed Fallbacks to self-heal without crashing. |
| Event-Driven Behavior | Define global Events (e.g., Event(battery < 10.0)) and Actions in pure, readable Python. These act as triggers that monitor ROS2 topics natively and execute instantly regardless of current system state. |
| Centralized Orchestration | A powerful Launcher acts as a pythonic alternative to ros2 launch. It supports multi-threaded or multi-process execution, actively supervising component lifecycles at runtime. |
| Universal Applications | Robot Plugins act as a translation layer. This allows you to write generic, portable automation logic (recipes) that run on any robot without code changes. |
| Dynamic Web UI | Auto-generates a fully functional web frontend for every topic, parameter, and event instantly. |
Dynamic Web UI for Sugarcoat Recipes
The Dynamic Web UI feature takes system visibility and control to the next level. Built with FastHTML and MonsterUI, it is designed to automatically generate a fully dynamic, extensible web interface for any Sugarcoat recipe, completely eliminating the need for manual front-end development.
Automatic UI Generation in Action
See how the Web UI effortlessly generates interfaces for different types of Sugarcoat recipes:
- Example 1: General Q&A MLLM Recipe A fully functional interface generated for an MLLM agent recipe from EmbodiedAgents, automatically providing controls for settings and real-time text I/O with the robot.
- Example 2: Point Navigation Recipe An example for an automatically generated UI for a point navigation system from Kompass. The UI automatically renders map data, and sends navigation goals to the robot.
What’s Inside?
- Automatic Settings UI: Interfaces for configuring the settings of all Components used in your recipe are generated on the fly.
- Auto I/O Visualization: Front-end controls and data visualizations for UI Inputs and Outputs are created automatically.
- WebSocket-Based Streaming: Features bidirectional, low-latency communication for streaming text, image, and audio messages.
- Responsive Layouts: Input and output elements are presented in clear, adaptable grid layouts.
- Extensible Design: Easily add support for new message types and custom visualizations through extensions.
Documentation
| Resource | URL |
|---|---|
| Usage Docs (EMOS) | emos.automatikarobotics.com |
| Developer Docs | sugarcoat.automatikarobotics.com |
| API Reference | sugarcoat.automatikarobotics.com/apidocs |
Installation
Sugarcoat is available for ROS versions Humble.
Using your Package Manager (Recommended)
On Ubuntu, for example:
sudo apt install ros-$ROS_DISTRO-automatika-ros-sugar
Building from Source
```bash
File truncated at 100 lines see the full file
Changelog for package automatika_ros_sugar
0.8.1 (2026-09-13)
- (fix) Swaps package used in test to avoid new dependencies
- (feature) Adds missing driver to plugin tests
- (fix) Add Launcher check for a requested ros executable/package and raises a clear error if not available
- (fix) Fixes test failing type check on humble
- (feature) Adds map import export keys to the mapping config of plugin
- (feature) Adds function to plugins to get map store path
- (feature) Adds mapping definition in plugins
- (refactor) Adds min omega in ctrl limits and standardizes other angular ctrl names with kompass-core
- (refactor) Changes param for minimum velocity
- (feature) Adds mounts to plugin sensors where a robot plugin may mount its own sensors and the launcher publishes their static tf so that a urdf is not needed
- (fix) Keeps twist information in odom transformation
- (fix) Adds missing twist in Odom transformation anf removes unused imports
- (feature) Adds extra args to img senders and adds camaera info sender for plugins to use the functions directly
- (fix) Fixes large supported type senders where msg creation was passing through rclpy's element by element passes
- (fix) Standardizes the contract for replace input topics and makes the ros topics coming from plugins keep the recipe name while subscribing to the name supplied by the plugin
- (feature) Adds a log once utility in base component
- (fix) Fixes a hang where shutdown on fast emmited internal events blocking the queue from executing shutdown events
- (feature) Allows sending launch prefixes to component processes in multiprocess launch (#63)
- (feature) Adds shared memory writer pools to plugin hosts in launcher
- (feature) Wires in the shm encode/decode methods into plugins
- (feature) Adds to and from shm payload methods in the supported types
- (feature) Adds a no-copy buffer layout return method to pointcloud datatype for navigation consumers
- (feature) Adds a minimal shared memory manager for use with plugin feedback bus for streaming large payloads
- (feature) Bypasses serialization/deserialization for in process bus
- (feature) Adds carries_objects property to plugin bus to avoid serialization on inprocess buses
- Merge branch 'feature/plugin_drivers_launch' of github.com:automatika-robotics/sugarcoat into feature/plugin_drivers_launch
- (feature) Adds depth image metadata function and corrects image pre processing for np>2 compatibility
- (fix) Returns before setting health status if no failure is found
- (fix) Resets error sources in health status on healthy status update
- (fix) Fixes plugin adaptation flow in component (applies before init_variables)
- (fix) Fixes dictionary key setting for callbacks topic names
- (feature) Enables a Plugin to launch required drivers process by declaring them to Launcher is the driver topic is used in the Recipe
- (fix) Makes taking projection or raw image path explicit in intrinsics
- (chore) Adds test for check correct camera info caching behavior
- (fix) Adds binning to the camerainfo caching key
- (fix) Fixes checking Union[Literal[..]] in base attrs during deserialization
- (fix) Fixes type annotation in validator
- (refactor) Checks for fixed input attribute in callbacks during init
- (feature) Lifts camera intrinsics datatype upstream into sugarcoat
- (fix) Fixes type annotation in base client
- (fix) Fixes a debug logging in sending requests
- (feature) Adds launching external nodes and external launch files in the recipe
- Contributors: ahr, mkabtoul
0.8.0 (2026-07-30)
-
(fix) Removes frame_id keyword arg to avoid TypeError in SensorPlugin
-
(fix) Fixes selecting the correct plugin for an event's condition topic
-
(fix) Saves condition topic 'use_plugin' for getting the event's source plugin downstream
-
(fix) Adds additional check in BaseAttrs diff_fields to check only init attributes
-
(fix) Fixes type casting to reserve float32 in the zero-copy paths downstream
-
(feature) Adds on-detach method to Plugin class
-
(fix) Fixes dtype for default range genreation in laserscan data
-
(chore) Adds tests for checking fast path on data at the python boundary
-
(fix) Fixes rendering video frames for DOM refreshes in line with map element
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| automatika_embodied_agents | |
| kompass |