Skip to content

Fix CAMP sim lockup: non-blocking TF lookup in running-task overlay#137

Merged
rolker merged 1 commit into
jazzyfrom
feature/issue-136
Jun 28, 2026
Merged

Fix CAMP sim lockup: non-blocking TF lookup in running-task overlay#137
rolker merged 1 commit into
jazzyfrom
feature/issue-136

Conversation

@rolker

@rolker rolker commented Jun 28, 2026

Copy link
Copy Markdown
Owner

Closes #136

Summary

Fixes the CAMP sim lockup introduced by the P2 running-task overlay (#129 / PR #135).

RunningTasksOverlay::rebuildItems called ROSWidget::getGeoCoordinate per task
pose on the GUI thread, every TaskFeedback (~1 Hz+). getGeoCoordinate does
a blocking transform(..., "earth", durationFromSec(1.5)) with a second 1.5 s
retry in its catch. When map→earth isn't immediately available, each pose blocks
the UI thread up to ~3 s × N poses × every cycle → CAMP freezes.

Fix

getGeoCoordinate gains an optional timeout_sec (default 1.5, so existing
callers are unchanged); the overlay passes 0.0 for a non-blocking lookup. A pose
that isn't transformable this cycle is skipped and reappears next rebuild once the
quasi-static map→earth transform is available. A blocking TF lookup on the GUI
thread is never acceptable.

Testing

colcon build clean; 130 tests, 0 failures. The map overlay still renders once
the transform is available; the UI no longer blocks when it isn't.


Authored-By: Claude Code Agent
Model: Claude Opus 4.8 (1M context)

RunningTasksOverlay::rebuildItems called getGeoCoordinate per task pose on the
GUI thread every TaskFeedback (~1 Hz+). getGeoCoordinate did a blocking 1.5 s TF
wait (plus a 1.5 s retry) — when map->earth wasn't immediately available the UI
froze for up to ~3 s per pose, every cycle, locking up CAMP.

getGeoCoordinate gains an optional timeout_sec (default 1.5 s, preserving existing
callers); the overlay now passes 0.0 for a non-blocking lookup. A pose that isn't
transformable this cycle is skipped and reappears on the next rebuild once the
quasi-static transform is available — the UI never blocks.

Regression from #129 (PR #135).
Copilot AI review requested due to automatic review settings June 28, 2026 18:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@rolker
rolker merged commit 1625d96 into jazzy Jun 28, 2026
1 check failed
@rolker
rolker deleted the feature/issue-136 branch June 28, 2026 18:09
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

Successfully merging this pull request may close these issues.

CAMP locks up in sim: running-task overlay does blocking TF lookups on the GUI thread

2 participants