Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro jazzy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.
No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

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

README

ROS 2 Agnocast

An rclcpp-compatible true zero-copy IPC middleware that supports all ROS message types, including message structs already generated by rosidl.

This middleware is based on the following paper and the corresponding prototype. The paper has been accepted to IEEE ISORC 2025 (pdf).

  • T. Ishikawa–Aso and S. Kato, “ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC,” in Proc. 28th Int. Symp. Real-Time Distributed Computing (ISORC), 2025, pp. 1–10.
BibTeX ```bibtex @inproceedings{ishikawa2025ros, title={ROS 2 Agnocast: Supporting Unsized Message Types for True Zero-Copy Publish/Subscribe IPC}, author={Ishikawa--Aso, Takahiro and Kato, Shinpei}, booktitle={2025 28th International Symposium on Real-Time Distributed Computing (ISORC)}, pages={01--10}, year={2025}, organization={IEEE} } ```

Table of Contents

Supported Environments

Agnocast 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)
Linux Kernel 5.x / 6.x series (detailed version matrix not yet available)

The ROS 2 Jazzy–compatible release is scheduled for late February 2026.


For Users

Clone the repository

Since ROS packages under src/ such as agnocastlib are not yet distributed from the ROS build farm, a source build is currently required. Therefore, to perform the source build, first check out the specific version as follows:

git clone --branch v2.1.2 https://github.com/tier4/agnocast.git
cd agnocast

Setup

Run the setup script to install dependencies:

bash scripts/setup

Manual installation of agnocast-heaphook and agnocast-kmod If you prefer to install the packages manually instead of using the setup script: ```bash # Create keyrings directory sudo install -d -m 0755 /etc/apt/keyrings # Download and install GPG key curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCFDB1950382092423DF37D3E075CD8B5C91E5ACA' \ | gpg --dearmor | sudo tee /etc/apt/keyrings/agnocast-ppa.gpg >/dev/null sudo chmod 0644 /etc/apt/keyrings/agnocast-ppa.gpg # Create repository configuration (deb822 format) cat <<EOF | sudo tee /etc/apt/sources.list.d/agnocast.sources Types: deb URIs: http://ppa.launchpad.net/t4-system-software/agnocast/ubuntu Suites: jammy Components: main Signed-By: /etc/apt/keyrings/agnocast-ppa.gpg EOF File truncated at 100 lines [see the full file](https://github.com/tier4/agnocast/tree/main/README.md)

CONTRIBUTING

Contributing to Agnocast

Thank you for your interest in contributing to Agnocast!

Pull Request Requirements

Version Update Labels (Required)

Every pull request must have exactly one of the following labels:

  • need-major-update: User API breaking changes - requires MAJOR version update
  • need-minor-update: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update
  • need-patch-update: Bug fixes and other changes - requires PATCH version update

Important notes:

  • PRs without a version label or with multiple version labels will not be mergeable due to automated checks.
  • PR Title Convention: If you need need-major-update or need-minor-update, please include this in the PR title as well.
    • Example: fix(foo)[needs major version update]: bar
    • Example: feat(baz)[needs minor version update]: qux
  • Build Test Requirement: After receiving approval from reviewers, add the run-build-test label. The PR can only be merged after the build tests pass.

Versioning Rules

Agnocast follows a modified semantic versioning scheme:

MAJOR version (need-major-update)

Increment when you make breaking changes to the User API.

Examples:

  • Changing public API function signatures
  • Removing or renaming user-facing APIs
  • Modifying behavior that affects users of the library

MINOR version (need-minor-update)

Increment when you make breaking changes to internal APIs or component compatibility.

This includes changes that affect compatibility between:

  • heaphook
  • kmod
  • agnocastlib

Examples:

  • Removing or renaming ioctl commands
  • Modifying data structures used in ioctl interfaces
  • Changing shared data structures between heaphook/kmod/agnocastlib
  • Breaking changes to internal APIs not exposed to end users

PATCH version (need-patch-update)

Increment for bug fixes and other changes that don’t fall into the above categories.

Examples:

  • Bug fixes
  • Documentation updates
  • Performance improvements (without API changes)
  • Refactoring (without API changes)
  • Test additions or improvements

Testing Requirements

Before submitting a PR, please ensure the following tests pass:

  • Autoware (required)
  • bash scripts/e2e_test_1to1_with_ros2sub (required)
  • bash scripts/e2e_test_2to2 (required)
  • kunit tests (required when modifying the kernel module)

Questions?

If you’re unsure which version label to use, feel free to ask in the PR comments or open a discussion.

# Contributing to Agnocast Thank you for your interest in contributing to Agnocast! ## Pull Request Requirements ### Version Update Labels (Required) Every pull request **must** have exactly one of the following labels: - **`need-major-update`**: User API breaking changes - requires MAJOR version update - **`need-minor-update`**: Internal API breaking changes (heaphook/kmod/agnocastlib compatibility) - requires MINOR version update - **`need-patch-update`**: Bug fixes and other changes - requires PATCH version update **Important notes:** - **PRs without a version label or with multiple version labels will not be mergeable** due to automated checks. - **PR Title Convention**: If you need `need-major-update` or `need-minor-update`, please include this in the PR title as well. - Example: `fix(foo)[needs major version update]: bar` - Example: `feat(baz)[needs minor version update]: qux` - **Build Test Requirement**: After receiving approval from reviewers, add the `run-build-test` label. The PR can only be merged after the build tests pass. ## Versioning Rules Agnocast follows a modified semantic versioning scheme: ### MAJOR version (`need-major-update`) Increment when you make **breaking changes to the User API**. Examples: - Changing public API function signatures - Removing or renaming user-facing APIs - Modifying behavior that affects users of the library ### MINOR version (`need-minor-update`) Increment when you make **breaking changes to internal APIs or component compatibility**. This includes changes that affect compatibility between: - heaphook - kmod - agnocastlib Examples: - Removing or renaming ioctl commands - Modifying data structures used in ioctl interfaces - Changing shared data structures between heaphook/kmod/agnocastlib - Breaking changes to internal APIs not exposed to end users ### PATCH version (`need-patch-update`) Increment for **bug fixes and other changes** that don't fall into the above categories. Examples: - Bug fixes - Documentation updates - Performance improvements (without API changes) - Refactoring (without API changes) - Test additions or improvements ## Testing Requirements Before submitting a PR, please ensure the following tests pass: - [ ] Autoware (required) - [ ] `bash scripts/e2e_test_1to1_with_ros2sub` (required) - [ ] `bash scripts/e2e_test_2to2` (required) - [ ] kunit tests (required when modifying the kernel module) ## Questions? If you're unsure which version label to use, feel free to ask in the PR comments or open a discussion.