Skip to content

go2 dds research#2307

Closed
leshy wants to merge 15 commits into
mainfrom
feat/go2_dds_data
Closed

go2 dds research#2307
leshy wants to merge 15 commits into
mainfrom
feat/go2_dds_data

Conversation

@leshy
Copy link
Copy Markdown
Member

@leshy leshy commented May 29, 2026

No description provided.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 29, 2026

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
1956 1 1955 27
View the top 1 failed test(s) by shortest run time
dimos.project.test_no_sections::test_no_section_markers
Stack Traces | 0.661s run time
def test_no_section_markers():
        """
        Fail if any file contains section-style comment markers.
    
        If a file is too complicated to be understood without sections, then the
        sections should be files. We don't need "subfiles".
        """
        violations = find_section_markers()
        if violations:
            report_lines = [
                f"Found {len(violations)} section marker(s). "
                "If a file is too complicated to be understood without sections, "
                'then the sections should be files. We don\'t need "subfiles".',
                "",
            ]
            for path, lineno, text in violations:
                report_lines.append(f"  {path}:{lineno}: {text.strip()}")
>           raise AssertionError("\n".join(report_lines))
E           AssertionError: Found 17 section marker(s). If a file is too complicated to be understood without sections, then the sections should be files. We don't need "subfiles".
E           
E             .../autoresearch/lio-1/eval3d.py:44: # --- current settings -------------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:66: # --- minimal CDR (matches go2-station/scripts/go2_cdr.py) -------------------
E             .../autoresearch/lio-1/eval3d.py:124: # --- pose helpers -----------------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:154: # --- trajectory loaders -----------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:188: # --- annotation helpers -----------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:240: # --- C2: floor flatness/level ----------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:261: # --- C3: transition ramp ----------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:292: # --- C1: AprilTag 3D spread -------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:368: # --- top-level --------------------------------------------------------------
E             .../autoresearch/lio-1/eval3d.py:381: # --- two separate path-length scores: horizontal jitter vs vertical travel ---
E             .../autoresearch/lio-1/eval3d.py:399: # --- combined score (lower = better; None terms drop to 0) ---
E             .../autoresearch/lio-1/evaluate.py:49: # --- Point-LIO substrate (fixed; built once by setup.sh) ---
E             .../autoresearch/lio-1/evaluate.py:55: # --- run limits ---
E             .../autoresearch/lio-1/algo.py:41: # ----------------------------------------------------------------------------
E             .../autoresearch/lio-1/algo.py:43: # ----------------------------------------------------------------------------
E             .../autoresearch/lio-1/visualize.py:46: # --- save downsampled raw trajectory (commit-friendly) ---
E             .../autoresearch/lio-1/visualize.py:57: # --- 2D rigid-align LIO onto GT: full-run (the metric) and first-FIT_WINDOW s ---

lineno     = 57
path       = '.../autoresearch/lio-1/visualize.py'
report_lines = ['Found 17 section marker(s). If a file is too complicated to be understood without sections, then the sections should...autoresearch/lio-1/eval3d.py:154: # --- trajectory loaders -----------------------------------------------------', ...]
text       = '    # --- 2D rigid-align LIO onto GT: full-run (the metric) and first-FIT_WINDOW s ---'
violations = [('.../autoresearch/lio-1/eval3d.py', 44, '# --- current settings -----------------------------...oresearch/lio-1/eval3d.py', 240, '# --- C2: floor flatness/level ----------------------------------------------'), ...]

dimos/project/test_no_sections.py:145: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

leshy and others added 4 commits May 29, 2026 21:39
…bin)

Point-LIO now consumes the Go2 .mcap (rt/utlidar/cloud + rt/utlidar/imu)
directly via a vendored Foxglove MCAP C++ reader (point_lio/include/mcap/,
zstd chunks), removing the separate PLNR1 .bin and its converter from the loop.

- mcap_source.{h,cpp}: read_mcap_as_plnr1() re-emits the mcap as the in-memory
  PLNR1 byte stream (CDR-decode IMU, lidar blob verbatim, ts = publish_time),
  fed to the unchanged record loop via fmemopen. C++ port of mcap_to_plnr1.py.
- laserMapping.cpp: --bin removed; --mcap only.
- CMakeLists/flake: vendor mcap headers, link zstd, MCAP_COMPRESSION_NO_LZ4.
- evaluate.py/algo.py: input is MCAP_PATH; algo runs the binary with --mcap.

Validated: the .bin is byte-identical to the mcap-derived stream (same sha256),
and the --mcap run yields a trajectory bit-identical to the old --bin run
(val_ate_xy 10.973953733898254, max abs diff 0.0 over 576204 poses).
}

// Check the footer magic bytes
if (std::memcmp(data + internal::FooterLength - sizeof(Magic), Magic, sizeof(Magic)) != 0) {
if (std::memcmp(data + internal::FooterLength - sizeof(Magic), Magic, sizeof(Magic)) != 0) {
const auto msg =
internal::StrCat("invalid magic bytes in Footer: 0x",
internal::MagicToHex(data + internal::FooterLength - sizeof(Magic)));
leshy and others added 10 commits May 29, 2026 23:08
…t autoresearch)

This is a hyperparameter-tuning problem, not open-ended research, so drive classical optimizers over the Point-LIO CONFIG instead of an LLM-edits-algo loop.

- algo.run(overrides, yaml_path=, out_path=): importable score-one-config entry point; per-trial paths let trials run concurrently.
- point_lio: add --out <path> so each trial writes its own trajectory (IO plumbing only, backward-compatible default). Enables parallel search.
- search.py: simulated annealing (scipy dual_annealing) over covariances (log-space) + filter sizes + thresholds; append-only log + global best_config.json.
- search_optuna.py: parallel TPE (Optuna), persisted study that resumes across runs, warm-started from baseline + best_config; shares the search space.
- add optuna dep; ignore search artifacts.

TPE reaches val_ate_xy ~3.96 vs the 10.97 baseline.
A config that makes Point-LIO die early still writes a short trajectory
stub, and evaluate() only scores the LIO/GT *time overlap* — so a stub
near the start aligns near-perfectly and yields a deceptively tiny ATE
(the spurious 0.42 "best"). algo.run now:
  - passes check=True so a nonzero exit (diverged/aborted binary) raises;
  - rejects runs whose GT time overlap is < 80% of the recording, keyed on
    overlap_s (path_len can't discriminate: every config integrates a huge
    path from ~4500 poses/s of micro-jitter, good or bad);
  - takes an optional timeout= override.

search_optuna gains --timeout (default 240s, vs the old 600s cap) to cull
pathological slow configs early; both rejection paths fall through to the
existing PENALTY so TPE learns to avoid those regions.

CMakeLists: add pcl-1.15 to the PCL header search hints.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@leshy
Copy link
Copy Markdown
Member Author

leshy commented May 31, 2026

superseded by #2314

@leshy
Copy link
Copy Markdown
Member Author

leshy commented May 31, 2026

#2314

@leshy leshy closed this May 31, 2026
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.

3 participants