Skip to content

dsh-ros2 v0.9.1

Choose a tag to compare

@StvLi StvLi released this 21 Aug 02:30
· 32 commits to main since this release

Performance: 30 Hz request measurement + loop-budget optimizations

Measuring at rate=30 revealed the frame rate is capped by fixed per-loop overhead independent of the requested rate (10 Hz and 30 Hz both landed near 11 Hz): onUpdate ~30ms + processEvents ~30ms + render ~31ms.

Optimizations

  1. Throttle app.processEvents() to every 5 frames - per-frame Qt event processing triggers paint events causing a second OGRE render (~30ms/frame). events 30ms -> 0ms.
  2. vm.onUpdate() every 2 frames - rendering stays per-frame; TF pose refresh at 15Hz is buffered by the FrameManager transformer (no data loss). Display-update cost amortized in half.

Measured (1000x750, 0.39M-tris low-poly, 30Hz request)

config fps
original (events every frame) 11.1 Hz
+ events throttle 14.2 Hz
+ onUpdate/2 16.2 Hz
800x600 + all 17.1 Hz
30Hz + motion 15.6 Hz
regression: 10Hz request 10.3 Hz (at cap)

Conclusion: llvmpipe software rasterization (render 27-31ms/frame, scales with triangle count not resolution) is the hard floor; 30 Hz requires GPU passthrough (non-llvmpipe). Docs: architecture.md 5.2, robot-state-vision-test.md 8.4.