10 Commits

Author SHA1 Message Date
02d429282e feat: add --show-events overlay with raw log intensity
Visualize raw temporal brightness change (threshold=0, log domain)
as green(+)/red(-) gradient overlay proportional to |change|.
Supports video output and live display modes.
Enables EventProcessor threshold=0 for raw mode without clipping.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-08 11:47:19 +08:00
1369edaad7 feat: enable BatchNorm2d in CNNEncoder and add AMP support
- Uncomment BatchNorm2d in CNNEncoder (activated when cfg.use_bn=True)
- Add torch.amp.GradScaler + autocast for mixed precision training
- Add --amp/--no-amp CLI argument (default: enabled)

Generated by Mistral Vibe. deepseek-v4-flash
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-08 00:41:34 +08:00
b5abbc239d feat: activate CNN encoder, enable head near-zero init, disable NormalizeVelocity
- Activate CNNEncoder forward (replace zero placeholder with actual inference)
- Enable near-zero weight init for head final layer (weight*=0.01, bias=0)
- Disable NormalizeVelocity transform to train on raw velocity scale
- (BatchNorm remains commented out)

Generated by deepseek-v4-flash.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-06 14:04:40 +08:00
e7e773a48f fix: evaluate each scene independently to avoid plot mixing
Multi-scene evaluation previously concatenated all scenes into one
continuous trace, causing scene boundary jumps to appear as glitches
in plots. Now evaluates each scene separately and inserts NaN
separators between scenes when concatenating for plotting.

Generated by Mistral Vibe (deepseek-v4-flash).
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-05 16:47:42 +08:00
cb9936542e feat: replace non-overlapping windows with sliding-window sequence sampling
- Remove sample-level shuffle before transforms (broke SimulateEvents)
- Add _sliding_window_fn: yields overlapping sequences with configurable stride
- Add sequence-level shuffle after grouping (preserves temporal coherence)
- Add sliding_window_stride to TrainConfig (stride=1 for full overlap)
- Update create_train/val_loader and train.py to pass stride
- AGENTS.md: document known issues (cross-shard boundary, SimulateEvents state)
- AGENTS.md: add cuda:7 device preference

Generated by Mistral Vibe (deepseek-v4-flash).
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-05 16:45:24 +08:00
ec143868d0 feat: add checkpoint resume and fix train_loss tracking
- Add --resume CLI arg to resume training from a checkpoint
- Restore model, optimizer, scheduler state; continue from saved epoch+1
- Preserve global_step and best_val_loss across resume
- Save run_id in checkpoints for TensorBoard log continuity
- Use logs/run_<timestamp>/ subdirectories to isolate experiment logs
- Fix: replace train_loss in checkpoint dict with global_step to avoid
  KeyError when loading; track global_step through train_one_epoch
- Fix: use global_step (not batch_idx) as TensorBoard x-axis for batch loss
- Fix: print average loss at end of each epoch

Generated by Mistral Vibe (ds-v4-flash).
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 22:55:31 +08:00
0a504d648e refactor: replace rotation vector with body up vector for tilt input
- Replace body_attitude() with body_up_vector(): rotate world-up [0,0,1]
  by corrected world→body quaternion to get body up vector (pitch/roll only,
  no yaw). Matches DiffPhysDrone's env.R[:, 2] approach.
- Update ComputeTilt transform to use body_up_vector_np
- Update visualize_dataset.py to display Euler angles and body up vector
- Update model.py comments and disable CNN (zero output)
- Sync AGENTS.md with new architecture description

Generated by Mistral Vibe (ds-v4-flash).
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 21:02:08 +08:00
8e1a98207e refactor: replace decompose_tilt with body_attitude, add quat_to_euler
- Add body_attitude() that applies R_odom_to_body calibration then
  converts directly to rotation vector (preserves yaw, unlike old
  decompose_tilt which stripped it)
- Add quat_to_euler() for visualization display
- Update ComputeTilt transform to use body_attitude_np (also fixes
  a bug where the old code omitted the static calibration)
- Update visualize_dataset.py to show Euler angles from body quaternion
  instead of yaw-stripped tilt rotation vector

This aligns with the DiffPhysDrone approach: let the model decide
whether to use yaw information, rather than removing it upfront.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 20:38:14 +08:00
e0184a6e14 fix: make start_ros_container.sh executable
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-06-04 20:37:58 +08:00
9f0321eff8 initial commit 2026-05-29 18:49:01 +08:00