Skip to content

feat: action service - #46

Merged
YuanYuYuan merged 5 commits into
mainfrom
feat/action
Dec 16, 2025
Merged

feat: action service#46
YuanYuYuan merged 5 commits into
mainfrom
feat/action

Conversation

@YuanYuYuan

@YuanYuYuan YuanYuYuan commented Dec 9, 2025

Copy link
Copy Markdown
Collaborator

Add Full ROS 2 Actions Support to ros-z

This PR introduces complete ROS 2 Actions support to ros-z, enabling goal-driven, long-running tasks with feedback and cancellation. It includes full client/server APIs, code generation, testing infrastructure, and example applications.

Highlights

Core Implementation

  • Added a new action module (7 submodules) defining the full client/server architecture.
  • Implements async goal submission, feedback streaming, and safe compile-time transitions using the type-state pattern.
  • Added internal driver, message types, and macros for simplified action definition.

Code Generation

  • Enhanced ros-z-codegen to generate action types (Goal, Result, Feedback) and inject modules into package namespaces.
  • Supports ROS 2 action hash interoperability.

Testing Infrastructure

  • Reworked test setup for isolated per-test Zenoh routers, enabling fully parallel and interference-free tests.
  • Added 11 new test modules with comprehensive coverage: goal lifecycle, concurrency, cancellation, and interop.

Examples

  • Added Fibonacci action client and server demos demonstrating incremental computation, feedback streaming, and cancellation.

Graph API

  • Added graph methods for discovering action servers and clients by node.

Other Improvements

  • Cleaned up legacy code in wait_set.rs and improved subscription safety.
  • Updated dependencies (action_msgs, unique_identifier_msgs, tokio-util).

Architecture Notes

  • Type-state safety: Enforces correct goal lifecycle transitions at compile time.
  • Async-first: Implements non-blocking APIs with background drivers managing ROS 2 action protocols.
  • Interoperable: Fully compatible with ROS 2 standard messages and services.

@YuanYuYuan
YuanYuYuan merged commit 3e7f376 into main Dec 16, 2025
6 checks passed
@YuanYuYuan
YuanYuYuan deleted the feat/action branch December 16, 2025 03:53
@YuanYuYuan YuanYuYuan mentioned this pull request Dec 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant