Skip to content

Releases: apajon/lifecore_ros2

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 13 May 20:32
ea220f1

See CHANGELOG.md for details.

v0.9.0

Choose a tag to compare

@github-actions github-actions released this 11 May 02:02
2d2da7d

See CHANGELOG.md for details.

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 07 May 03:29
4467f82

See CHANGELOG.md for details.

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 06 May 02:03
47c75f4

See CHANGELOG.md for details.

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 04 May 17:25

See CHANGELOG.md for details.

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 02 May 01:23
ae626c9

See CHANGELOG.md for details.

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 01 May 18:22
151454f

See CHANGELOG.md for details.

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 28 Apr 19:00
46d5246

See CHANGELOG.md for details.

lifecore_ros2 v0.4.0 — first public release

Choose a tag to compare

@github-actions github-actions released this 22 Apr 17:28

lifecore_ros2 is a minimal lifecycle composition library for ROS 2 Jazzy — no hidden state machine.

This is the first public release of lifecore_ros2. It establishes a small, predictable
surface for composing lifecycle-aware ROS 2 nodes without layering a hidden state machine
on top of native ROS 2 lifecycle semantics.

Supported baseline

  • Python 3.12 or newer
  • ROS 2 Jazzy
  • rclpy is required at runtime and is expected to come from the system ROS installation;
    it is intentionally not declared as a PyPI dependency

Included in this release

Public API (re-exported from lifecore_ros2):

  • LifecycleComponentNode — lifecycle node that owns and drives registered components as
    native ROS 2 managed entities
  • LifecycleComponent — base class for lifecycle-aware components (abstract by
    convention); propagates transitions through _on_configure, _on_activate,
    _on_deactivate, _on_cleanup, _on_shutdown, _on_error
  • TopicComponent — base class for topic-oriented components; allocates ROS pub/sub
    during configure, releases during cleanup
  • LifecyclePublisherComponent[MsgT] — generic publisher gated by activation state
  • LifecycleSubscriberComponent[MsgT] — generic subscriber whose on_message callback
    is gated by activation state
  • when_active — decorator that guards component methods on activation state
  • LifecoreError and typed boundary-violation subclasses: RegistrationClosedError,
    DuplicateComponentError, ComponentNotAttachedError, ComponentNotConfiguredError

Examples: examples/minimal_node.py, examples/minimal_publisher.py,
examples/minimal_subscriber.py, examples/telemetry_publisher.py,
examples/composed_pipeline.py.

Documentation: getting-started guide, architecture overview, recommended patterns
and anti-patterns, migration notes from raw rclpy, FAQ, and a Sphinx-buildable API
reference under docs/.

Quality baseline: Ruff formatting and linting, Pyright strict mode for the core
package, and a pytest suite covering nominal transitions, edge transitions, activation
gating, failure propagation, and resource handling.

Known limitations

  • The public API is in the 0.x series — experimental stability level; minor bumps may
    include breaking changes
  • composed_pipeline.py demonstrates multi-component composition inside a single node;
    multi-node or domain-specific examples live in the planned companion repository
  • The MsgT type parameter on topic components is unbounded by design — no stable ROS 2
    message base class is exported by rosidl to constrain it without coupling
  • No companion examples repository (lifecore_ros2_examples) ships with this release
  • Lifecycle observability beyond standard rclpy logging (e.g. /diagnostics
    integration) is out of scope for the core library

Links