Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro jazzy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)
No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/tier4/callback_isolated_executor.git
VCS Type git
VCS Version main
Last Updated 2025-09-16
Dev Status UNMAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

callback_isolated_executor

The ComponentContainer and Executor that assign a dedicated thread for each callback group. This repository continues development from https://github.com/sykwer/callback_isolated_executor, which provides the implementation for this paper.

If you find CallbackIsolatedExecutor is useful in your research, please consider citing:

  • T. Ishikawa-Aso, A. Yano, T. Azumi, and S. Kato, “Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems,” in Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), 2025, pp. 426–429.
BibTeX ```bibtex @inproceedings{ishikawa2025work, title={Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-Time Systems}, author={Ishikawa-Aso, Takahiro and Yano, Atsushi and Azumi, Takuya and Kato, Shinpei}, booktitle={Proc. of 31st IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS)}, pages={426--429}, year={2025}, organization={IEEE} } ```

Supported Environments

CallbackIsolatedExecutor is currently available in the following environments. This reflects the current status, and support is expected to expand in the future.

Category Supported Versions / Notes
ROS 2 Humble (only with rclcpp client library)
Linux Distribution Ubuntu 22.04 (Jammy Jellyfish)

Build and Install

$ git clone https://github.com/tier4/callback_isolated_executor.git
$ cd callback_isolated_executor
$ source /opt/ros/humble/setup.bash
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source install/setup.bash

Set capability for the configurator executable to issue the syscalls like sched_setscheduler(2).

$ sudo setcap cap_sys_nice+ep ./build/cie_thread_configurator/thread_configurator_node

After elevating the priviridge level, part of dynamic linking functionality gets disabled for the security reason. To deal with it, add a file with the following content under the /etc/ld.so.conf.d/ directory. The file name has to be *.conf.

/opt/ros/humble/lib
/opt/ros/humble/lib/x86_64-linux-gnu
/path/to/callback_isolated_executor/install/cie_config_msgs/lib

To enable the configuration, type the command below.

$ sudo ldconfig

Why ldconfig changed? When specific permissions are granted to an ELF binary using setcap, for security reasons, environment variables like `LD_PRELOAD` and `LD_LIBRARY_PATH` are ignored. While setting `RUNPATH` on the binary comes to mind as a solution, `RUNPATH` does not easily handle recursive dynamic linking. In such cases, modifying `/etc/ld.so.conf.d/` is the only option.

Kernel Boot Parameter

According to the Linux Kernel documentation, setting the affinity for SCHED_DEADLINE tasks requires the use of cgroup v1 features. To use cgroup v1, it is necessary to disable cgroup v2 by specifying systemd.unified_cgroup_hierarchy=0 in the kernel boot parameters.

To change the kernel boot parameters, edit /etc/default/grub and add the parameter to GRUB_CMDLINE_LINUX_DEFAULT:

GRUB_CMDLINE_LINUX_DEFAULT="... systemd.unified_cgroup_hierarchy=0 ..."

To apply these changes, run the following commands. After rebooting, the features of cgroup v1 will be available:

$ sudo update-grub
$ sudo reboot

Usage

Step1: Rewrite your app

When running a node within ComponentContainerCallbackIsolated, you don’t need to modify the node’s implementation. However, if starting the node directly from the main function without using ComponentContainer, you need to modify the node’s implementation as shown below and rebuild it. Refer to the source code in the cie_sample_application package to understand how to modify your app.

Option1: Launch without ComponentContainer

If you are launching a node directly from the main function without using a ComponentContainer, change the name of the Executor.

```xml <?xml version=”1.0”?> <?xml-model href=”http://download.ros.org/schema/package_format3.xsd” schematypens=”http://www.w3.org/2001/XMLSchema”?>

... callback_isolated_executor File truncated at 100 lines [see the full file](https://github.com/tier4/callback_isolated_executor/tree/main/README.md)