Skip to content

refactor(mapping): publish generated PGO graphs with exact source stamps - #4693

Closed
TomCC7 wants to merge 1 commit into
cc/feat/cdr-mapping-clifrom
cc/feat/cdr-pgo-module
Closed

TomCC7 wants to merge 1 commit into
cc/feat/cdr-mapping-clifrom
cc/feat/cdr-pgo-module

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

The live PGO mapper uses generated CDR PointCloud2/PoseStamped input and PointCloud2/PoseArray/weighted LineSegments3D/Float32 output. Port names, subscriptions, frame dropping, graph update conditions, telemetry options and PGO algorithms remain unchanged. Graph and map publications retain the lidar's exact source Header time.

Unitree stale-time repair accepts generated Header stamps alongside its existing Timestamped callers. Integer nanoseconds prevent adjacent valid captures from appearing stale through float rounding. A repaired generated message owns a copy; other subscribers retain the input bytes. The existing calibration window, stale extrapolation, frozen-firmware clock fallback and legacy caller mutation behavior are retained. The separate raw WebRTC conversion function still returns its old type pending the Go2 connection layer; this is not a wire fallback decoder.

Linear: https://linear.app/dimensional/project/message-encoding-refactor-05a3ddb4af3e/overview

Parent: #4692.

File category Files Purpose
Runtime 2 Generated live PGO ports/graph values and Header-aware stale repair
Tests 2 Actual CDR memq Module→map/graph/telemetry; original six stale-repair cases plus nanosecond/ownership/frozen-clock cases
CI 1 Same installed production-module tests and two strict files

Validation: 10 source and the same 10 installed-wheel tests pass, two strict production files and applicable hooks pass. Actual Module ports use explicit memq:// LCM with local RPC IPC and real GTSAM. Installation paths asserted to be site-packages. Normal main wheel SHA256: e8c3bc1f698427b9f0e36d015dfb480c6b6788dbe3e38ee82eae7f3d18483711.

Manual offline review after the normal development install with mapping dependencies:

OMP_NUM_THREADS=2 OPENBLAS_NUM_THREADS=2 python -m pytest \
  --noconftest --import-mode=importlib -o addopts='' -q \
  dimos/navigation/go2/loop_closure/test_generated_module.py \
  dimos/robot/unitree/type/test_lidar.py -k 'not test_init'

The explicitly deselected test_init reads the historical office_lidar recording; no historical decoding acceptance is claimed. The new integration creates synthetic input, subscribes to real output ports, checks known map/keyframe geometry and exact stamps, then owns all transport/Module cleanup. No robot, multicast network configuration, CI polling or benchmark execution. Known optional GTSAM pytest metadata mismatch remains as documented in #4691. Default cutover and the remaining robot/relocalization consumers are later layers.

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.

1 participant