![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>
CONTRIBUTING
![]() |
callback_isolated_executor repositorycallback_isolated_executor cie_config_msgs cie_sample_application cie_thread_configurator |
ROS Distro
|
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 (-) |
Packages
Name | Version |
---|---|
callback_isolated_executor | 0.0.0 |
cie_config_msgs | 0.0.0 |
cie_sample_application | 0.0.0 |
cie_thread_configurator | 0.0.0 |
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”?>