Fix state-only planning scene diff classification - #3820
Open
ktyang512 wants to merge 1 commit into
Open
Conversation
Clear link padding and scale from exact state-only publications and add an end-to-end regression for receiver update classification. Assisted-by: OpenAI Codex
riv-mjohnson
approved these changes
Aug 18, 2026
riv-mjohnson
left a comment
Contributor
There was a problem hiding this comment.
Thanks for looking into this!
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.
Description
PlanningScene::getPlanningSceneDiffMsg()includes the current link paddingand scale even when the pending monitor update contains only robot state. On
the receiving side, either field prevents
PlanningSceneMonitorfromclassifying the message as a state-only update.
This clears
link_paddingandlink_scalein the exactUPDATE_STATEpublication branch, alongside the attached collision objects that are already
removed there. The initial full-scene message still carries padding and scale,
and updates that include another update bit do not enter this branch.
The regression test captures the actual published full scene and state diff,
then applies both messages to another monitor and verifies that the diff is
classified as
UPDATE_STATE.This addresses the padding/scale cause identified in #3794. As noted in the
issue comments, other causes such as world/OctoMap updates and RViz rendering
behavior can still produce broader updates, so this PR does not claim to fix
every source of the reported RViz slowdown.
Testing
present and the receiving monitor reports update type
15instead ofUPDATE_STATE(1).ctest -R "^planning_scene_monitor_test_" --output-on-failure(10/10consecutive runs)
ctest --output-on-failureinmoveit_ros_planning(6/6 passed)clang-format-14 --dry-run --Werroron both changed filesclang-tidyon both changed filesgit diff --checkChecklist
AI assistance disclosure: OpenAI Codex was used to inspect the relevant code
paths, help draft the regression test, and review the patch. The behavior and
scope were checked against the current source, and the reported tests were run
before submission.