Adding Lifecycle support for Bondcpp#64
Closed
SteveMacenski wants to merge 4 commits intoros:ros2from
Closed
Conversation
Member
Author
|
Also resolves an issue in the ROS2 port causing un-clean exits on shutdown (and general defensive programming). @mikaelarguedas @dirk-thomas can I get a review? |
This was referenced Jul 28, 2020
Merged
Member
Author
|
#67 supersedes |
Member
The current maintainer of this package is @mjcarroll: Line 10 in 49f4238 |
mjcarroll
pushed a commit
that referenced
this pull request
Sep 1, 2020
Supersedes #64 to: * Enable lifecycle nodes in ROS2 * Fix ROS2 porting issues * Fix ROS2 WaitUntilXYZ() functions with spins on nodes already spinning (requirement for this to work) * Tested to be actually working now & integrated into Nav2 * No reduced capability * Removes a number of crashing problems introduced in porting
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.
Motivated by a desire to have bond used in navigation2 where all the servers are lifecycle servers. I'm having the lifecycle manager (role to transition nodes up and down to given states) also collect bond information to make sure that the lifecycle nodes aren't just transitioning correctly but during run-time are functioning properly and reporting a heartbeat. This gives us high confidence that nothing has crashed that might be an important watchdog or something that could cause critical failures. I'd even recommend baking this into the normal nodes so that its batteries included.
Using interfaces implemented by both node types since there's no base class they share to cast into. I tried to template it first off (my preferred route) but that would involve templating all the SM stuff too which would be not very clean for a simple addition.
WIP: By the end of the week I'll make the navigation side application to make sure its working properly with lifecycle and normal nodes alike.No longer WIP, ready for review @dirk-thomasEdit: ros-navigation/navigation2#1869 for reference