23 humble support#29
Merged
alistair-english merged 13 commits intomainfrom May 4, 2026
Merged
Conversation
Signed-off-by: Alistair English <hello@alistairenglish.com>
Signed-off-by: Alistair English <hello@alistairenglish.com>
Humble's rclcpp lacks the autostart param on create_timer/create_wall_timer and rclcpp_lifecycle::LifecycleNode's create_service/create_client only accept rmw_qos_profile_t. Add jig/compat.hpp with RCLCPP_VERSION_GTE gates and use them in timer.hpp, service.hpp, and the codegen template. Also add templates/*.jinja2 to the codegen DEPENDS so template edits invalidate generated headers. Signed-off-by: Alistair English <hello@alistairenglish.com>
Signed-off-by: Alistair English <hello@alistairenglish.com>
Signed-off-by: Alistair English <hello@alistairenglish.com>
Without this, sourcing the workspace setup.bash does not put PYTHON_INSTALL_DIR on PYTHONPATH on humble, so launched nodes fail with ModuleNotFoundError. Invisible on jazzy/kilted because their PYTHON_INSTALL_DIR (lib/pythonX/site-packages) is covered by the default ament_export_pythonpath; humble uses local/lib/pythonX/dist-packages which is not. See jig#28 for the proper refactor. Signed-off-by: Alistair English <hello@alistairenglish.com>
Iron renamed rclpy.qos_event -> rclpy.event_handler and split ClockType into rclpy.clock_type; Humble has neither. Add jig._compat that re-exports from whichever module exists and route the existing imports through it. Signed-off-by: Alistair English <hello@alistairenglish.com>
…back Humble's rclcpp rejects TRANSIENT_LOCAL durability paired with intraprocess comms; the state heartbeat publisher in BaseNode crashed every C++ lifecycle node at construction. Add JIG_INTRAPROCESS_TRANSIENT_LOCAL in compat.hpp that falls back to volatile on Humble. Also wrap user callbacks in the Python BaseNode with traceback.print_exc so configure/activate/deactivate/cleanup/shutdown failures surface the actual exception instead of just "Autostart failed to configure". Signed-off-by: Alistair English <hello@alistairenglish.com>
Signed-off-by: Alistair English <hello@alistairenglish.com>
rclcpp::create_timer takes the callback by forwarding reference; passing an lvalue deduces CallbackT to a reference type, so GenericTimer<CB&> ends up storing a reference to the local lambda, which dies when jig::create_timer returns. First fire after activate then segfaulted. Same fix applied to create_wall_timer. Signed-off-by: Alistair English <hello@alistairenglish.com>
The old name claimed transient_local, but on Humble the macro expands to durability(Volatile) — opaque and misleading at call sites. The new name just describes its job (pick the right durability for an intraprocess publisher) and the comment block explains the per-distro values. Mirror the same shim on the python side as INTRAPROCESS_DURABILITY in _compat.py and use it from the python BaseNode heartbeat publisher, so jig's C++ and python interfaces stay consistent. Python's BaseNode doesn't enable intraprocess today, so this is preemptive — TL still works on Humble — but it keeps the two interfaces in lockstep. Add heartbeat_qos() to jig_example test helpers (matching the publisher) and switch test_state_heartbeat_published to it. state_qos() stays TRANSIENT_LOCAL because state_report (the other consumer) genuinely needs latching. Signed-off-by: Alistair English <hello@alistairenglish.com>
heartbeat_qos was just state_qos with the humble durability override — having two near-identical helpers invites silent drift. state_qos now *is* the distro-aware one, matching base_node's ~/state heartbeat publisher. state_report is the actual special case: it's published from a python lifecycle node that doesn't enable IPC, so it stays TRANSIENT_LOCAL on humble and the test specifically relies on latching to receive the message published during configure. Inline that QoS at the call site with a comment instead of carving out a second helper. Signed-off-by: Alistair English <hello@alistairenglish.com>
Closed
Signed-off-by: Alistair English <hello@alistairenglish.com>
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.
No description provided.