Skip to content

Async actions #503

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
14f20b5
Remove lockfiles from being tracked
mxgrey Jul 18, 2025
8cc8959
Port draft action implementation from #410
mxgrey Jul 18, 2025
593a0ef
Rework readiness for waitables
mxgrey Jul 20, 2025
ac35d16
Reworking action server goal handle lifecycles
mxgrey Jul 26, 2025
a61b5f0
Fleshing out the state machines for action server goals -- cancelling…
mxgrey Jul 27, 2025
7340ec7
Finished action server goal state machine API -- need to finish actio…
mxgrey Jul 27, 2025
cedbb8f
Progress on action_server implementation
mxgrey Jul 28, 2025
03b44c9
Action server finished -- needs testing
mxgrey Jul 28, 2025
cd7fd50
Creating action server and action goal receiver -- needs testing
mxgrey Jul 28, 2025
01ab153
Introducing action clients into the wait set processing
mxgrey Jul 28, 2025
7d64c9c
Incorporate action clients into wait sets
mxgrey Jul 29, 2025
61dc709
Fleshing out implementation of action clients
mxgrey Jul 29, 2025
d767c71
Implementing goal status client
mxgrey Jul 30, 2025
50bb189
Implementing goal result client
mxgrey Jul 30, 2025
176b5f2
CancellationClient API in progress
mxgrey Jul 30, 2025
b115469
Finish action cancellation request API
mxgrey Jul 31, 2025
5225df8
Finish API for action clients -- needs testing
mxgrey Jul 31, 2025
a9bd493
Link against rcl_action
mxgrey Aug 5, 2025
d201992
Add initial tests and improve ergonomics
mxgrey Aug 10, 2025
7451d20
Add co-author credit
mxgrey Aug 10, 2025
8420bea
Merge remote-tracking branch 'origin/main' into async_actions
mxgrey Aug 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions rclrs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,18 @@ path = "src/lib.rs"
# Needed for dynamically finding type support libraries
ament_rs = { version = "0.2", optional = true }

# Needed to create the GoalClientStream
async-stream = "*"

# Needed for uploading documentation to docs.rs
cfg-if = "1.0.0"

# Needed for clients
futures = "0.3"

# Needed for racing futures
futures-lite = { version = "2.6", features = ["std", "race"] }

# Needed for the runtime-agnostic timeout feature
async-std = "1.13"

Expand All @@ -36,6 +42,18 @@ rosidl_runtime_rs = "0.4"
serde = { version = "1", optional = true, features = ["derive"] }
serde-big-array = { version = "0.5.1", optional = true }

# Needed to watch for the cancel signal for actions. Note that this only brings
# in the sync module of tokio, which is a fairly light weight dependency. The
# channels in this module work with any async runtime, so this does not lock us
# into the tokio runtime.
tokio = { version = "1", features = ["sync"] }

# Needed to combine concurrent streams for easier ergonomics in action clients
tokio-stream = "0.1"

# Needed by action clients to generate UUID values for their goals
uuid = { version = "1", features = ["v4"] }

[dev-dependencies]
# Needed for e.g. writing yaml files in tests
tempfile = "3.3.0"
Expand Down
1 change: 1 addition & 0 deletions rclrs/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ fn main() {
}

println!("cargo:rustc-link-lib=dylib=rcl");
println!("cargo:rustc-link-lib=dylib=rcl_action");
println!("cargo:rustc-link-lib=dylib=rcl_yaml_param_parser");
println!("cargo:rustc-link-lib=dylib=rcutils");
println!("cargo:rustc-link-lib=dylib=rmw");
Expand Down
Loading
Loading