Package symbol

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

Package symbol

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
jazzy

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

Package symbol

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
kilted

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

Package symbol

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
rolling

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange

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

automatika_ros_sugar package from automatika_ros_sugar repo

automatika_ros_sugar

ROS Distro
humble

Package Summary

Version 0.4.3
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-01-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Syntactic sugar for ROS2 nodes creation and management

Additional Links

Maintainers

  • Automatika Robotics

Authors

No additional authors.
Sugarcoat Logo


🇨🇳 简体中文 🇯🇵 日本語

The Sweetest Way to Build ROS2 Systems

Sugarcoat is a meta-framework that injects a whole lot of syntactic sugar into building complex, event-driven multinode systems in ROS2, all through an intuitive Python API.

Key Features

Feature Description
Event-Driven Core Built-in primitives for Events and Actions enables dynamic runtime configuration and control over your system’s Components.
Built-in Resilience Fallbacks and Fault Tolerance are core design concepts, ensuring your systems are robust and reliable.
Intuitive Python API Design your entire system—nodes, events, and actions—using clean, readable Python code.
Dynamic Web UI Automatically generate a fully dynamic, extensible web interface for monitoring and configuring your system.
Universal Applications Using Robot Plugins (!NEW) Allows you to write generic, portable automation logic that runs on any robot without code changes
Launch Replacement A more pythonic alternative to the ROS2 Launch API, providing greater flexibility and runtime control for real-world applications.

Packages Built with Sugarcoat

  • Kompass: A framework for building robust and comprehensive event-driven navigation stacks using an easy-to-use and intuitive Python API.
  • EmbodiedAgents: A fully-loaded framework for creating interactive physical agents that can understand, remember, and act upon contextual information from their environment.

Get Started

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.

This feature instantly transforms your complex, multinode ROS2 system into a monitorable and configurable web application.

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.

EmbodiedAgents UI Example GIF

  • 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.

KOMPASS UI Example GIF

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.

How Sugarcoat Works

The core of Sugarcoat revolves around a few concepts:

  • Component: The main execution unit (a ROS2 lifecycle node abstraction) configured with Inputs/Outputs and Fallback behaviors. Each component reports its Health Status. Learn More about Components

Base Component Diagram

  • Events & Actions: Mechanisms to handle and reconfigure components dynamically at runtime. Learn More about Events Learn More about Actions
  • Launcher: Takes your defined Components, Events, and Actions, and executes the system using multi-threaded or multi-process execution. It works with an internal Monitor to manage component lifecycles and track events. Learn More about the Launcher

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

CHANGELOG

Changelog for package automatika_ros_sugar

0.4.3 (2026-01-17)

  • (refactor) Organizes UI custom javascript into three functional scripts
  • (docs) Improves the core concepts documentation
  • (fix) Fixes check for None max_retries value in fallback
  • (fix) Fixes logging colors in multi-process execution
  • (feature) Adds parameter for lifecycle transition timeout
  • (fix) Add error catching during all fallbacks action execution
  • (fix) Fixes fallback init and exposes on_giveup fallback
  • (fix) Adds fallbacks serialization to support multi-process execution
  • (fix) Removes optional fallback in execute method
  • (fix) Updates health status after executing the fallback in component
  • (fix) Adds fallback to component lifecycle transition errors
  • (feature) Adds method to add event/action pairs from inside child components
  • (docs) Adds generation of llms.txt to docs
  • (feature) Adds Task UI element to track action requests
  • (feature) Adds option to hide the settings panel in the UI
  • (feature) Adds property to get a UI input for a component's main action server
  • (feature) Adds action clients to UI inputs
  • (feature) Improves ActionClient with methods to cancel requests and monitor feedback
  • (feature) Adds parsing ROS messages from/to dictionary
  • (docs) Fixes installation instructions in readme
  • (fix) Fixes external processor argument passing in the launcher
  • (refactor) Adds utility function for running external processors
  • (feature) Adds service clients to UINode inputs in order to send service calls directly from the UI
  • (feature) Adds method to send a service request using data from a dictionary This method is useful to send requests without initializing the request class. Used in the UI node to send requests from an input form data
  • Contributors: ahr, mkabtoul

0.4.2 (2025-11-30)

  • (docs) Adds robot plugins tutorial to docs
  • (feature) Adds publish pre processors to robot plugin client
  • (feature) Adds robot plugin client and enable using plugins in components and launcher
  • (fix) Fixes publishing occupancy grid (humble)
  • (fix) Fixes conversion between Vector3 and Point
  • Contributors: ahr, mkabtoul

0.4.1 (2025-11-07)

  • (feature) Adds UI font files locally
  • (fix) Fixes logging card scroll behavior
  • (fix) Fixes drawing of output UI elements by filtering those that log
  • (fix) Fixes setting id in divs added to logging card
  • (fix) Clears last message when getting output for UI
  • (feature) Adds method to augment exisiting text on logging card
  • (fix) Fixes terminal scrolling behavior in UI
  • (fix) Makes inputs/outputs displays conditional in UI
  • (refactor) Moves logging card outputs to their own functions based on datatype
  • Contributors: ahr, mkabtoul

0.4.0 (2025-11-04)

  • (docs) Adds dynamic ui to docs and updates readme
  • (feature) Adds automatika CSS custom style for UI
  • (fix) Adds use of step in reading img msgs
  • (fix) Fixes colors when converting image to jpeg using cv2
  • (fix) Turns ComponentConfig run_type into a private parameter (_run_type) in the attrs class
  • (feature) Makes streaming websocket connections more robust by recreating them after htmx events and adding reconnects for stale cache
  • (fix) Handles nested settings classes in ui
  • (feature) Adds UI_EXTENSIONS to add custom UI elements from derived packages
  • (fix) Fixes parsing optional type for ui serialization
  • (fix) Fixes getting relative path for static files
  • (feature) Adds serialization of additional types
  • (fix) Fixes base attrs handing of parsed types for ui serialization
  • (fix) Handles literals inside generic types correctly
  • (feature) Adds 'dragabble' sections
  • (feature) Adds toggle button to all UI cards
  • (feature) Presists updates settings on the UI
  • (feature) Adds ui output for OccupancyGrid
  • (fix) Fixes de-seralizing qos config in topics
  • (feature) Adds ui dict converters for Point/Pose types
  • (fix) Adjusts inputs/outputs grid display in UI frontend
  • (feature) Adds extensibility to sending various datatypes to ROS topics
  • (fix) Fixes type hint in launcher add_pkg for 3.8 compatibility
  • (fix) Fixes input for 'less than' validator
  • (feature) Adds responsive settings display styling
  • (fix) Adds check for length of payload before putting it on the DOM
  • (feature) Adds sending and logging audio msgs
  • (feature) Adds audio elements to the log and adds clearing inputs after submission

File truncated at 100 lines see the full file

Recent questions tagged automatika_ros_sugar at Robotics Stack Exchange