Skip to content

feat: add optional ROS 2 Lifecycle support and fix shutdown deadlock#552

Open
BOOPESH-foxy wants to merge 3 commits into
SICKAG:developfrom
BOOPESH-foxy:feature/optional-lifecycle-support
Open

feat: add optional ROS 2 Lifecycle support and fix shutdown deadlock#552
BOOPESH-foxy wants to merge 3 commits into
SICKAG:developfrom
BOOPESH-foxy:feature/optional-lifecycle-support

Conversation

@BOOPESH-foxy

Copy link
Copy Markdown

Description

This PR introduces optional support for ROS 2 Managed Nodes (Lifecycle) and resolves a critical shutdown deadlock in the scansegment_xd component.

Key Changes

  • Lifecycle Support: Implemented rclcpp_lifecycle state machine. Users can now toggle between standard and managed nodes using the lifecycle_managed_node:=true argument.
  • Deadlock Fix: Resolved a threading deadlock in MsgPack handling within scansegment_threads.cpp by implementing asynchronous signaling during the shutdown sequence.
  • Compatibility: Maintained 100% backward compatibility for ROS 1 and standard ROS 2 builds.
  • Infrastructure: Updated 30+ launch files to include the new lifecycle argument and added technical documentation in doc/lifecycle_node.rst.

Related Issues

Timple and others added 3 commits February 17, 2026 17:51
- Implemented standard ROS 2 Managed Node interface (Configure, Activate, Deactivate, Cleanup).
- Resolved MsgPack thread deadlock in scansegment_xd via async signaling.
- Updated 30+ launch files to support 'lifecycle_managed_node' argument.
- Added technical documentation in doc/lifecycle_node.rst and updated CHANGELOG.
- Maintained 100% backward compatibility for ROS 1 and standard ROS 2 builds.
@rostest

rostest commented Feb 17, 2026

Copy link
Copy Markdown
Collaborator

Dear @BOOPESH-foxy

Thank you very much for your tickets and the resulting suggestions for improvement. We will review the PR and evaluate and test your changes during March.

@rostest

rostest commented Mar 25, 2026

Copy link
Copy Markdown
Collaborator

All in all, the changes look good. To make coordination with SICK management easier, we’ve created the feature branch feature/optional-lifecycle-support, which we can use to continue testing here. We’ve incorporated your changes and will continue to review them. Since we have already released version 3.9., we’ll include these changes in version 3.10. or a similar release.

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.

feat: add managed state transitions (Lifecycle) for ROS 2 driver ROS 2 shutdown deadlock in scansegment_xd (picoScan/multiScan)

3 participants