Prefer to use the active controller if multiple controllers apply #2251
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.
Description
Resolves #1631
Currently, if controller
a
is active ,nractive[a]
will be1
. If it is inactive,nractive[a]
will be0
. Assuming controllera
is active (nractive[a] = 1
) and controllerb
is inactive (nractive[b] = 0
), we would follow the second condition (nractive[a] > nractive[b]
)and returnfalse
. This means that preference is given to inactive controllers.In practice, if two controllers A and B are able to control the same number of joints and only controller A is active,
TrajectoryExecutionManager
will select the inactive controller B first and activate it. For a subsequent move, we select the now-inactive controller A, and use that, switching between controller A and B for each move.This change prioritizes the active controller first, such that if controller A is active, it will be used for all subsequent moves until it is deactivated.