feat: add ROS 2 Lyrical Luth (LTS) distro support#190
Open
YuanYuYuan wants to merge 12 commits into
Open
Conversation
|
… API Lyrical's rmw_subscription_s adds is_cft_supported (Content Filtered Topic) alongside the existing is_cft_enabled. Use ..Default::default() in struct initializers to stay forward-compatible with any future field additions. Also replace the fragile sed-based Lyrical config workaround with a minimal known-good ZENOH_SESSION_CONFIG_URI approach that bypasses all config parse issues in ros-lyrical-rmw-zenoh-cpp 0.10.x.
Lyrical updated demo_nodes_cpp and action_tutorials_cpp to use example_interfaces instead of std_msgs/action_tutorials_interfaces. Update the cfg guards in talker/listener/fibonacci examples to also include the lyrical feature flag (same pattern as kilted). Also: - Add #[allow(clippy::needless_update)] on the two rmw_subscription_t initializers in rmw-zenoh-rs to suppress needless_update lint on Jazzy/Kilted (where all fields are explicit; Lyrical needs the ..Default::default() to cover the new is_cft_supported field). - Bump rust-cache shared-key suffix to -v2 to evict a corrupted pyo3-build-config cache entry that has been failing every CI run.
Lyrical's demo_nodes_cpp uses example_interfaces/msg/String (not std_msgs/msg/String) and example_interfaces/action/Fibonacci (not action_tutorials_interfaces). Update type_description_interop.rs to use distro-aware TALKER_TYPE_NAME/TALKER_TYPE_HASH constants, and extend action_interop.rs kilted cfg guards to also cover lyrical.
Replaces the PID-derived NEXT_PORT counter with bind(:0) port allocation, matching the hiroz-tests TestRouter. Prevents port conflicts when hiroz-tests and hiroz-console test binaries run sequentially on the same runner and happen to derive the same base port from their PIDs.
The Lyrical rmw_zenoh_cpp (v0.10.4) explicitly uses transport/shared_memory/transport_optimization/pool_size and message_size_threshold in its C++ source and ships a config that includes transport_optimization — the bundled zenoh-c 1.8.0 fully supports these fields. The ZENOH_SESSION_CONFIG_URI minimal-config workaround was based on a wrong diagnosis and strips away all ROS-tuned transport settings.
Update all documentation that lists supported ROS 2 distributions to include Lyrical (May 2026–May 2031 LTS) alongside Jazzy, Kilted, and Rolling. Covers distro-compatibility, feature-flags, nix, building, quick-start, bridge, interop, rmw-zenoh-rs, bindings, and actions-advanced cfg guard examples.
Add /opt/ros/lyrical to hiroz-msgs build.rs fallback path list so message discovery works with a local Lyrical ROS install. Add lyrical feature check to test-pure-rust.nu check-distro-features step.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds ROS 2 Lyrical Luth (LTS, May 2026–May 2031) as a supported distro alongside Humble, Jazzy, and Kilted.
Key Changes
Distro support
lyrical,DistroDefaults::lyrical(), and codegen assets for Lyricallyricaladded to the scriptsDISTROSlistRMW compatibility
rmw_zenoh-rs: add..Default::default()tormw_subscription_tinitialisers to fill the newis_cft_supportedfield introduced in Lyrical's RMW headers#[allow(clippy::needless_update)]onrmw_create_subscription/rmw_destroy_subscriptionto silence the lint on Jazzy/Kilted where all fields are already explicitLyrical demo_nodes interface migration
demo_nodes_cpptalker usesexample_interfaces/msg/String(notstd_msgs/msg/String) andaction_tutorials_cppusesexample_interfaces/action/Fibonacci(notaction_tutorials_interfaces)listener.rs,talker.rs:#[cfg(feature = "lyrical")]gate selects the right message typefibonacci_action_client.rs,fibonacci_action_server.rs: extend existing#[cfg(feature = "kilted")]guards to#[cfg(any(feature = "kilted", feature = "lyrical"))]hiroz-tests/tests/action_interop.rstype_description_interop.rs: distro-awareTALKER_TYPE_NAME/TALKER_TYPE_HASHconstants so tests query the correct type from the Lyrical talkerTest infrastructure
hiroz-console/tests/common/mod.rs: replace PID-derivedNEXT_PORTwithbind(:0)OS-assigned ports, matchinghiroz-tests, to prevent port collisions when test binaries run back-to-back on the same CI runnerpureRust-checksand<distro>-roscache keys to-v2to evict a corruptedpyo3-build-configcache entry that caused persistent build failuresLyrical distro properties
example_interfacesreplacesstd_msgs/action_tutorials_interfacesin demo nodesis_cft_supportedfield in thermw_subscription_sC struct