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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

Package symbol

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange

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

cm_executors package from cm_executors repo

cm_executors

ROS Distro
jazzy

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

Cellumation executor package .

Additional Links

No additional links.

Maintainers

  • Janosch Machowinski

Authors

  • Janosch Machowinski

Cellumation Executors

CircleCI GitHub

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

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

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged cm_executors at Robotics Stack Exchange