Native C++ pose-graph-optimization (PGO) for DimOS loop closure — GTSAM iSAM2 + PCL ICP, with Scan-Context descriptors and AprilTag landmark factors.
Extracted from the DimOS nav stack so the C++ and its nix flake can be built and pinned independently of the Python tree.
nix build .#default # -> result/bin/pgoOutputs pgo (the live module binary) and pgo_landmark_test (a no-LCM lockstep
unit test driving SimplePGO directly).
main.cpp— LCM I/O loop, wires odometry/lidar/tags into the optimizersimple_pgo.{cpp,h}— iSAM2 pose graph + ICP loop closurescan_context.{cpp,h}— Scan-Context place descriptors / loop candidate searchcommons.{cpp,h},point_cloud_utils.hpp— shared helpersdimos_native_module.hpp— DimOS NativeModule LCM gluemsgs/*.hpp— C++ wire helpers mirroringdimos.navigation.jnav.msgs.*(Graph3D,GraphDelta3D,Landmark); keepencode()in sync with the Python decoders.
dimos/navigation/jnav/components/loop_closure/gsc_pgo/module.py, via
nix build "github:jeff-hykin/gsc_pgo#default".