dsh-ros2 v0.9.2
Fixed: double rendering eliminated (30Hz request reaches ~22Hz, 2x)
Profiling at rate=30 exposed the real bottleneck: VisualizationManager::onUpdate() already renders the scene (ogre_root_->renderOneFrame(), gated by render_requested_ / >10ms wall time), and the main loop then called win->render() again - a second render of the same scene every frame (+31ms/frame).
Results (0.39M-tris low-poly, 1000x750, rate=30)
| config | fps |
|---|---|
| original (double render + events every frame) | 11.1 Hz |
| + events throttle (5 frames) | 14.2 Hz |
| + remove redundant win->render() | 21.5-24.2 Hz (motion 21.5 Hz steady, 400+ frames) |
| regression: 10Hz request | 10.3 Hz (at cap) |
- Published frame is pixel-identical to before (verified fg 73331).
- TF refresh stays at full rate (onUpdate every frame; the v0.9.1 onUpdate/2 compromise is no longer needed).
- Code comment documents the cause. Docs: architecture.md 5.2, robot-state-vision-test.md 8.4.