Fix threading issue for collision velocity scaling in MoveIt Servo #2517
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
Fixes a thread safety issues in the collision monitor in MoveIt Servo. Basically, the shared atomic double
collision_velocity_scale_
was being reset to1.0
at the start of each collision check loop, which would sometimes be picked up in theServo::getNextJointState
, so the robot ends up moving even though the scene is in collision. E.g.,To fix this, we should use a local variable to compute the new scaling factor, and only set the shared variable at the end of the collision processing loop.
Checklist