feat: ignore boulder.json and update extrinsics visualizer

This commit is contained in:
2026-02-07 15:35:48 +00:00
parent a8d375191a
commit 0d3e9e67ad
7 changed files with 102 additions and 83 deletions
@@ -58,3 +58,9 @@
- **Documentation as Contract**: Updating the docs *after* implementation revealed that the "Unit Mismatch" section was outdated. Explicitly marking it as "Resolved" preserves the history while clarifying current behavior.
- **Benchmark Matrix Value**: Documenting the benchmark matrix makes it a first-class citizen in the workflow, encouraging users to empirically verify refinement improvements rather than trusting defaults.
- **Confidence Weights**: Explicitly documenting this feature highlights the importance of sensor uncertainty in the optimization process.
## Bug Fix: Variable-Length Residual Vectors
- Fixed a `ValueError` in `scipy.optimize.least_squares` caused by the residual vector changing length between iterations.
- The root cause was filtering for valid depth points *inside* the residual function. If a point projected outside the image or had invalid depth in one iteration but not another, the vector length would change, which `least_squares` does not support.
- Solution: Identify "active" points at the start of refinement (`T_initial`) and use this fixed set of points for all iterations.
- If a point becomes invalid during optimization (e.g., projects out of bounds), it is now assigned a large constant residual (10.0m) instead of being removed from the vector. This maintains a stable dimensionality while discouraging the optimizer from moving towards invalid regions.