Skip to content

Commit 0d68ce0

Browse files
awesomebytesclaude
andcommitted
PLAN.md: TF via rclcppyy GO — 6.7-14x ingest CPU, rclcppyy.tf shipped
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent f1af6e7 commit 0d68ce0

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

PLAN.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,20 @@ mechanically, not by discipline.
438438
quick-run lines. **Kit scoreboard: 7 spikes, 7 GOs** (bt, pcl, ompl, nav2,
439439
moveit, control, vision capstone), each with honest boundaries.
440440

441+
- **TF via rclcppyy (2026-07-11, GO; 28854f7, merged):** Sam's assumption
442+
confirmed with source-cited evidence — stock Python tf2_ros feeds the buffer
443+
with a Python for-loop per transform (fully-deserialized TFMessage, GIL
444+
held), while C++ TransformListener ingests natively on its own thread.
445+
Measured: ingest CPU 6.7×–14× lower (grows with tf rate: 19.3% → 1.4% at
446+
10k tf/s), lookups ~5.4× faster even at idle, Python lookups degrade
447+
further under load (GIL contention). Deliverable in **rclcppyy proper**
448+
(`rclcppyy.tf` — tf2 is core ROS, not an opt-in kit): TransformListener
449+
helper on plain tf2::BufferCore. New gotcha class found: overloaded C++
450+
methods can MIS-RESOLVE under cppyy to a compilable-but-wrong overload that
451+
bus-errors (tf2_ros::Buffer lookupTransform) — prefer single-signature base
452+
classes or cppdef wrappers. 8 new tests in the DEFAULT suite (now 16).
453+
`pixi run bench-tf` reproduces the table. Docs: `docs/tf/REPORT.md`.
454+
441455
## Risks & mitigations
442456

443457
- **conda-forge cppyy behaves differently from the pip wheel** (cling resource

0 commit comments

Comments
 (0)