Telemetry recording and replay with pointing math refactor#411
Open
mrosseel wants to merge 10 commits into
Open
Telemetry recording and replay with pointing math refactor#411mrosseel wants to merge 10 commits into
mrosseel wants to merge 10 commits into
Conversation
Replays synthetic telemetry through real ImuDeadReckoning and integrator wrapper functions, measuring dead-reckoning error vs ground truth. Three tests: stationary drift, slew tracking, and solve correction reset. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Telemetry recorder captures solve and IMU events with timestamps - Menu entries for telemetry start/stop/replay - Integrator wired to record solves and IMU readings - UI list screen for telemetry sessions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Split integrator.py into three focused modules: - pointing.py: coordinate math (IMU dead-reckoning, plate-solve integration, roll/constellation/altaz finalization) - telemetry.py: TelemetryManager facade (recording, replay, command dispatch, image saving, replay event handling) - integrator.py: main loop and queue plumbing only Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 55 unit tests covering TelemetryRecorder, TelemetryPlayer, TelemetryManager, and pointing.py functions - Fix test_integrator_drift.py import from PiFinder.integrator to PiFinder.pointing after refactor Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…and analysis tools - Record raw gyro and accelerometer readings in IMU events - Record target changes (name, RA/Dec, Alt/Az) for time-to-target analysis - Fix replay: solve_time, solve_source, imu_pos, failed solves, mount_type header - Reset integrator state after replay ends - Move location to separate .location sidecar file for privacy - Reduce file size with stationary IMU decimation (10x) and float rounding - Add telemetry analysis scripts: session visualizer, drift analysis, truss flex analysis, IMU free-run drift visualization - Include sample recording (session_20260309.jsonl, location scrubbed) - 67 unit tests covering all new functionality Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Single conflict in python/PiFinder/integrator.py: telemetry already refactored the helper functions (update_plate_solve_and_imu, update_imu, set_cam2scope_alignment, get_roll_by_mount_type) into pointing.py. Kept telemetry's refactor; dropped the duplicate helpers that upstream modified in place. Upstream-only additions (get_alt_az, get_constellation, pointing_updated flag) and the imu_time tweak in update_imu are NOT incorporated here — apply them to pointing.py as a follow-up if wanted.
Upstream's astro_coords refactor (brickbots#420) moved RaDecRoll from pointing_model/astro_coords.py to types/coordinates.py and reworked the API: constructor now takes (ra, dec, roll, deg=...) and replaces set_from_deg/get_deg with set(...) and get(deg=True). Resolution: - integrator.py: kept HEAD; dropped duplicate helpers (now in pointing.py) - pointing.py: updated import path and ported all RaDecRoll calls to the new API (set_from_deg/get_deg → constructor / get(deg=True)) - integrator_classic.py: accepted upstream deletion (brickbots#421 dropped classic integrator); telemetry's only change was a trivial **kwargs signature
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.
Summary
telemetry.py,telemetry_list.pyUI, menu entries)integrator.py(slims integrator from ~600 lines to ~335)Test plan
nox -s unit_testspasses (includes newtest_telemetry.pyandtest_integrator_drift.py)nox -s lintpassesnox -s type_hintspasses🤖 Generated with Claude Code