dsh-ros2 v0.9.0
Performance: offscreen motion rendering 5.4x faster
As an embodied-agent base plugin dsh-ros2 must be invoked very quickly. The offscreen render of robot motion was the bottleneck (1.9 Hz steady frame rate for the 2.76M-triangle lite_urdf scene).
Two key optimizations (verified)
- Render-dedicated low-poly meshes - new
scripts/simplify_visual_meshes.py(open3d quadric decimation, 2.76M -> 0.39M tris): 1.9 -> 7.1 Hz, RSS 962 -> 386 MB, mesh load ~90s -> ~40s, rendered content 99.7% preserved. (Do NOT use fast_simplification - its output loses ~70% of rendered content in OGRE.) - Direct pixel read -
rviz_offscreen_nodereads the OGRE render target viacopyContentsToMemoryinstead of PNG capture + decode: capture 38ms -> 1-2ms/frame, frame 74ms -> 31ms, frame rate 7.1 -> 10.2 Hz (at the rate cap).
Net effect
- Steady motion-render frame rate 1.9 -> 10.2 Hz (5.4x)
- RSS 962 -> 386 MB (2.5x less), mesh load ~90s -> ~40s
- Pixel output identical to the PNG path (verified)
- Per-100-frame
frame-timinglog for frame-budget observability
Docs: architecture.md 5.1, robot-state-vision-test.md 8, README, CHANGELOG.