Repository navigation
gsc_pgo: online and offline PGO - #2587
Open
jeff-hykin wants to merge 1248 commits into
Open
jeff-hykin wants to merge 1248 commits into
jeff-hykin wants to merge 1248 commits into
Conversation
jeff-hykin
requested review from
leshy,
mustafab0,
paul-nechifor and
spomichter
as code owners
June 24, 2026 07:23
Contributor
Greptile SummaryThis PR introduces the
Confidence Score: 4/5
Important Files Changed
Reviews (52): Last reviewed commit: "gsc_pgo: relock rust deps after merging ..." | Re-trigger Greptile |
jeff-hykin
enabled auto-merge (squash)
June 24, 2026 08:35
- drop the comparison PGO modules, keep gsc_pgo only - guard SQL table names, lock the tf lazy-load, close cached stores - port the apriltag gate helpers add_april needs; mypy strict fixes - move the gsc_pgo CLI scripts into gsc_pgo/scripts/ and use descriptive names - MultiTBuffer.lookup (no warning) for DbTf; regenerate all_blueprints.py - includes the pose-setter fix from jeff/fix/pose_setter_for
A LocationConstraint carries ready-made BetweenFactor args: the body->location pose, a full 6x6 covariance, to_id, frame_id and a constraint_instance_id that lets a source revise or remove an earlier constraint.
…e graph) A passive test rig: Point-LIO reads the Mid-360, the PGO builds the loop-closed pose graph and Rerun draws keyframes and edges. Drive the dog separately.
TomCC7
disabled auto-merge
June 26, 2026 03:27
tf lookups no longer load the whole tf history into RAM. A `tf_graph` stream records each topology change; rows are tagged with their child frame and looked up with one index-served query, with the graph cached in RAM when it is small. Includes reparent, churn and 54k-row deep-tree tests.
The raw baseline is now the recording's world->base_link tf sampled at each odom time, with a startup tolerance window. Recordings without tf are rejected rather than silently falling back to odom poses.
- remove unused helpers, hardcode the tf_graph stream name - order graph snapshots by (ts, id) so same-timestamp changes resolve correctly - drop the hardcoded /tf_static LCM topic; an optional tf_static In port is folded into the tf stream and flagged static
Adds a DeformationNode message and a tf_deformation_nodes stream (recorded by default, a no-op when unconnected). gsc_pgo publishes it, and DbTf blends the per-node corrections into lookups along matching tf edges.
…cess - DbTfLive (in-RAM) and DbTfSql (indexed queries + deformation correction) - post_process detects AprilTags when no tag stream exists and persists the deformation nodes and pose graph as typed streams - post_process honors each scan's frame_id instead of a hardcoded lidar frame - eval: tf-based raw pose lookup; skip DbTfSql tests when sqlite-vec can't load
Co-authored-by: yimo <yimo@dimensional.org> Co-authored-by: leshy <lesh@sysphere.org>
Co-authored-by: bogwi <bogdan@dimensional.org>
Co-authored-by: Paul Nechifor <paul@nechifor.net>
Co-authored-by: leshy <lesh@sysphere.org>
Co-authored-by: Moshi Wei <wmswms938@gmail.com>
…4566) Co-authored-by: Moshi Wei <wmswms938@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Sam Bull <git@sambull.org>
gsc_pgo is pinned to the public gsc_pgo repo and wrapped as a native module. Alongside it: the jnav PGO message types (Graph3D, GraphDelta3D, Landmark, Marker), jnav utils (apriltags, recording_db, trajectory_metrics, kitti, voxel_map, module_loading), comparison PGO modules, loop-closure eval scripts, tf tree support in the memory2 store, the offline map post-processing pipeline (post_process, add_april, detect_tags, make_rrd) and docs for both.
…ePGO's import Unused apriltag, trajectory-metric and drift-injection helpers, the unused LoopClosure spec and base_link_from_camera_optical are gone; BaselinePGO imports Ivan's PGO core from dimos/navigation/go2/loop_closure.
…ecks, as main's native modules now need
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
dimos run unitree-go2-mid360-pgo dimos run unitree-go2-pgo # very conservativeOffline PGO (uses april tags for correction if available)
Online PGO replay
Note: offline does better than online, but online is so good it doesn't really matter
Examples