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

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro kilted showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro rolling showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro ardent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro bouncy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro crystal showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro eloquent showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro dashing showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro galactic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro foxy showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro iron showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro lunar showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro jade showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro indigo showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro hydro showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro kinetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro melodic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).
No version for distro noetic showing jazzy. Known supported distros are highlighted in the buttons above.
Repo symbol

cm_executors repository

cm_executors

ROS Distro
jazzy

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 (-)

Packages

Name Version
cm_executors 0.9.1

README

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()
}

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.

Contributors must sign-off each commit by adding a Signed-off-by: ... line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the Developer Certificate of Origin (DCO).

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~ Contributors must sign-off each commit by adding a `Signed-off-by: ...` line to commit messages to certify that they have the right to submit the code they are contributing to the project according to the [Developer Certificate of Origin (DCO)](https://developercertificate.org/).