Skip to content

Commit 2ae0bea

Browse files
committed
docs: update README
1 parent 87955de commit 2ae0bea

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

README.md

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ If you find `CallbackIsolatedExecutor` is useful in your research, please consid
2626
CallbackIsolatedExecutor is currently available in the following environments.
2727
This reflects the current status, and support is expected to expand in the future.
2828

29-
| Category | Supported Versions / Notes |
30-
|--------------------|--------------------------------------------------------------|
31-
| ROS 2 | Humble (only with `rclcpp` client library) |
32-
| Linux Distribution | Ubuntu 22.04 (Jammy Jellyfish) |
29+
| Category | Supported Versions / Notes |
30+
| ------------------ | ------------------------------------------ |
31+
| ROS 2 | Humble (only with `rclcpp` client library) |
32+
| Linux Distribution | Ubuntu 22.04 (Jammy Jellyfish) |
3333

3434
## Build and Install
3535
```
@@ -169,13 +169,22 @@ Once all the nodes of the target application are up and the logs in the prerun n
169169
Then, in the current directory, a template for the YAML configuration file `template.yaml` will be created in the format like below.
170170

171171
```yaml
172+
hardware_info:
173+
model_name: Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz
174+
cpu_family: 5
175+
model: 85
176+
threads_per_core: 2
177+
frequency_boost: enabled
178+
cpu_max_mhz: 2101.0000
179+
cpu_min_mhz: 800.0000
180+
172181
callback_groups:
173-
- id: /sample_node@Subscription(/parameter_events)@Service(/sample_node/get_parameters)@Service(/sample_node/get_parameter_types)@Service(/sample_node/set_parameters)@Service(/sample_node/set_parameters_atomically)@Service(/sample_node/describe_parameters)@Service(/sample_node/list_parameters)@Waitable@Waitable@Waitable@Waitable
182+
- id: /sample_node@Subscription(/parameter_events)@Service(/sample_node/get_parameters)@Service(/sample_node/get_parameter_types)@Service(/sample_node/set_parameters)@Service(/sample_node/set_parameters_atomically)@Service(/sample_node/describe_parameters)@Service(/sample_node/list_parameters)
174183
affinity: ~
175184
policy: SCHED_OTHER
176185
priority: 0
177186

178-
- id: /sample_node@Subscription(/topic_in)@Waitable
187+
- id: /sample_node@Subscription(/topic_in)
179188
affinity: ~
180189
policy: SCHED_OTHER
181190
priority: 0
@@ -193,6 +202,8 @@ callback_groups:
193202
194203
Once the creation of template.yaml is complete, please also terminate the target ROS 2 application.
195204
205+
The `template.yaml` file includes captured hardware information from the system (CPU details retrieved via `lscpu`). This information will be used for validation when loading the configuration file to ensure compatibility with the target system.
206+
196207
### Step4: Edit yaml file for scheduler configuration
197208
Change the file name and edit to configure each callback group.
198209
```bash
@@ -218,12 +229,21 @@ Note that if the target ROS 2 application is operating with a specific ROS_DOMAI
218229
$ sudo bash -c "export ROS_DOMAIN_ID=[app domain id]; source /path/to/callback_isolated_executor/install/setup.bash; ros2 run cie_thread_configurator thread_configurator_node --config-file your_config.yaml"
219230
```
220231

221-
Immediately after launching the configurator node, it will print the settings and then wait for the target ROS 2 application to start running as follows.
232+
Immediately after launching the configurator node, it will validate the hardware configuration. The configurator compares the hardware information stored in the configuration file against the current system's hardware details. If there are any mismatches (such as different CPU family or model), the configurator will report an error like:
233+
```
234+
[ERROR] Hardware validation failed with the following mismatches:
235+
- CPU family: expected '5', got '6'
236+
```
237+
This validation ensures that the scheduler configuration is applied only on compatible hardware to prevent potential performance or stability issues.
238+
239+
After successful validation, the configurator will print the settings and then wait for the target ROS 2 application to start running as follows.
222240

223241
<img width="1292" height="366" alt="cie_image1" src="https://github.com/user-attachments/assets/537034e0-167d-40dd-83ad-72c6efba7af8" />
224242

225-
In this state, when you launch the target ROS 2 application, the configurator node's window will display the message `Apply sched deadline?` and wait as below.
226-
The entries above the waiting message each show the callback group ID and OS thread ID information received from the ROS 2 application.
243+
In this state, when you launch the target ROS 2 application, the configurator node will receive callback group information from the application.
244+
The entries in the configurator window show the callback group ID and OS thread ID information received from the ROS 2 application.
245+
246+
If your configuration file contains callback groups with the `SCHED_DEADLINE` policy, the configurator node's window will display the message `Apply sched deadline?` and wait as shown below. If no `SCHED_DEADLINE` configurations are present, this prompt will be skipped automatically.
227247

228248
<img width="1346" height="160" alt="cie_image2" src="https://github.com/user-attachments/assets/934ab8d5-4894-4549-aa57-d9e7ef8f22c9" />
229249

0 commit comments

Comments
 (0)