Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide lifecycle servicing #27

Open
norro opened this issue Jul 21, 2020 · 3 comments
Open

Provide lifecycle servicing #27

norro opened this issue Jul 21, 2020 · 3 comments

Comments

@norro
Copy link
Collaborator

norro commented Jul 21, 2020

The mode manager usually knows the target state/mode and the current state/mode (via mode_inference) of a system or node. Currently we assume, that there is a trivial transition to the target state, e.g, activate to go to active, deactivate to go to inactive.

However, this is not always true, e.g., if actual state is already the target state, or if target state can only be reached with >1 transitions. In order to allow that, mode manager needs to implement some kind of lifecycle service that knows how to get a node from any state to any other.

@chcorbato
Copy link

The system modes's extended lifecycle model could be node specific.
For example, a node might be able to transition directly from active status in mode A to active status in mode B, but a different node might need to transition first to unconfigured status.
Actually, maybe this 2nd case should be the default one for node safety.

@norro
Copy link
Collaborator Author

norro commented Jul 22, 2020

Actually, the 2nd case is the only one currently intended by the ROS 2 Managed Nodes design document. I.e., reconfiguration, which is what we do when switching mode, is only allowed in the unconfigured state.

Currently we ignore this constraint (for now) and re-configure (switching modes) while staying in the active state.

@chcorbato
Copy link

Currently we ignore this constraint (for now) and re-configure (switching modes) while staying in the active state.

I think MROS test cases could help analyse whether this (going through unconfigured) is something to enforce, or not, and promote guidelines for handling dynamic node configuration and a reference implementation applying them in navigation2.

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

No branches or pull requests

2 participants