{"repo":"rsasaki0109/lidar_slam_ros2","free":true,"listed":false,"github":"https://github.com/rsasaki0109/lidar_slam_ros2","clone":"git clone https://github.com/rsasaki0109/lidar_slam_ros2.git","description":"ROS 2 LiDAR SLAM for pointcloud-map authoring, benchmarking, and Autoware-compatible map workflows.","language":"Python","stars":839,"topics":["autoware-compatible","benchmarking","gnss","lidar","lidar-slam","loop-closure","map-authoring","mapping","pointcloud-map","robotics","ros2"],"license":"BSD-2-Clause","category":"robotics_mapping","readme_excerpt":"# lidarslam_ros2\n\n[![CI](https://github.com/rsasaki0109/lidar_slam_ros2/actions/workflows/main.yml/badge.svg?branch=develop)](https://github.com/rsasaki0109/lidar_slam_ros2/actions/workflows/main.yml)\n[![License: BSD-2-Clause](https://img.shields.io/badge/License-BSD--2--Clause-blue.svg)](https://opensource.org/licenses/BSD-2-Clause)\n[![ROS 2: Humble | Jazzy](https://img.shields.io/badge/ROS%202-Humble%20%7C%20Jazzy-22314E?logo=ros&logoColor=white)](#support-and-license)\n[![GitHub stars](https://img.shields.io/github/stars/rsasaki0109/lidar_slam_ros2?style=flat&logo=github)](https://github.com/rsasaki0109/lidar_slam_ros2/stargazers)\n\n**Turn a rosbag into a map you can actually drive on.**\n\nROS 2 LiDAR SLAM that outputs an Autoware-compatible map bundle — `pointcloud_map/`,\n`map_projector_info.yaml`, and auto-generated lanelet2. Frontend is `RKO-LIO` (MIT), backend is\n`graph_based_slam` (BSD-2). No GPL components on the default workflow.\n\n![Point cloud map built by this stack (Shinjuku demo bag)](lidarslam/images/map.png)\n\n*Shinjuku point cloud map built from a demo rosbag with this stack — start at the\n[Quickstart](#quickstart). `develop` is the default branch; current release\ncandidate notes: [v0.9.0](docs/releases/v0.9.0.md).*\n\n## Why lidarslam_ros2\n\nMost LiDAR SLAM stacks stop at a trajectory and a point cloud. This one ships the\nartifacts you need downstream:\n\n- **Autoware-compatible output** — `pointcloud_map/` + `map_projector_info.yaml` open\n  directly in Autoware map loaders; `verify_autoware_map.py` prints\n  `map_verify: PASS` on every saved bundle.\n- **lanelet2 auto-generation** — drivable lanelets from the SLAM trajectory,\n  validated for multi-segment Autoware routing.\n- **Surveyed ground truth** — releases are gated in CI by per-dataset APE\n  thresholds, including total-station checkpoints on a Livox MID-360\n  ([accuracy](#accuracy)).\n- **Loop closure, GPL-free** — opt-in built-in Scan Context, BEV / SOLiD /\n  STD/BTC-style Triangle descriptors, and 3D-BBS verification.\n- **Tunnel / fog degeneracy presets** — opt-in radar fusion and gravity\n  alignment map a ~500 m self-similar tunnel end-to-end\n  ([result](#tunnel-and-fog-mapping-without-degeneracy-collapse), [guide](docs/degeneracy-guide.md)).\n- **Deterministic offline mapping** — `graph_slam_offline_runner` (backend,\n  recorded odometry bag) and `scan_matcher_offline_runner` (frontend, raw bag)\n  produce *byte-identical* trajectories, loop edges and submaps; the release\n  gate enforces both.\n- **Globally refined, quality-gated maps** — clean-room plane bundle adjustment\n  refines submap poses under holdout-validated quality thresholds\n  ([evidence](docs/research/map-quality-baseline.md)).\n- **GNSS georeferencing** — optional GNSS constraints and projector metadata for\n  real-world coordinates.\n- **Camera-coloured point-cloud maps** — synchronized images are projected onto\n  registered LiDAR scans with calibration-aware, occlusion-resistant colouring.\n\n```mermaid\nflowchart LR\n    bag([\"rosbag2\"]) --> rko[\"RKO-LIO<br/>LiDAR-inertial odometry\"]\n    rko --> gbs[\"graph_based_slam<br/>loop closure + graph optimization\"]\n    gbs --> bundle[\"Autoware map bundle<br/>pointcloud_map · lanelet2 · projector info\"]\n```\n\n## Quickstart\n\nStart with [Getting Started](docs/getting-started.md). The [Product Contract](docs/product-contract.md)\ndefines the maintained surface; see [Distribution](docs/distribution.md) for installed names and binary-release limits.\n\n### Try it with Docker (one command, no build)\n\n```bash\nmkdir -p \"$PWD/lidarslam_output\"\ndocker run --rm -e LIDARSLAM_HOST_UID=\"$(id -u)\" -e LIDARSLAM_HOST_GID=\"$(id -g)\" \\\n  -v \"$PWD/lidarslam_output:/lidarslam_ws/output\" \\\n  ghcr.io/rsasaki0109/lidar_slam_ros2:humble\n```\n\nThis runs the 517 MB MID-360 demo with periodic progress and writes `lidarslam_output/mid360_demo/`.\nUID/GID returns it to the Linux user; see [Getting Started](docs/getting-started.md) for other platforms.\n\n### Build from source\n\n```bash\ncd ~/ros2_ws/src\ngit clone --recursive https://github.com/rsasaki0109/lidar_slam_ros2.git\ncd ..\nrosdep install --from-paths src --ignore-src -r -y\ncolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release\nsource install/setup.bash\n```\n\nIf you cloned without `--recursive`: `git -C src/lidar_slam_ros2 submodule update --init --recursive`.\n\nThen run one public dataset end to end — NTU VIRAL `tnp_01` (~580 s outdoor bag)\nthrough RKO-LIO + graph_based_slam into an Autoware-loadable map:\n\n```bash\ncd src/lidar_slam_ros2\nbash scripts/download_ntu_viral_tnp01.sh\nbash scripts/run_autoware_quickstart.sh\npython3 scripts/verify_autoware_map.py output/.../pointcloud_map\n```\n\n## Use your own bag\n\n```bash\nlidarslam-map run /path/to/rosbag2 --output-dir \"$PWD/output/my_map\"\n```\n\nOne command turns the bag into a complete Autoware map bundle:\n`pointcloud_map/` tiles, `map_projector_info.yaml`, and a `lanelet2_map.osm`\ngenerated from the loop-closed trajectory.\n\nDirect launch commands, required topics, GNSS / IMU pre-integration, and\ndynamic-object filtering are in [docs/workflows.md](docs/workflows.md).\n\n![Autoware map loaders rendering a pointcloud_map authored by this stack](lidarslam/images/autoware_map_loader_proof.png)\n\n## Camera-coloured point-cloud maps\n\nThe pipeline registers LiDAR scans with the corrected trajectory, then projects\nsynchronized camera pixels onto that geometry. This RTK-SLAM Construction Hall\n1 result follows the full estimated 60 m walking loop.\n\n![Camera-coloured SLAM point-cloud map and its estimated trajectory](lidarslam/images/map_flythrough_rtkslam.webp) ([MP4](lidarslam/images/map_flythrough_rtkslam.mp4) · [GIF](lidarslam/images/map_flythrough_rtkslam.gif))\n\nK4 has 4.91 M points, 76.66% colour coverage, and 11/11 profile checks passing. Pose-aware dynamic cleaning before K3's camera fusion improves held-out RGB median from 41.17 to 40.54 and planar roughness median from 7.23 to 6.40. See the [release-readiness record](docs/research/colored-map-release-readiness-2026-07.md) for paired K3/K4 evidence and limits.\nThe sequence is from RTK-SLAM (CC-BY 4.0); its total-station checkpoints also drive the [accuracy gate](#accuracy).\n\nIf graph optimization outputs sparse keyframes, the coloured-map pipeline can\npropagate their corrections onto the dense SLAM pose stream automatically:\n\n```bash\npython3 tools/colored_map/colored_map_pipeline.py \\\n  <bag> output/<run>/traj_corrected.tum output/<run>/colored_map \\\n  --raw-traj output/<run>/traj_raw.tum \\\n  --extrinsic configs/gaussian_splatting/<lidar_camera_extrinsic>.yaml\n```\n\nThe pipeline caches `dense_corrected_trajectory.tum` and rebuilds stale downstream artifacts; use `--force-trajectory` for an explicit refresh.\nMoving rigs can add `--refine-spatiotemporal-calibration`; see the [held-out-gated design and RTK-SLAM result](docs/research/colored-map-spatiotemporal-calibration-2026-07.md).\n\n### Cross-repository SLAM benchmark\n\n`public_suite_v1.yaml` connects Localization Zoo trajectories to trajectory,\ngeometry, real-RGB, runtime, and memory gates, with frozen OFF/ON candidate\npromotion across MID-360, HILTI, and RTK-SLAM surveyed references. Commands,\nreplay, and adoption records:\n[Benchmarking and release gate](docs/benchmarking.md#slam-candidate-regression).\n\n## Tunnel and fog mapping without degeneracy collapse\n\nOn the ~500 m self-similar Fyllingsdalen tunnel from the [NTNU LiDAR degeneracy datasets](https://github.com/ntnu-arl/lidar_degeneracy_datasets),\nthe plain frontend covers 98.7 m before along-axis degeneracy freezes it. The opt-in\npresets (radar ego-velocity fusion + sliding-window gravity alignment) map the whole\ntunnel — reach **504.5 m**, transverse RMS 1.34 m, end-height −4.7 m (−33 m without\ngravity alignment) — and cut fog clutter-lock drift 35.6 → 9.6 m, with defaults\nunchanged (a MID-360 driving holdout stays byte-identical). Symptom table:\n[Degeneracy Resilience Guide](docs/degeneracy-guide.md); evidence: [research note](docs/research/gravity-window-alignment-2026-07.md).\n\n![NTNU tunnel SLAM map: top view and gravity-alignment before/after side view](lidarslam/images/tunnel_degeneracy_map.png)\n\n## Accuracy\n\nCurrent numbers from the release-gate profiles (`scripts/release_profiles.yaml`).\nThe pre-release gate rejects missing evidence and regressions in every blocking profile.\n\n| Dataset | Sensor | Reference | APE RMSE | Gate (pass) |\n| --- | --- | --- | --- | --- |\n| NTU VIRAL `tnp_01` (outdoor, ~580 s) | Ouster OS1-16 + VN-100 | Leica prism ground truth | **0.95 m** (best 0.87) | ≤ 1.00 m |\n| RTK-SLAM Construction Hall 2 (indoor, ~600 s) | Livox MID-360 | total-station checkpoints¹ | **0.086 m** (median 0.064, 16/16) | ≤ 0.30 m |\n| RTK-SLAM Construction Hall 1 (indoor, ~741 s) | Livox MID-360 | total-station checkpoints¹ | **0.321 m** (median 0.163, 16/16) | ≤ 0.55 m |\n| RTK-SLAM Stadtgarten 2 (outdoor park, ~876 s) | Livox MID-360 | total-station checkpoints¹ | **0.426 m** (median 0.264, 19/19) | report-only² |\n| RTK-SLAM Stadtgarten 1 (outdoor park, ~1 km loop) | Livox MID-360 | total-station checkpoints¹ | **0.838 m** (median 0.511, 36/36) | report-only² |\n| Newer College `Maths-Hard` (~320 m loop) | Ouster OS0-128 | ICP registration to survey-grade map | candidate evidence required locally | ≤ 0.10 m |\n\n¹ Surveyed checkpoints from the public RTK-SLAM dataset (CC-BY 4.0), scored like\nits published baselines (dense odometry trajectory).\n² Outdoor profiles soak as report-only before graduating; the former GLIM\ncross-validation gate is also report-only since v0.5. Methodology and\ncaveats: [docs/comparison.md](docs/comparison.md).\n\nReproduce locally:\n```bash\npython3 scripts/download_rtk_slam_dataset.py --sequence construction_seq2 --eval-assets\npython3 scripts/run_rtk_slam_accuracy_suite.py\n```\n\nDetails and optional MID-360 / production-bundle gates: [docs/benchmarking.md](docs/benchmarking.md).\n\n## Degeneracy resilience (fog / tunnels)\n\nOpt-in radar/intensity gates recover fog \"clutter-lock\" (drift **35.6 → 11.2 m**","default_branch":"develop","files":1093,"tree":[".dockerignore",".github/ISSUE_TEMPLATE/autoware-pointcloud-map.yml",".github/ISSUE_TEMPLATE/benchmark-report.yml",".github/ISSUE_TEMPLATE/bug-report.yml",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature-request.yml",".github/ISSUE_TEMPLATE/first-map-validation.yml",".github/ISSUE_TEMPLATE/sensor-support.yml",".github/workflows/bounded-filesystem-exhaustion.yml",".github/workflows/docker.yml",".github/workflows/docs-site.yml",".github/workflows/install-upgrade.yml",".github/workflows/main.yml",".github/workflows/official-rko-binary-compatibility.yml",".github/workflows/package-manager-install-upgrade.yml",".github/workflows/real-data-e2e.yml",".github/workflows/release.yml",".gitignore",".gitmodules","AGENTS.md","CHANGELOG.md","CITATION.cff","CODE_OF_CONDUCT.md","CONTRIBUTING.md","Dockerfile","GOVERNANCE.md","LICENSE","README.md","RELEASING.md","SECURITY.md","SUPPORT.md","Thirdparty/3d_bbs/COLCON_IGNORE","Thirdparty/3d_bbs/LICENSE","Thirdparty/3d_bbs/README.md","Thirdparty/3d_bbs/bbs3d/include/cpu_bbs3d/bbs3d.hpp","Thirdparty/3d_bbs/bbs3d/include/cpu_bbs3d/voxelmaps.hpp","Thirdparty/3d_bbs/bbs3d/include/discrete_transformation/discrete_transformation.hpp","Thirdparty/3d_bbs/bbs3d/include/gpu_bbs3d/bbs3d.cuh","Thirdparty/3d_bbs/bbs3d/include/gpu_bbs3d/stream_manager/check_error.cuh","Thirdparty/3d_bbs/bbs3d/include/gpu_bbs3d/voxelmaps.cuh","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/filter.hpp","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/gravity_alignment.hpp","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/pcd_io.hpp","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/pcd_loader.hpp","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/pcd_loader_without_pcl.hpp","Thirdparty/3d_bbs/bbs3d/include/pointcloud_iof/pcl_eigen_converter.hpp","Thirdparty/3d_bbs/bbs3d/src/cpu_bbs3d/bbs3d.cpp","Thirdparty/3d_bbs/bbs3d/src/cpu_bbs3d/voxelmaps.cpp","Thirdparty/3d_bbs/bbs3d/src/cpu_bbs3d/voxelmaps_io.cpp","Thirdparty/3d_bbs/bbs3d/src/gpu_bbs3d/bbs3d.cu","Thirdparty/3d_bbs/bbs3d/src/gpu_bbs3d/calc_score.cu","Thirdparty/3d_bbs/bbs3d/src/gpu_bbs3d/stream_manager/check_error.cu","Thirdparty/3d_bbs/bbs3d/src/gpu_bbs3d/voxelmaps.cu","Thirdparty/3d_bbs/bbs3d/src/gpu_bbs3d/voxelmaps_io.cu","VERSION","configs/colored_map_quality_profiles/hilti_exp04_report_only.yaml","configs/colored_map_quality_profiles/rtkslam_seq1_report_only.yaml","configs/enwide/os_imu_to_prism.json","configs/enwide/rko_lio_os0_degenerate_sota_v1.yaml","configs/enwide/rko_lio_os0_intensity_alias_v3.yaml","configs/enwide/rko_lio_os0_intensity_alias_v4.yaml","configs/enwide/rko_lio_os0_intensity_exploratory_v2.yaml","configs/enwide/rko_lio_os0_intensity_pearson_v5.yaml","configs/enwide/rko_lio_os0_oriented_grid_v6.yaml","configs/fast_livo2/camera_rtk_slam_mid360.yaml","configs/fast_livo2/mapping_hesaixt32_hilti22_benchmark_map.launch","configs/fast_livo2/mapping_ouster_ntu_viral.launch","configs/fast_livo2/mapping_ouster_ntu_viral_map.launch","configs/fast_livo2/mapping_rtk_slam_mid360.launch","configs/fast_livo2/mapping_rtk_slam_mid360_map.launch","configs/fast_livo2/rtk_slam_mid360.yaml","configs/gaussian_splatting/isuzu_camera_top_extrinsic.yaml","configs/gaussian_splatting/koide_lidar_camera_extrinsic_approx.yaml","configs/gaussian_splatting/ntu_viral_tnp01_left_extrinsic.yaml","configs/gaussian_splatting/rtk_slam_cam0_extrinsic.yaml","configs/gaussian_splatting/rtk_slam_cam0_intrinsics.yaml","configs/glim/hilti2022_cpu/config.json","configs/glim/hilti2022_cpu/config_logging.json","configs/glim/hilti2022_cpu/config_ros.json","configs/glim/hilti2022_cpu/config_sensors.json","configs/glim/ntu_viral_ouster_cpu/config.json","configs/glim/ntu_viral_ouster_cpu/config_logging.json","configs/glim/ntu_viral_ouster_cpu/config_ros.json","configs/glim/ntu_viral_ouster_cpu/config_sensors.json","configs/glim/rtk_slam_mid360_cpu/config.json","configs/glim/rtk_slam_mid360_cpu/config_logging.json","configs/glim/rtk_slam_mid360_cpu/config_ros.json","configs/glim/rtk_slam_mid360_cpu/config_sensors.json","configs/hilti2022/cam0_body_extrinsic.yaml","configs/hilti2022/lidarslam_competitive_v2.yaml","configs/hilti2022/rko_lio_hilti2022_pandar.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_competitive_v2.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_direct_visual_exp01.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_intensity_disagreement.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_intensity_disagreement_low.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_intensity_disagreement_vlow.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_multiscan_observability.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_persistent_degeneracy.yaml","configs/hilti2022/rko_lio_hilti2022_pandar_visual_exp01.yaml","configs/map_quality_profiles/indoor_construction.yaml","configs/map_quality_profiles/outdoor_vegetation.yaml","configs/mid360_robot/livox_mid360_default.yaml","configs/mid360_robot/rko_lio_mid360_kidnap_tolerant.yaml","configs/mid360_robot/rko_lio_mid360_low_voxel_no_deskew.yaml","configs/mid360_robot/rko_lio_mid360_multiscan_observability.yaml","configs/mid360_robot/rko_lio_mid360_no_deskew.yaml","configs/mid360_robot/rko_lio_mid360_persistent_degeneracy.yaml","configs/mid360_robot/rko_lio_rtk_slam_mid360.yaml","configs/mid360_robot/rko_lio_rtk_slam_mid360_outdoor.yaml","configs/mid360_robot/rko_lio_rtk_slam_mid360_stadtgarten_seq2.yaml","configs/ntu_viral/lidarslam_candidate2_trajectory.yaml","configs/ntu_viral/official_shared_calibration.json","configs/ntu_viral/rko_lio_ntu_viral_competitive_v2.yaml","configs/real_data_e2e/driving_slam_mid360_v1.json","configs/slam_benchmark_profiles/competitive_slam_v1.yaml","configs/slam_benchmark_profiles/degenerate_lio_sota_v1.yaml","configs/slam_benchmark_profiles/phase7_regression_v1.yaml","configs/slam_benchmark_profiles/public_suite_v1.yaml","configs/slam_benchmark_profiles/rtk_slam_accuracy_v1.yaml","docker/entrypoint.sh","docker/fast_livo2_rtkslam_benchmark.Dockerfile","docker/glim_cpu_benchmark.Dockerfile","docker/ouster_sensor_sync_replay.Dockerfile","docs/3dgs-map-tutorial.md","docs/3dgs-viewer.md","docs/assets/3dgs-viewer/LICENSE","docs/assets/3dgs-viewer/README.txt","docs/assets/3dgs-viewer/index.html","docs/assets/3dgs-viewer/koide_lidar_primed.splat","docs/assets/3dgs-viewer/main.js","docs/assets/images/autoware_map_loader_proof.png","docs/assets/images/dynamic_object_filter_bag6_summary.svg","docs/assets/images/hilti-colored-map-sensor-frame-fix.jpg","docs/assets/images/lidar-camera-colorization-overlay.jpg","docs/assets/stylesheets/extra.css","docs/autoware-foxglove.md","docs/autoware-map-authoring.md","docs/autoware-quickstart.md","docs/benchmarking.md","docs/cli-compatibility.md","docs/comparison.md","docs/contracts/cli-v1.json","docs/contracts/v1-readiness.json","docs/dds-tuning.md","docs/degeneracy-guide.md","docs/distribution.md","docs/evidence/bounded-filesystem-exhaustion-2026-07-29.md","docs/evidence/cli-v1-install-2026-07-28.md","docs/evidence/docker-first-map-2026-07-28.md","docs/evidence/external-first-map-validations.json","docs/evidence/install-upgrade-2026-07-28-humble.json","docs/evidence/install-upgrade-2026-07-28-jazzy.json","docs/evidence/install-upgrade-2026-07-28.md","docs/evidence/leo-drive-packet-benchmark-2026-07-30.md","docs/evidence/ndt-omp-release-preflight-2026-07-29.md","docs/evidence/ndt-omp-release-progress-2026-07-30.md","docs/evidence/official-rko-binary-compatibility-2026-07-29.json","docs/evidence/official-rko-binary-compatibility-2026-07-29.md","docs/evidence/published-release-v0.9.0-2026-07-31.md","docs/evidence/real-data-soak-2026-07-28.json","docs/evidence/real-data-soak-2026-07-28.md","docs/evidence/recovery-command-contract-2026-07-29.md","docs/evidence/rko-voxel-compatibility-2026-07-31.md","docs/evidence/ros-apt-dependency-readiness-2026-07-31.json","docs/evidence/timestamp-order-preflight-2026-07-29.md","docs/external-first-map-validation.md","docs/getting-started.md","docs/golden-path-cli.md","docs/graph-slam-architecture.md","docs/index.md","docs/jetson-mid360-robot-runbook.md","docs/jetson-mid360-robot-scope.md","docs/jetson-mid360-static-tf-worksheet.md","docs/operational-reliability.md","docs/outreach/degeneracy-2026-07/article_ja.md","docs/outreach/degeneracy-2026-07/figures/fog_trajectory_xy.png","docs/outreach/degeneracy-2026-07/figures/gate_coverage_concept.png","docs/outreach/degeneracy-2026-07/figures/make_figures.py","docs/outreach/degeneracy-2026-07/figures/tunnel_trajectory_xy.png","docs/outreach/degeneracy-2026-07/summary_social.md","docs/product-contract.md","docs/real-data-e2e.md","docs/releases/v0.2.0.md","docs/releases/v0.2.1.md","docs/releases/v0.2.2.md","docs/releases/v0.3.0.md","docs/releases/v0.5.0.md","docs/releases/v0.6.0.md","docs/releases/v0.7.0.md","docs/releases/v0.9.0.md","docs/research/3dgs-2dgs-notes.md","docs/research/3dgs-actor-compositing-phase3.md","docs/research/3dgs-coco-actor-procurement.md","docs/research/3dgs-dataset-gen-phase1.md","docs/research/3dgs-depth-supervision-notes.md","docs/research/3dgs-detection-gap-novel-views.md","docs/research/3dgs-isuzu-viewcount-notes.md","docs/research/3dgs-koide-first-light.md","docs/research/3dgs-lidar-primed-detection-gap.md","docs/research/3dgs-mcmc-notes.md","docs/research/3dgs-ntu-viral-notes.md","docs/research/3dgs-postprocess-map-design.md","docs/research/3dgs-rl-drive-env-phase4.md","docs/research/3dgs-sensor-sim-phase2.md","docs/research/3dgs-sh-degree-notes.md","docs/research/3dgs-sim2real-gap-phase0.md","docs/research/3dgs-trajectory-flythrough-notes.md","docs/research/aist-ouster-rgb-map-2026-07.md","docs/research/assets/3dgs_isuzu_viewcount.png","docs/research/assets/3dgs_koide_best_sh1_15k.png","docs/research/assets/3dgs_koide_progression.png","docs/research/assets/3dgs_koide_ssim_compare.png","docs/research/byte-reproducible-map-authoring.md","docs/research/colored-map-dynamic-cleaning-2026-07.md","docs/research/colored-map-fusion-performance-2026-07.md","docs/research/colored-map-geometry-aware-fusion-2026-07.md","docs/research/colored-map-release-readiness-2026-07.md","docs/research/colored-map-spatiotemporal-calibration-2026-07.md","docs/research/competitive-v2-production-gate-2026-08.md","docs/research/degeneracy-solve-cross-sensor-gates-2026-07.md","docs/research/determinism-variance-attribution.md","docs/research/enwide-sota-benchmark-plan-2026-07.md","docs/research/enwide-tunnel-d-bringup-2026-07.md","docs/research/gnss-constraint-first-validation.md","docs/research/gravity-window-alignment-2026-07.md","docs/research/hilti-degeneracy-aware-solve-phase2-2026-07.md","docs/research/hilti-degeneracy-baseline.md","docs/research/hilti-degeneracy-classification-phase1.md","docs/research/hilti-exp04-graph-loop-weight-2026-07.md","docs/research/kitti-lo-tuning-2026-04.md","docs/research/kitti00-localization-zoo-graph-loop-2026-07.md","docs/research/lidar-degeneracy-radar-intensity-ab-2026-07.md","docs/research/map-quality-baseline.md","docs/research/map-refinement-clean-room-design.md","docs/research/mid360-graph-weight-ablation-2026-07.md","docs/research/mid360-map-refinement-sweep-2026-07.md","docs/research/mid360-robot-toolkit-2026-05.md","docs/research/phase7-plane-revisit-regression-2026-07.md","docs/research/phase8-rtkslam-plane-revisit-2026-07.md","docs/research/plane-revisit-pose-graph-2026-07.md","docs/research/public-suite-adoption-gate-2026-07.md","docs/research/radarless-tunnel-adaptive-applicability-gate-2026-07.md","docs/research/radarless-tunnel-velocity-blend-2026-07.md","docs/research/radarless-tunnel-yaw-rotated-prior-2026-07.md","docs/research/rko-lio-diagnostic-patch-characterization.md","docs/research/rtkslam-total-station-gt-methodology.md","docs/research/triangle-stack-2026-05-summary.md","docs/roadmap/v0.4.md","docs/roadmap/v0.5.md","docs/roadmap/v0.6.md","docs/roadmap/v0.7.md","docs/roadmap/v0.8.md","docs/roadmap/v0.9.md","docs/rosdistro-release.md","docs/schemas/benchmark-metrics-v1.schema.json","docs/schemas/bounded-filesystem-exhaustion-v1.schema.json","docs/schemas/diagnosis-v1.schema.json","docs/schemas/external-first-map-acceptance-v1.schema.json","docs/schemas/external-first-map-validations-v1.schema.json","docs/schemas/first-map-validation-receipt-v1.schema.json","docs/schemas/install-upgrade-v1.schema.json","docs/schemas/ndt-omp-release-readiness-v1.schema.json","docs/schemas/package-manager-install-v1.schema.json","docs/schemas/package-manager-release-readiness-v1.schema.json","docs/schemas/preflight-v1.schema.json","docs/schemas/preflight-v2.schema.json","docs/schemas/preflight-v3.schema.json","docs/schemas/published-release-v1.schema.json","docs/schemas/release-bundle-manifest-v1.schema.json","docs/schemas/release-image-v1.schema.json","docs/schemas/release-promotion-v1.schema.json","docs/schemas/rollback-plan-v1.schema.json","docs/schemas/ros-apt-dependency-readiness-v1.schema.json","docs/schemas/run-manifest-v1.schema.json","docs/schemas/run-manifest-v2.schema.json","docs/schemas/soak-report-v1.schema.json","docs/schemas/soak-report-v2.schema.json","docs/schemas/soak-report-v3.schema.json","docs/schemas/soak-report-v4.schema.json","docs/schemas/v1-readiness-contract-v1.schema.json","docs/schemas/v1-readiness-report-v1.schema.json","docs/social/autoware_map_authoring_post_v0.2.2.md","docs/v1-readiness.md","docs/workflows.md","graph_based_slam/CHANGELOG.rst","graph_based_slam/CMakeLists.txt","graph_based_slam/include/graph_based_slam/adaptive_voxel_plane_extractor.hpp","graph_based_slam/include/graph_based_slam/adjacent_edge_auto_scale.hpp","graph_based_slam/include/graph_based_slam/backend_core.hpp","graph_based_slam/include/graph_based_slam/bev_mutual_visibility.hpp","graph_based_slam/include/graph_based_slam/candidate_aggregator.hpp","graph_based_slam/include/graph_based_slam/degeneracy_aware_solve.hpp","graph_based_slam/include/graph_based_slam/degeneracy_diagnostics_csv.hpp","graph_based_slam/include/graph_based_slam/degeneracy_report_summary.hpp","graph_based_slam/include/graph_based_slam/dynamic_object_filter.hpp","graph_based_slam/include/graph_based_slam/external_io_ports.hpp","graph_based_slam/include/graph_based_slam/gnss_alignment.hpp","graph_based_slam/include/graph_based_slam/gnss_geometry.hpp","graph_based_slam/include/graph_based_slam/gnss_origin_accumulator.hpp","graph_based_slam/include/graph_based_slam/gnss_weighting.hpp","graph_based_slam/include/graph_based_slam/graph_based_slam_component.h","graph_based_slam/include/graph_based_slam/graph_slam_application.hpp","graph_based_slam/include/graph_based_slam/graph_state_store.hpp","graph_based_slam/include/graph_based_slam/hba_pyramid.hpp","graph_based_slam/include/graph_based_slam/localizability_analysis.hpp","graph_based_slam/include/graph_based_slam/loop_edge_robustifier.hpp","graph_based_slam/include/graph_based_slam/loop_edge_set.hpp","graph_based_slam/include/graph_based_slam/loop_search_schedule.hpp","graph_based_slam/include/graph_based_slam/loop_verifier.hpp","graph_based_slam/include/graph_based_slam/map_quality_metrics.hpp","graph_based_slam/include/graph_based_slam/map_refiner.hpp","graph_based_slam/include/graph_based_slam/map_saver.hpp","graph_based_slam/include/graph_based_slam/odometry_covariance_localizability.hpp","graph_based_slam/include/graph_based_slam/persistent_weak_direction.hpp","graph_based_slam/include/graph_based_slam/planar_map_filter.hpp","graph_based_slam/include/graph_based_slam/plane_ba.hpp","graph_based_slam/include/graph_based_slam/plane_feature_association.hpp","graph_based_slam/include/graph_based_slam/plane_revisit_constraints.hpp","graph_based_slam/include/graph_based_slam/plane_revisit_edge.hpp","graph_based_slam/include/graph_based_slam/point_cluster.hpp","graph_based_slam/include/graph_based_slam/pose_graph_optimization.hpp","graph_based_slam/include/graph_based_slam/registration_factory.hpp","graph_based_slam/include/graph_based_slam/scan_context.hpp","graph_based_slam/include/graph_based_slam/scatter_eigen_cost.hpp","graph_based_slam/include/graph_based_slam/se3_lie.hpp","graph_based_slam/include/graph_based_slam/serialized_work_drain.hpp","graph_based_slam/include/graph_based_slam/solid_descriptor.hpp","graph_based_slam/include/graph_based_slam/submap_bev_descriptor.hpp","graph_based_slam/include/graph_based_slam/submap_creation.hpp","graph_based_slam/include/graph_based_slam/synthetic_degeneracy_fixtures.hpp","graph_based_slam/include/graph_based_slam/three_d_bbs_loop_verifier.hpp","graph_based_slam/include/graph_based_slam/triangle_descriptor.hpp","graph_based_slam/include/graph_based_slam/triangle_descriptor_database.hpp","graph_based_slam/launch/graphbasedslam.launch.py","graph_based_slam/package.xml","graph_based_slam/param/graphbasedslam.yaml","graph_based_slam/param/graphbasedslam_indoor.yaml","graph_based_slam/src/filesystem_io_ports.cpp","graph_based_slam/src/filesystem_io_ports.hpp","graph_based_slam/src/graph_based_slam_component.cpp","graph_based_slam/src/graph_based_slam_component_impl.hpp","graph_based_slam/src/graph_based_slam_node.cpp","graph_based_slam/src/graph_slam_application.cpp","graph_based_slam/src/graph_slam_composition.cpp","graph_based_slam/src/graph_slam_composition.hpp","graph_based_slam/src/graph_slam_config.cpp","graph_based_slam/src/graph_slam_config.hpp","graph_based_slam/src/graph_slam_offline_runner.cpp","graph_based_slam/src/graph_slam_ros_adapter.cpp","graph_based_slam/src/map_quality_report_main.cpp","graph_based_slam/src/planar_map_filter_main.cpp","graph_based_slam/src/three_d_bbs_loop_verifier.cpp","graph_based_slam/test/test_adaptive_voxel_plane_extractor.cpp","graph_based_slam/test/test_adjacent_edge_auto_scale.cpp","graph_based_slam/test/test_aist_ouster_rgb_map_benchmark.py","graph_based_slam/test/test_aligned_trajectory_metrics.py","graph_based_slam/test/test_analyze_colored_point_cloud.py","graph_based_slam/test/test_applanix_gsof49_reference_extractor.py","graph_based_slam/test/test_applanix_gsof50_inspector.py","graph_based_slam/test/test_applanix_imu_bridge.py","graph_based_slam/test/test_applanix_navsatfix_bridge.py","graph_based_slam/test/test_applanix_tf_bridge.py","graph_based_slam/test/test_attach_dynamic_image_masks.py","graph_based_slam/test/test_autoware_dogfood_script.py","graph_based_slam/test/test_autoware_map_preflight.py","graph_based_slam/test/test_autoware_map_run_diagnosis.py","graph_based_slam/test/test_autoware_map_tools.py","graph_based_slam/test/test_autoware_quickstart_script.py","graph_based_slam/test/test_autoware_viewer_scripts.py","graph_based_slam/test/test_backend_core.cpp","graph_based_slam/test/test_benchmark_report_modules.py","graph_based_slam/test/test_benchmark_reporting_tools.py","graph_based_slam/test/test_bev_mutual_visibility.cpp","graph_based_slam/test/test_bim_export.py","graph_based_slam/test/test_bim_regression_gate.py","graph_based_slam/test/test_bounded_filesystem_exhaustion.py","graph_based_slam/test/test_candidate_aggregator.cpp","graph_based_slam/test/test_classic_path_report.py","graph_based_slam/test/test_colored_map_appearance.py","graph_based_slam/test/test_colored_map_pipeline.py","graph_based_slam/test/test_colored_map_quality_gate.py","graph_based_slam/test/test_colorize_from_bag.py","graph_based_slam/test/test_compare_checkpoint_trajectory_errors.py","graph_based_slam/test/test_compare_fast_livo2.py","graph_based_slam/test/test_compare_rosbag_semantic_inputs.py","graph_based_slam/test/test_competitive_candidate_provenance.py","graph_based_slam/test/test_competitive_slam_profile.py","graph_based_slam/test/test_compose_competitive_result.py","graph_based_slam/test/test_convert_ply_xyz_to_pcd.py","graph_based_slam/test/test_cross_repo_slam_benchmark.py","graph_based_slam/test/test_default_ci_checks_script.py","graph_based_slam/test/test_degeneracy_aware_solve.cpp","graph_based_slam/test/test_degeneracy_diagnostics_csv.cpp","graph_based_slam/test/test_degeneracy_report_summary.cpp","graph_based_slam/test/test_densify_corrected_trajectory.py","graph_based_slam/test/test_docker_demo_script.py","graph_based_slam/test/test_docs_entrypoints.py","graph_based_slam/test/test_download_verified_file.py","graph_based_slam/test/test_dynamic_object_filter.cpp","graph_based_slam/test/test_dynamic_object_filter_report.py"],"storefront":"/r/rsasaki0109","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/rsasaki0109/lidar_slam_ros2/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}