1. 07 May, 2026 5 commits
    • Andrey Filippov's avatar
      Claude: FAIL_PENDING refactoring — migrate first loop from motion_sequence to target_sequence_multi · 1dfb402e
      Andrey Filippov authored
      - Add FAIL_PENDING=-1 sentinel constant to CuasMotionLMA
      - Add initFromMotionSequence(): clones motion entries into target_sequence_multi as sentinels
        (RSLT_FAIL=FAIL_PENDING, RSLT_CENTERED=CENTERED_NO, RSLT_QSCORE=initial RSLT_MSCORE)
      - Add syncMotionScoreToSentinels(): keeps sentinel QSCORE current after each getEffectiveStrengthMV
      - Decouple use_motion/select_new flags in filter5Targets from motion_sequence==null
      - Add motion==null paths in filter5Targets: prohibit setup and is-max ranking for FAIL_PENDING sentinels
      - Extend filter5Targets marking step to cover FAIL_PENDING sentinels (use_motion=true, motion==null)
      - Update extendMotionScan center-detection to accept FAIL_PENDING as valid center state
      - First loop in locateAndFreezeTargetsMulti: call initFromMotionSequence, syncMotionScoreToSentinels;
        pass null to filter5Targets; use applyFilter(target_sequence_multi); use getRemain(target_sequence_multi)
      - getRemain(target_sequence_multi): count FAIL_PENDING+CENTERED_NO in num_noncentered
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      1dfb402e
    • Andrey Filippov's avatar
      Claude: Fix filter5Targets select_new silently forced to false when motion_sequence=null · 70e96522
      Andrey Filippov authored
      Line 8734 was: select_new = (motion_sequence != null) ? select_new_in : false
      This caused pass 2 (filter5(null, tsm, false, true, ...)) to enter the
      !select_new path — finding best existing good tiles instead of untested
      non-centered tiles — so nothing was ever selected and the centered-mode
      loop was a no-op.
      
      Fix: decouple select_new from motion_sequence null-check; only use_motion
      is forced false when motion_sequence is null.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      70e96522
    • Andrey Filippov's avatar
      Tested code that Claude fixed, minor additional fix. Still not fully · c9316c55
      Andrey Filippov authored
      operational because of filter5Targets().
      c9316c55
    • Andrey Filippov's avatar
      Claude: Fix correlatePairs to use per-tile motion-tracking TpTask centers · 4b7711ef
      Andrey Filippov authored
      Add targets_mv / frame_center_mv / corr_offset_mv overloads to
      correlatePairs() and correlatePair().  When targets_mv is non-null,
      GpuQuad.setRectilinearMovingTasks() generates per-tile TpTask centers
      that follow the target at each frame (cx0 + vx*offset_scale), so the
      GPU correlates tiles centered on the moving object and the result is the
      residual velocity rather than the full VX displacement.
      
      Callers that don't need this pass through the old uniform-grid overload
      unchanged.  Also reverts the wrong "fixed-destination / shifted-read"
      masking edit from the previous session; the masking was already correct
      (mask tracks the target per frame) before that edit.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      4b7711ef
    • Andrey Filippov's avatar
      Claude: refineMotionVectors() — improved debug images · a57f2dfc
      Andrey Filippov authored
      - Masked frames: replace single-frame display with full fmin..fmax stack
        (scene_titles used as slice labels; scroll to watch target stay in place)
      - Source frame display removed (not needed alongside masked stack)
      - Single-tile corr2d block removed; replaced by full CORR2D multi-slice image
        after the nseq loop — one slice per keyframe, same tiled layout as *CORR2D.tiff,
        slice-labeled from scene_titles, uses corr_border_contrast from CLTParameters
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      a57f2dfc
  2. 06 May, 2026 3 commits
  3. 05 May, 2026 1 commit
  4. 04 May, 2026 3 commits
  5. 03 May, 2026 1 commit
  6. 01 May, 2026 3 commits
  7. 30 Apr, 2026 4 commits
  8. 28 Apr, 2026 1 commit
  9. 26 Apr, 2026 1 commit
  10. 25 Apr, 2026 5 commits
  11. 23 Apr, 2026 1 commit
  12. 19 Apr, 2026 1 commit
  13. 17 Apr, 2026 3 commits
    • Andrey Filippov's avatar
      Remove attic/CLAUDE/bin scripts from main repo (moved to attic/codex-claude) · b3b6fdf5
      Andrey Filippov authored
      These files belong in the private codex-claude repo, not in imagej-elphel.
      Reverts the file additions from 6821f865; the scripts are preserved on disk
      in attic/CLAUDE/bin/ and committed to the codex-claude private repo.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      b3b6fdf5
    • Andrey Filippov's avatar
      Add attic/CLAUDE/bin scripts and Gemini integration · 6821f865
      Andrey Filippov authored
      - ask_gemini.sh: non-interactive Gemini CLI wrapper (-f for context
        files, -m flash/pro model shorthand, auto @-reference for PNG/PDF)
      - dual-opinion.sh: extended with -g/-G flags for optional Gemini third
        agent; produces 4-section "Triple Opinion Synthesis" when enabled
      - ask_claude.sh, claude_daemon.sh, dual-opinion.sh, export scripts,
        backfill_center_ims.py: force-tracked (attic/ is gitignored globally,
        git add -f used to persist these helper scripts in the repo)
      - gemini.md: Gemini team integration instructions
      
      Gemini CLI setup: npm install -g @google/gemini-cli, GEMINI_API_KEY in
      ~/.bashrc. Default model gemini-2.5-flash; Pro requires billing enabled
      on the Google Cloud project backing the API key.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      6821f865
    • Andrey Filippov's avatar
      UAS projection fixes: center LLA persistence, ATR sign, logging · 1cece288
      Andrey Filippov authored
      - Cuas.createCenterClt(): average LLA from sequence scenes and save to
        center IMS XML file (did_ins_2 only, no EventLogger dependency)
      - QuadCLTCPU.restoreCenterClt(): load averaged LLA from center IMS file
        so addUasData() has a valid camera reference position
      - CuasRanging.addUasData(): log camera ATR, LLA, uas_home_alt, ned_corr
        before per-sequence loop; add cam_az/cam_tilt/cam_roll columns to TSV
      - UasLogReader: log ATR and LLA values when set; add getCameraLLA(),
        getUasHomeAlt(), getNedCorr() accessors
      - TwoQuadCLT: add comment explaining deferred setCameraLLA() design
      - CuasMotion: log UAS tile count and px/py/range per sequence
      
      Root cause found: camera_atr[0] (azimuth) in .list file is the
      ErsCorrection Y-frame-rotation angle, not compass bearing — they have
      opposite signs. Rule: az_list = -(compass_bearing_rad). Confirmed by
      comparison with working Eagle Mountain 2025 data (+2.7595 for SSW camera).
      Calibrated Latvia value: 2.0396, 0.0702, 0.0.
      Co-Authored-By: 's avatarClaude Sonnet 4.6 <noreply@anthropic.com>
      1cece288
  14. 16 Apr, 2026 4 commits
  15. 13 Apr, 2026 1 commit
  16. 12 Apr, 2026 1 commit
  17. 10 Apr, 2026 1 commit
  18. 09 Apr, 2026 1 commit