![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged cm_executors at Robotics Stack Exchange
![]() |
cm_executors package from cm_executors repocm_executors |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.1 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/cellumation/cm_executors.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2025-08-13 |
Dev Status | MAINTAINED |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Janosch Machowinski
Authors
- Janosch Machowinski
Cellumation Executors
A ROS2 packages providing alternative executor implementations. Currently only one executor is provided, the EventsCBGExecutor.
Features
- Compared to rclcpp::experimental::EventsExecutor
- Multithread support
- Support for mixing timers using different clocks (ROS_TIME/SYSTEM_TIME/STEADY_TIME)
- Comparable performance in one thread mode
- 10-15% less CPU usage than rclcpp::SingleThreadedExecutor and rclcpp::MultiThreadedExecutor
Known bugs
- If the process is constantly overloaded and can not process the subscriptions timers etc, over time the events bag log will grow unbounded.
Usage
#include <cm_executors/events_cbg_executor.hpp>
int main(int argc, char ** argv)
{
rclcpp::init(argc, argv);
// multithreaded mode, use at least 2 thread or as many threads as processor cores detected
int numThreads = 0;
// Single threaded mode, has better latencies because of less context switches
//int numThreads = 1;
rclcpp::executors::EventsCBGExecutor executor(rclcpp::ExecutorOptions(), numThreads);
// add nodes etc
executor.spin()
}
Changelog for package cm_executors
0.9.1 (2025-08-13)
- feat: Added build and test action
- Action test2
- fix runs_on
- use correct actionv ersion
- Test CI Build action
- chore: make cpplint happy
- chore: uncrustify
- fix: made ament_copyright happy
- fix(TimerQueue): Use specialized ClockConditionalVariable This fixes issues, were other calls to rclcpp::Clock::cancel_sleep_or_wait would wake up the timers manager. This also increases the performance, as the expensive registration of the shutdown callback on every sleep was moved to initialization / destruction of the TimerQueue.
- Update README.md
- Create README.md
- chore added license
- Fix missing test dependency
- fix: Clear timer reset callbacks, before deleting object involved in callback
- fix: Added missing mutex protection in sync_callback_groups
- fix: clear registered events on shutdown
- fix: Fixed invalid memory access on shutdown
- fix: Compile lib as shared
- fix: Don't add timer multiple times to running queue if reset was called
- fix: Handle exceptions in all threads
- feat: Added spin() with exception handler function
- chore: Removed outdated benchmark tests
- refactor: Cleaned up CMakeLists.txt
- refactor: Cleaned up RegisteredEntityCache
- fix: remove rcl polling thread
- fix: Don't wait on timer before before assiciated clock is ready
- feat: Don't expose internal data structures This allows us to change the executor, without breaking ABI / API
- fix: Don't start timer queue thread before initializing the class
- feat: Added PriorityScheduler
- chore: Remove log spam and outdated code
- fix(EventsCBGExecutor): Poll rcl layer for 'hidden' guard conditions
- fix(TimerManager): Use clock of registered timer for sleep This fixes the bug, that ROS_TIME timers were not switched to ros time as it is not attached to a time source.
- fix: Don't call 'call' on timer twice
- refactor: Major refactoring
- fix: implemented behaviour of spin_some of base executor
- fix: Replaced by queue event id with global event id
- fix: Made it compile
- Initial import from rclcpp